aboutsummaryrefslogtreecommitdiff
path: root/target-m68k/op_helper.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2015-08-14 07:59:17 -0700
committerLaurent Vivier <laurent@vivier.eu>2016-10-25 20:54:47 +0200
commit99c514485b1d7922c4ca1ed767fd45525de4701f (patch)
tree0c7c7b24892bd625a4a883b859f953957001fd8e /target-m68k/op_helper.c
parent8e394ccabdb1e439aab092de6b9d2f26432e962f (diff)
target-m68k: Some fixes to SR and flags management
Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Diffstat (limited to 'target-m68k/op_helper.c')
-rw-r--r--target-m68k/op_helper.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/target-m68k/op_helper.c b/target-m68k/op_helper.c
index e41ae46498..af361776a6 100644
--- a/target-m68k/op_helper.c
+++ b/target-m68k/op_helper.c
@@ -63,9 +63,9 @@ static void do_rte(CPUM68KState *env)
fmt = cpu_ldl_kernel(env, sp);
env->pc = cpu_ldl_kernel(env, sp + 4);
sp |= (fmt >> 28) & 3;
- env->sr = fmt & 0xffff;
env->aregs[7] = sp + 8;
- m68k_switch_sp(env);
+
+ helper_set_sr(env, fmt);
}
static void do_interrupt_all(CPUM68KState *env, int is_hw)
@@ -112,6 +112,7 @@ static void do_interrupt_all(CPUM68KState *env, int is_hw)
fmt |= 0x40000000;
fmt |= vector << 16;
fmt |= env->sr;
+ fmt |= cpu_m68k_get_ccr(env);
env->sr |= SR_S;
if (is_hw) {