[FAST486]

Implement the CLTS instruction.


svn path=/branches/ntvdm/; revision=60752
This commit is contained in:
Aleksandar Andrejevic 2013-10-26 17:33:10 +00:00
parent 1525a235a2
commit dfd1c031d6
2 changed files with 19 additions and 1 deletions

View file

@ -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;

View file

@ -23,6 +23,7 @@
#define _EXTRAOPS_H_
/* DEFINES ********************************************************************/
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeClts);
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeStoreControlReg);
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeStoreDebugReg);
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeLoadControlReg);