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:
parent
4a36365044
commit
31a97096ec
1 changed files with 4 additions and 8 deletions
12
src/x86seg.c
12
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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue