summaryrefslogtreecommitdiff
path: root/m68k_to_x86.c
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2013-05-11 21:19:31 -0700
committerMike Pavone <pavone@retrodev.com>2013-05-11 21:19:31 -0700
commitbd37bedca78611c47b5ecbc7f8a9fbc78c39b910 (patch)
tree39bd119cc2e0798d6fb5813bdf3c77606402b974 /m68k_to_x86.c
parent6ab97fce20853a8b04f40ff747f3ef108fdaf59a (diff)
Don't update interrupt mask on non-interrupt exceptions
Diffstat (limited to 'm68k_to_x86.c')
-rw-r--r--m68k_to_x86.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/m68k_to_x86.c b/m68k_to_x86.c
index ba158ab..0bf5a6d 100644
--- a/m68k_to_x86.c
+++ b/m68k_to_x86.c
@@ -46,6 +46,7 @@ void do_sync();
void bcd_add();
void bcd_sub();
void m68k_start_context(uint8_t * addr, m68k_context * context);
+void debug_print_sr();
uint8_t * cycles(uint8_t * dst, uint32_t num)
{
@@ -2927,6 +2928,7 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts)
dst = mov_rdisp8r(dst, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t) * 8, opts->aregs[7], SZ_B);
dst = mov_rrdisp8(dst, SCRATCH1, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t) * 8, SZ_B);
}
+ //dst = call(dst, (uint8_t *)debug_print_sr);
if (inst->src.params.immed & 0x700) {
dst = call(dst, (uint8_t *)do_sync);
}
@@ -3224,6 +3226,7 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts)
}
if (inst->op == M68K_ORI_SR) {
dst = xor_irdisp8(dst, inst->src.params.immed >> 8, CONTEXT, offsetof(m68k_context, status), SZ_B);
+ //dst = call(dst, (uint8_t *)debug_print_sr);
if (inst->src.params.immed & 0x700) {
dst = call(dst, (uint8_t *)do_sync);
}
@@ -3284,6 +3287,7 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts)
dst = mov_rdisp8r(dst, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t) * 8, opts->aregs[7], SZ_D);
dst = mov_rrdisp8(dst, SCRATCH1, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t) * 8, SZ_D);
}
+ //dst = call(dst, (uint8_t *)debug_print_sr);
dst = call(dst, (uint8_t *)do_sync);
}
dst = cycles(dst, 12);
@@ -3472,6 +3476,7 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts)
}
if (inst->op == M68K_ORI_SR) {
dst = or_irdisp8(dst, inst->src.params.immed >> 8, CONTEXT, offsetof(m68k_context, status), SZ_B);
+ //dst = call(dst, (uint8_t *)debug_print_sr);
if (inst->src.params.immed & 0x700) {
dst = call(dst, (uint8_t *)do_sync);
}