Author: aandrejevic
Date: Sun May 10 14:34:28 2015
New Revision: 67623
URL:
http://svn.reactos.org/svn/reactos?rev=67623&view=rev
Log:
[FAST486]
Fix LTR.
Modified:
trunk/reactos/lib/fast486/opgroups.c
Modified: trunk/reactos/lib/fast486/opgroups.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/fast486/opgroups.c?rev…
==============================================================================
--- trunk/reactos/lib/fast486/opgroups.c [iso-8859-1] (original)
+++ trunk/reactos/lib/fast486/opgroups.c [iso-8859-1] Sun May 10 14:34:28 2015
@@ -1945,7 +1945,10 @@
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);
@@ -1961,6 +1964,18 @@
{
State->TaskReg.Limit <<= 12;
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;