Trigger TS fault correctly on IRET with NT flag set when back link selector invalid. Fixes NTVDM issues with Windows 2000.

This commit is contained in:
SarahW 2017-02-04 21:39:28 +00:00
commit 31a97096ec

View file

@ -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;