diff --git a/src/cpu/core_normal/prefix_none.h b/src/cpu/core_normal/prefix_none.h index 5061034a0..ef46c5f53 100644 --- a/src/cpu/core_normal/prefix_none.h +++ b/src/cpu/core_normal/prefix_none.h @@ -233,7 +233,9 @@ CASE_W(0x5f) /* POP DI */ reg_di=Pop_16();break; CASE_W(0x60) /* PUSHA */ - if (CPU_ArchitectureType CPU_ARCHTYPE_286 { if ((reg_flags & FLAG_VM) || (!cpu.pmode)) goto illegal_opcode; GetRMrw; @@ -291,52 +306,104 @@ } } break; +#endif CASE_B(0x64) /* SEG FS: */ - if (CPU_ArchitectureType= CPU_ARCHTYPE_386 + DO_PREFIX_SEG(fs);break; +#endif + CASE_B(0x65) /* SEG GS: */ +#if CPU_CORE == CPU_ARCHTYPE_8086 + JumpCond16_b(TFLG_NZ); break; +#endif +#if CPU_CORE == CPU_ARCHTYPE_286 + goto illegal_opcode; +#endif +#if CPU_CORE >= CPU_ARCHTYPE_386 + DO_PREFIX_SEG(gs);break; +#endif + CASE_B(0x66) /* Operand Size Prefix (386+) */ +#if CPU_CORE == CPU_ARCHTYPE_8086 + JumpCond16_b(TFLG_BE); break; +#endif +#if CPU_CORE == CPU_ARCHTYPE_286 + goto illegal_opcode; +#endif +#if CPU_CORE >= CPU_ARCHTYPE_386 core.opcode_index=(cpu.code.big^0x1u)*0x200u; goto restart_opcode; #endif -#if CPU_CORE >= CPU_ARCHTYPE_386 CASE_B(0x67) /* Address Size Prefix (386+) */ +#if CPU_CORE == CPU_ARCHTYPE_8086 + JumpCond16_b(TFLG_NBE); break; +#endif +#if CPU_CORE == CPU_ARCHTYPE_286 + goto illegal_opcode; +#endif +#if CPU_CORE >= CPU_ARCHTYPE_386 DO_PREFIX_ADDR(); #endif CASE_W(0x68) /* PUSH Iw */ - if (CPU_ArchitectureType