[FAST486]

Fix LTR.


svn path=/trunk/; revision=67623
This commit is contained in:
Aleksandar Andrejevic 2015-05-10 14:34:28 +00:00
parent 25427ebb72
commit 4b508e967a

View file

@ -1945,7 +1945,10 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeGroup0F00)
return;
}
if (GdtEntry.Signature != FAST486_TSS_SIGNATURE)
if (GdtEntry.Signature != FAST486_TSS_SIGNATURE
&& GdtEntry.Signature != FAST486_BUSY_TSS_SIGNATURE
&& GdtEntry.Signature != FAST486_TSS_16_SIGNATURE
&& GdtEntry.Signature != FAST486_BUSY_TSS_16_SIGNATURE)
{
/* This is not a TSS descriptor */
Fast486ExceptionWithErrorCode(State, FAST486_EXCEPTION_GP, Selector);
@ -1963,6 +1966,18 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeGroup0F00)
State->TaskReg.Limit |= 0x00000FFF;
}
if (GdtEntry.Signature != FAST486_BUSY_TSS_SIGNATURE
&& GdtEntry.Signature != FAST486_BUSY_TSS_16_SIGNATURE)
{
/* Set the busy bit of this TSS descriptor and write it back */
GdtEntry.Signature |= 2;
Fast486WriteLinearMemory(State,
State->Gdtr.Address + GET_SEGMENT_INDEX(Selector),
&GdtEntry,
sizeof(GdtEntry));
}
break;
}