X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=lib%2Ffast486%2Fextraops.c;h=7c6da5e9c064d11aa279052cf7ff42ca8480ee24;hp=8ac7fc2d6fb4a1127371d4809e6e5aa4686667cd;hb=dfd1c031d679b6425d6f7827989f66895f68412e;hpb=1525a235a2782ff962c24577f7adea40c23a85c6 diff --git a/lib/fast486/extraops.c b/lib/fast486/extraops.c index 8ac7fc2d6fb..7c6da5e9c06 100644 --- a/lib/fast486/extraops.c +++ b/lib/fast486/extraops.c @@ -45,7 +45,7 @@ Fast486ExtendedHandlers[FAST486_NUM_OPCODE_HANDLERS] = NULL, // TODO: OPCODE 0x03 NOT IMPLEMENTED NULL, // TODO: OPCODE 0x04 NOT IMPLEMENTED NULL, // TODO: OPCODE 0x05 NOT IMPLEMENTED - NULL, // TODO: OPCODE 0x06 NOT IMPLEMENTED + Fast486ExtOpcodeClts, NULL, // TODO: OPCODE 0x07 NOT IMPLEMENTED NULL, // TODO: OPCODE 0x08 NOT IMPLEMENTED NULL, // TODO: OPCODE 0x09 NOT IMPLEMENTED @@ -299,6 +299,23 @@ Fast486ExtendedHandlers[FAST486_NUM_OPCODE_HANDLERS] = /* PUBLIC FUNCTIONS ***********************************************************/ +FAST486_OPCODE_HANDLER(Fast486ExtOpcodeClts) +{ + NO_LOCK_PREFIX(); + + /* The current privilege level must be zero */ + if (Fast486GetCurrentPrivLevel(State) != 0) + { + Fast486Exception(State, FAST486_EXCEPTION_GP); + return FALSE; + } + + /* Clear the task switch bit */ + State->ControlRegisters[FAST486_REG_CR0] &= ~FAST486_CR0_TS; + + return TRUE; +} + FAST486_OPCODE_HANDLER(Fast486ExtOpcodeStoreControlReg) { BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size;