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;