mirror of
https://github.com/reactos/reactos.git
synced 2025-04-21 20:50:29 +00:00
[FAST486]
Whether a TSS is 16-bit or 32-bit depends solely on its signature. Its size is irrelevant. svn path=/trunk/; revision=69367
This commit is contained in:
parent
3d49a7a6d4
commit
441ccab2b4
2 changed files with 14 additions and 12 deletions
|
@ -328,7 +328,7 @@ Fast486InterruptInternal(PFAST486_STATE State,
|
||||||
if (!Fast486ReadLinearMemory(State,
|
if (!Fast486ReadLinearMemory(State,
|
||||||
State->TaskReg.Base,
|
State->TaskReg.Base,
|
||||||
&Tss,
|
&Tss,
|
||||||
State->TaskReg.Limit >= (sizeof(FAST486_TSS) - 1)
|
State->TaskReg.Modern
|
||||||
? sizeof(FAST486_TSS) : sizeof(FAST486_LEGACY_TSS),
|
? sizeof(FAST486_TSS) : sizeof(FAST486_LEGACY_TSS),
|
||||||
FALSE))
|
FALSE))
|
||||||
{
|
{
|
||||||
|
@ -347,7 +347,7 @@ Fast486InterruptInternal(PFAST486_STATE State,
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
if (State->TaskReg.Limit >= (sizeof(FAST486_TSS) - 1))
|
if (State->TaskReg.Modern)
|
||||||
{
|
{
|
||||||
NewSs = Tss.Ss0;
|
NewSs = Tss.Ss0;
|
||||||
NewEsp = Tss.Esp0;
|
NewEsp = Tss.Esp0;
|
||||||
|
@ -363,7 +363,7 @@ Fast486InterruptInternal(PFAST486_STATE State,
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
if (State->TaskReg.Limit >= (sizeof(FAST486_TSS) - 1))
|
if (State->TaskReg.Modern)
|
||||||
{
|
{
|
||||||
NewSs = Tss.Ss1;
|
NewSs = Tss.Ss1;
|
||||||
NewEsp = Tss.Esp1;
|
NewEsp = Tss.Esp1;
|
||||||
|
@ -379,7 +379,7 @@ Fast486InterruptInternal(PFAST486_STATE State,
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
if (State->TaskReg.Limit >= (sizeof(FAST486_TSS) - 1))
|
if (State->TaskReg.Modern)
|
||||||
{
|
{
|
||||||
NewSs = Tss.Ss2;
|
NewSs = Tss.Ss2;
|
||||||
NewEsp = Tss.Esp2;
|
NewEsp = Tss.Esp2;
|
||||||
|
@ -632,7 +632,7 @@ Fast486TaskSwitch(PFAST486_STATE State, FAST486_TASK_SWITCH_TYPE Type, USHORT Se
|
||||||
if (!Fast486ReadLinearMemory(State,
|
if (!Fast486ReadLinearMemory(State,
|
||||||
State->TaskReg.Base,
|
State->TaskReg.Base,
|
||||||
&OldTss,
|
&OldTss,
|
||||||
State->TaskReg.Limit >= (sizeof(FAST486_TSS) - 1)
|
State->TaskReg.Modern
|
||||||
? sizeof(FAST486_TSS) : sizeof(FAST486_LEGACY_TSS),
|
? sizeof(FAST486_TSS) : sizeof(FAST486_LEGACY_TSS),
|
||||||
FALSE))
|
FALSE))
|
||||||
{
|
{
|
||||||
|
@ -644,7 +644,7 @@ Fast486TaskSwitch(PFAST486_STATE State, FAST486_TASK_SWITCH_TYPE Type, USHORT Se
|
||||||
/* If this is a task return, use the linked previous selector */
|
/* If this is a task return, use the linked previous selector */
|
||||||
if (Type == FAST486_TASK_RETURN)
|
if (Type == FAST486_TASK_RETURN)
|
||||||
{
|
{
|
||||||
if (State->TaskReg.Limit >= (sizeof(FAST486_TSS) - 1)) Selector = LOWORD(OldTss.Link);
|
if (State->TaskReg.Modern) Selector = LOWORD(OldTss.Link);
|
||||||
else Selector = OldLegacyTss->Link;
|
else Selector = OldLegacyTss->Link;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -761,7 +761,7 @@ Fast486TaskSwitch(PFAST486_STATE State, FAST486_TASK_SWITCH_TYPE Type, USHORT Se
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Save the current task into the TSS */
|
/* Save the current task into the TSS */
|
||||||
if (State->TaskReg.Limit >= (sizeof(FAST486_TSS) - 1))
|
if (State->TaskReg.Modern)
|
||||||
{
|
{
|
||||||
OldTss.Cr3 = State->ControlRegisters[FAST486_REG_CR3];
|
OldTss.Cr3 = State->ControlRegisters[FAST486_REG_CR3];
|
||||||
OldTss.Eip = State->InstPtr.Long;
|
OldTss.Eip = State->InstPtr.Long;
|
||||||
|
@ -805,7 +805,7 @@ Fast486TaskSwitch(PFAST486_STATE State, FAST486_TASK_SWITCH_TYPE Type, USHORT Se
|
||||||
if (!Fast486WriteLinearMemory(State,
|
if (!Fast486WriteLinearMemory(State,
|
||||||
State->TaskReg.Base,
|
State->TaskReg.Base,
|
||||||
&OldTss,
|
&OldTss,
|
||||||
State->TaskReg.Limit >= (sizeof(FAST486_TSS) - 1)
|
State->TaskReg.Modern
|
||||||
? sizeof(FAST486_TSS) : sizeof(FAST486_LEGACY_TSS),
|
? sizeof(FAST486_TSS) : sizeof(FAST486_LEGACY_TSS),
|
||||||
FALSE))
|
FALSE))
|
||||||
{
|
{
|
||||||
|
@ -1059,7 +1059,7 @@ Fast486CallGate(PFAST486_STATE State,
|
||||||
if (!Fast486ReadLinearMemory(State,
|
if (!Fast486ReadLinearMemory(State,
|
||||||
State->TaskReg.Base,
|
State->TaskReg.Base,
|
||||||
&Tss,
|
&Tss,
|
||||||
State->TaskReg.Limit >= (sizeof(FAST486_TSS) - 1)
|
State->TaskReg.Modern
|
||||||
? sizeof(FAST486_TSS) : sizeof(FAST486_LEGACY_TSS),
|
? sizeof(FAST486_TSS) : sizeof(FAST486_LEGACY_TSS),
|
||||||
FALSE))
|
FALSE))
|
||||||
{
|
{
|
||||||
|
@ -1075,7 +1075,7 @@ Fast486CallGate(PFAST486_STATE State,
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
if (State->TaskReg.Limit >= (sizeof(FAST486_TSS) - 1))
|
if (State->TaskReg.Modern)
|
||||||
{
|
{
|
||||||
NewSs = Tss.Ss0;
|
NewSs = Tss.Ss0;
|
||||||
NewEsp = Tss.Esp0;
|
NewEsp = Tss.Esp0;
|
||||||
|
@ -1091,7 +1091,7 @@ Fast486CallGate(PFAST486_STATE State,
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
if (State->TaskReg.Limit >= (sizeof(FAST486_TSS) - 1))
|
if (State->TaskReg.Modern)
|
||||||
{
|
{
|
||||||
NewSs = Tss.Ss1;
|
NewSs = Tss.Ss1;
|
||||||
NewEsp = Tss.Esp1;
|
NewEsp = Tss.Esp1;
|
||||||
|
@ -1107,7 +1107,7 @@ Fast486CallGate(PFAST486_STATE State,
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
if (State->TaskReg.Limit >= (sizeof(FAST486_TSS) - 1))
|
if (State->TaskReg.Modern)
|
||||||
{
|
{
|
||||||
NewSs = Tss.Ss2;
|
NewSs = Tss.Ss2;
|
||||||
NewEsp = Tss.Esp2;
|
NewEsp = Tss.Esp2;
|
||||||
|
|
|
@ -1960,6 +1960,8 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeGroup0F00)
|
||||||
State->TaskReg.Selector = Selector;
|
State->TaskReg.Selector = Selector;
|
||||||
State->TaskReg.Base = GdtEntry.Base | (GdtEntry.BaseMid << 16) | (GdtEntry.BaseHigh << 24);
|
State->TaskReg.Base = GdtEntry.Base | (GdtEntry.BaseMid << 16) | (GdtEntry.BaseHigh << 24);
|
||||||
State->TaskReg.Limit = GdtEntry.Limit | (GdtEntry.LimitHigh << 16);
|
State->TaskReg.Limit = GdtEntry.Limit | (GdtEntry.LimitHigh << 16);
|
||||||
|
State->TaskReg.Modern = GdtEntry.Signature == FAST486_TSS_SIGNATURE
|
||||||
|
|| GdtEntry.Signature == FAST486_BUSY_TSS_SIGNATURE;
|
||||||
|
|
||||||
if (GdtEntry.Granularity)
|
if (GdtEntry.Granularity)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue