mirror of
https://github.com/reactos/reactos.git
synced 2025-01-05 22:12:46 +00:00
[FAST486]
Implement PUSH/POP FS/GS. svn path=/branches/ntvdm/; revision=60711
This commit is contained in:
parent
ca7d21eff4
commit
a98544e517
2 changed files with 48 additions and 4 deletions
|
@ -198,16 +198,16 @@ Fast486ExtendedHandlers[FAST486_NUM_OPCODE_HANDLERS] =
|
||||||
Fast486ExtOpcodeConditionalSet,
|
Fast486ExtOpcodeConditionalSet,
|
||||||
Fast486ExtOpcodeConditionalSet,
|
Fast486ExtOpcodeConditionalSet,
|
||||||
Fast486ExtOpcodeConditionalSet,
|
Fast486ExtOpcodeConditionalSet,
|
||||||
NULL, // TODO: OPCODE 0xA0 NOT IMPLEMENTED
|
Fast486ExtOpcodePushFs,
|
||||||
NULL, // TODO: OPCODE 0xA1 NOT IMPLEMENTED
|
Fast486ExtOpcodePopFs,
|
||||||
NULL, // Invalid
|
NULL, // Invalid
|
||||||
NULL, // TODO: OPCODE 0xA3 NOT IMPLEMENTED
|
NULL, // TODO: OPCODE 0xA3 NOT IMPLEMENTED
|
||||||
NULL, // TODO: OPCODE 0xA4 NOT IMPLEMENTED
|
NULL, // TODO: OPCODE 0xA4 NOT IMPLEMENTED
|
||||||
NULL, // TODO: OPCODE 0xA5 NOT IMPLEMENTED
|
NULL, // TODO: OPCODE 0xA5 NOT IMPLEMENTED
|
||||||
NULL, // Invalid
|
NULL, // Invalid
|
||||||
NULL, // Invalid
|
NULL, // Invalid
|
||||||
NULL, // TODO: OPCODE 0xA8 NOT IMPLEMENTED
|
Fast486ExtOpcodePushGs,
|
||||||
NULL, // TODO: OPCODE 0xA9 NOT IMPLEMENTED
|
Fast486ExtOpcodePopGs,
|
||||||
NULL, // TODO: OPCODE 0xAA NOT IMPLEMENTED
|
NULL, // TODO: OPCODE 0xAA NOT IMPLEMENTED
|
||||||
NULL, // TODO: OPCODE 0xAB NOT IMPLEMENTED
|
NULL, // TODO: OPCODE 0xAB NOT IMPLEMENTED
|
||||||
NULL, // TODO: OPCODE 0xAC NOT IMPLEMENTED
|
NULL, // TODO: OPCODE 0xAC NOT IMPLEMENTED
|
||||||
|
@ -298,6 +298,46 @@ Fast486ExtendedHandlers[FAST486_NUM_OPCODE_HANDLERS] =
|
||||||
|
|
||||||
/* PUBLIC FUNCTIONS ***********************************************************/
|
/* PUBLIC FUNCTIONS ***********************************************************/
|
||||||
|
|
||||||
|
FAST486_OPCODE_HANDLER(Fast486ExtOpcodePushFs)
|
||||||
|
{
|
||||||
|
/* Call the internal API */
|
||||||
|
return Fast486StackPush(State, State->SegmentRegs[FAST486_REG_FS].Selector);
|
||||||
|
}
|
||||||
|
|
||||||
|
FAST486_OPCODE_HANDLER(Fast486ExtOpcodePopFs)
|
||||||
|
{
|
||||||
|
ULONG NewSelector;
|
||||||
|
|
||||||
|
if (!Fast486StackPop(State, &NewSelector))
|
||||||
|
{
|
||||||
|
/* Exception occurred */
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Call the internal API */
|
||||||
|
return Fast486LoadSegment(State, FAST486_REG_FS, LOWORD(NewSelector));
|
||||||
|
}
|
||||||
|
|
||||||
|
FAST486_OPCODE_HANDLER(Fast486ExtOpcodePushGs)
|
||||||
|
{
|
||||||
|
/* Call the internal API */
|
||||||
|
return Fast486StackPush(State, State->SegmentRegs[FAST486_REG_GS].Selector);
|
||||||
|
}
|
||||||
|
|
||||||
|
FAST486_OPCODE_HANDLER(Fast486ExtOpcodePopGs)
|
||||||
|
{
|
||||||
|
ULONG NewSelector;
|
||||||
|
|
||||||
|
if (!Fast486StackPop(State, &NewSelector))
|
||||||
|
{
|
||||||
|
/* Exception occurred */
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Call the internal API */
|
||||||
|
return Fast486LoadSegment(State, FAST486_REG_GS, LOWORD(NewSelector));
|
||||||
|
}
|
||||||
|
|
||||||
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeConditionalJmp)
|
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeConditionalJmp)
|
||||||
{
|
{
|
||||||
BOOLEAN Jump = FALSE;
|
BOOLEAN Jump = FALSE;
|
||||||
|
|
|
@ -23,6 +23,10 @@
|
||||||
#define _EXTRAOPS_H_
|
#define _EXTRAOPS_H_
|
||||||
|
|
||||||
/* DEFINES ********************************************************************/
|
/* DEFINES ********************************************************************/
|
||||||
|
FAST486_OPCODE_HANDLER(Fast486ExtOpcodePushFs);
|
||||||
|
FAST486_OPCODE_HANDLER(Fast486ExtOpcodePopFs);
|
||||||
|
FAST486_OPCODE_HANDLER(Fast486ExtOpcodePushGs);
|
||||||
|
FAST486_OPCODE_HANDLER(Fast486ExtOpcodePopGs);
|
||||||
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeConditionalJmp);
|
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeConditionalJmp);
|
||||||
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeConditionalSet);
|
FAST486_OPCODE_HANDLER(Fast486ExtOpcodeConditionalSet);
|
||||||
FAST486_OPCODE_HANDLER(Fast486OpcodeExtended);
|
FAST486_OPCODE_HANDLER(Fast486OpcodeExtended);
|
||||||
|
|
Loading…
Reference in a new issue