comparison m68k_to_x86.c @ 516:7f54f1773e84

Properly handle jmp instructions in the debugger next command
author Mike Pavone <pavone@retrodev.com>
date Sun, 09 Feb 2014 00:42:43 -0800
parents b449af228c63
children c2716b502a81
comparison
equal deleted inserted replaced
515:1495179d6737 516:7f54f1773e84
1951 } else { 1951 } else {
1952 dst = mov_rdisp8r(dst, CONTEXT, reg_offset(&(inst->src)), SCRATCH1, SZ_D); 1952 dst = mov_rdisp8r(dst, CONTEXT, reg_offset(&(inst->src)), SCRATCH1, SZ_D);
1953 } 1953 }
1954 sec_reg = (inst->src.params.regs.sec >> 1) & 0x7; 1954 sec_reg = (inst->src.params.regs.sec >> 1) & 0x7;
1955 if (inst->src.params.regs.sec & 1) { 1955 if (inst->src.params.regs.sec & 1) {
1956 //32-bit index register
1956 if (inst->src.params.regs.sec & 0x10) { 1957 if (inst->src.params.regs.sec & 0x10) {
1957 if (opts->aregs[sec_reg] >= 0) { 1958 if (opts->aregs[sec_reg] >= 0) {
1958 dst = add_rr(dst, opts->aregs[sec_reg], SCRATCH1, SZ_D); 1959 dst = add_rr(dst, opts->aregs[sec_reg], SCRATCH1, SZ_D);
1959 } else { 1960 } else {
1960 dst = add_rdisp8r(dst, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t)*sec_reg, SCRATCH1, SZ_D); 1961 dst = add_rdisp8r(dst, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t)*sec_reg, SCRATCH1, SZ_D);
1965 } else { 1966 } else {
1966 dst = add_rdisp8r(dst, CONTEXT, offsetof(m68k_context, dregs) + sizeof(uint32_t)*sec_reg, SCRATCH1, SZ_D); 1967 dst = add_rdisp8r(dst, CONTEXT, offsetof(m68k_context, dregs) + sizeof(uint32_t)*sec_reg, SCRATCH1, SZ_D);
1967 } 1968 }
1968 } 1969 }
1969 } else { 1970 } else {
1971 //16-bit index register
1970 if (inst->src.params.regs.sec & 0x10) { 1972 if (inst->src.params.regs.sec & 0x10) {
1971 if (opts->aregs[sec_reg] >= 0) { 1973 if (opts->aregs[sec_reg] >= 0) {
1972 dst = movsx_rr(dst, opts->aregs[sec_reg], SCRATCH2, SZ_W, SZ_D); 1974 dst = movsx_rr(dst, opts->aregs[sec_reg], SCRATCH2, SZ_W, SZ_D);
1973 } else { 1975 } else {
1974 dst = movsx_rdisp8r(dst, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t)*sec_reg, SCRATCH2, SZ_W, SZ_D); 1976 dst = movsx_rdisp8r(dst, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t)*sec_reg, SCRATCH2, SZ_W, SZ_D);