From 924eb3bc27ae38901da618cb9d5c0ee82d651749 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Tue, 10 May 2016 21:26:27 -0700 Subject: Fix PC value pushed to stack for A and F line traps --- m68k_core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'm68k_core.c') diff --git a/m68k_core.c b/m68k_core.c index 799102e..812e00a 100644 --- a/m68k_core.c +++ b/m68k_core.c @@ -334,11 +334,12 @@ void translate_m68k_rtr(m68k_options *opts, m68kinst * inst) void translate_m68k_trap(m68k_options *opts, m68kinst *inst) { code_info *code = &opts->gen.code; - uint32_t vector; + uint32_t vector, pc = inst->address; switch (inst->op) { case M68K_TRAP: vector = inst->src.params.immed + VECTOR_TRAP_0; + pc += 2; break; case M68K_A_LINE_TRAP: vector = VECTOR_LINE_1010; @@ -348,7 +349,7 @@ void translate_m68k_trap(m68k_options *opts, m68kinst *inst) break; } ldi_native(opts, vector, opts->gen.scratch2); - ldi_native(opts, inst->address+2, opts->gen.scratch1); + ldi_native(opts, pc, opts->gen.scratch1); jmp(code, opts->trap); } -- cgit v1.2.3