State->Idtr.Size = 0x3FF;
State->Idtr.Address = 0;
+#ifndef FAST486_NO_FPU
/* Initialize CR0 */
State->ControlRegisters[FAST486_REG_CR0] |= FAST486_CR0_ET;
+#endif
/* Restore the callbacks and TLB */
State->MemReadCallback = MemReadCallback;
FAST486_OPCODE_HANDLER(Fast486FpuOpcodeD8)
{
+ FPU_CHECK();
+
+#ifndef FAST486_NO_FPU
// TODO: NOT IMPLEMENTED
UNIMPLEMENTED;
- Fast486Exception(State, FAST486_EXCEPTION_UD);
+
return FALSE;
+#else
+ /* Do nothing */
+ return TRUE;
+#endif
}
FAST486_OPCODE_HANDLER(Fast486FpuOpcodeD9)
{
+ FPU_CHECK();
+
+#ifndef FAST486_NO_FPU
// TODO: NOT IMPLEMENTED
UNIMPLEMENTED;
- Fast486Exception(State, FAST486_EXCEPTION_UD);
+
return FALSE;
+#else
+ /* Do nothing */
+ return TRUE;
+#endif
}
FAST486_OPCODE_HANDLER(Fast486FpuOpcodeDA)
{
+ FPU_CHECK();
+
+#ifndef FAST486_NO_FPU
// TODO: NOT IMPLEMENTED
UNIMPLEMENTED;
- Fast486Exception(State, FAST486_EXCEPTION_UD);
+
return FALSE;
+#else
+ /* Do nothing */
+ return TRUE;
+#endif
}
FAST486_OPCODE_HANDLER(Fast486FpuOpcodeDB)
{
+ FPU_CHECK();
+
+#ifndef FAST486_NO_FPU
// TODO: NOT IMPLEMENTED
UNIMPLEMENTED;
- Fast486Exception(State, FAST486_EXCEPTION_UD);
+
return FALSE;
+#else
+ /* Do nothing */
+ return TRUE;
+#endif
}
FAST486_OPCODE_HANDLER(Fast486FpuOpcodeDC)
{
+ FPU_CHECK();
+
+#ifndef FAST486_NO_FPU
// TODO: NOT IMPLEMENTED
UNIMPLEMENTED;
- Fast486Exception(State, FAST486_EXCEPTION_UD);
+
return FALSE;
+#else
+ /* Do nothing */
+ return TRUE;
+#endif
}
FAST486_OPCODE_HANDLER(Fast486FpuOpcodeDD)
{
+ FPU_CHECK();
+
+#ifndef FAST486_NO_FPU
// TODO: NOT IMPLEMENTED
UNIMPLEMENTED;
- Fast486Exception(State, FAST486_EXCEPTION_UD);
+
return FALSE;
+#else
+ /* Do nothing */
+ return TRUE;
+#endif
}
FAST486_OPCODE_HANDLER(Fast486FpuOpcodeDE)
{
+ FPU_CHECK();
+
+#ifndef FAST486_NO_FPU
// TODO: NOT IMPLEMENTED
UNIMPLEMENTED;
- Fast486Exception(State, FAST486_EXCEPTION_UD);
+
return FALSE;
+#else
+ /* Do nothing */
+ return TRUE;
+#endif
}
FAST486_OPCODE_HANDLER(Fast486FpuOpcodeDF)
{
+ FPU_CHECK();
+
+#ifndef FAST486_NO_FPU
// TODO: NOT IMPLEMENTED
UNIMPLEMENTED;
- Fast486Exception(State, FAST486_EXCEPTION_UD);
+
return FALSE;
+#else
+ /* Do nothing */
+ return TRUE;
+#endif
}
/* EOF */
/* DEFINES ********************************************************************/
+#define FPU_CHECK() if (State->ControlRegisters[FAST486_REG_CR0] & FAST486_CR0_EM) \
+ { \
+ Fast486Exception(State, FAST486_EXCEPTION_NM); \
+ return FALSE; \
+ }
+#define FPU_ST(i) State->FpuRegisters[(State->FpuStatus.Top + (i)) % FAST486_NUM_FPU_REGS]
+
enum
{
FPU_SINGLE_PRECISION = 0,