Fixed recompiled version of JMP far indirect. Fixes Red Hat 3.0.3.
This commit is contained in:
parent
56a3ab7020
commit
0116512d39
1 changed files with 4 additions and 4 deletions
|
|
@ -356,11 +356,11 @@ uint32_t ropFF_16(codeblock_t *block, ir_data_t *ir, uint8_t opcode, uint32_t fe
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
case 0x28: /*JMP far*/
|
case 0x28: /*JMP far*/
|
||||||
|
uop_MOVZX(ir, IREG_pc, src_reg);
|
||||||
uop_MEM_LOAD_REG_OFFSET(ir, IREG_temp1_W, ireg_seg_base(target_seg), IREG_eaaddr, 2);
|
uop_MEM_LOAD_REG_OFFSET(ir, IREG_temp1_W, ireg_seg_base(target_seg), IREG_eaaddr, 2);
|
||||||
uop_LOAD_FUNC_ARG_REG(ir, 0, IREG_temp1_W);
|
uop_LOAD_FUNC_ARG_REG(ir, 0, IREG_temp1_W);
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, cpu_state.oldpc);
|
uop_LOAD_FUNC_ARG_IMM(ir, 1, op_pc + 1);
|
||||||
uop_CALL_FUNC(ir, loadcsjmp);
|
uop_CALL_FUNC(ir, loadcsjmp);
|
||||||
uop_MOVZX(ir, IREG_pc, src_reg);
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
case 0x30: /*PUSH*/
|
case 0x30: /*PUSH*/
|
||||||
|
|
@ -463,11 +463,11 @@ uint32_t ropFF_32(codeblock_t *block, ir_data_t *ir, uint8_t opcode, uint32_t fe
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
case 0x28: /*JMP far*/
|
case 0x28: /*JMP far*/
|
||||||
|
uop_MOV(ir, IREG_pc, src_reg);
|
||||||
uop_MEM_LOAD_REG_OFFSET(ir, IREG_temp1_W, ireg_seg_base(target_seg), IREG_eaaddr, 4);
|
uop_MEM_LOAD_REG_OFFSET(ir, IREG_temp1_W, ireg_seg_base(target_seg), IREG_eaaddr, 4);
|
||||||
uop_LOAD_FUNC_ARG_REG(ir, 0, IREG_temp1_W);
|
uop_LOAD_FUNC_ARG_REG(ir, 0, IREG_temp1_W);
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, cpu_state.oldpc);
|
uop_LOAD_FUNC_ARG_IMM(ir, 1, op_pc + 1);
|
||||||
uop_CALL_FUNC(ir, loadcsjmp);
|
uop_CALL_FUNC(ir, loadcsjmp);
|
||||||
uop_MOV(ir, IREG_pc, src_reg);
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
case 0x30: /*PUSH*/
|
case 0x30: /*PUSH*/
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue