From 31a97096ec568b4f0263dfe555d0d85b21ce03b2 Mon Sep 17 00:00:00 2001 From: SarahW Date: Sat, 4 Feb 2017 21:39:28 +0000 Subject: [PATCH] Trigger TS fault correctly on IRET with NT flag set when back link selector invalid. Fixes NTVDM issues with Windows 2000. --- src/x86seg.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/x86seg.c b/src/x86seg.c index 364f4dd..bedf39e 100644 --- a/src/x86seg.c +++ b/src/x86seg.c @@ -2011,20 +2011,16 @@ void pmodeiret(int is32) addr=seg&~7; if (seg&4) { - if (addr>=ldt.limit) - { - pclog("TS Bigger than LDT limit %04X %04X IRET\n",seg,gdt.limit); - x86gpf(NULL,seg&~3); - return; - } - addr+=ldt.base; + pclog("TS LDT %04X %04X IRET\n",seg,gdt.limit); + x86ts(NULL,seg&~3); + return; } else { if (addr>=gdt.limit) { pclog("TS Bigger than GDT limit %04X %04X IRET\n",seg,gdt.limit); - x86gpf(NULL,seg&~3); + x86ts(NULL,seg&~3); return; } addr+=gdt.base;