提交 0cf5c677 编写于 作者: P pbrook

M68K status register fixes.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2967 c046a42c-6fe2-441c-8c8c-71466251a162
上级 87ee1669
...@@ -338,10 +338,7 @@ OP(ext16s32) ...@@ -338,10 +338,7 @@ OP(ext16s32)
OP(flush_flags) OP(flush_flags)
{ {
int cc_op = PARAM1; cpu_m68k_flush_flags(env, env->cc_op);
if (cc_op == CC_OP_DYNAMIC)
cc_op = env->cc_op;
cpu_m68k_flush_flags(env, cc_op);
FORCE_RET(); FORCE_RET();
} }
...@@ -480,7 +477,7 @@ OP(fp_result) ...@@ -480,7 +477,7 @@ OP(fp_result)
OP(set_sr) OP(set_sr)
{ {
env->sr = get_op(PARAM1); env->sr = get_op(PARAM1) & 0xffff;
m68k_switch_sp(env); m68k_switch_sp(env);
FORCE_RET(); FORCE_RET();
} }
......
...@@ -131,6 +131,8 @@ void do_interrupt(int is_hw) ...@@ -131,6 +131,8 @@ void do_interrupt(int is_hw)
vector = env->exception_index << 2; vector = env->exception_index << 2;
sp = env->aregs[7];
fmt |= 0x40000000; fmt |= 0x40000000;
fmt |= (sp & 3) << 28; fmt |= (sp & 3) << 28;
fmt |= vector << 16; fmt |= vector << 16;
...@@ -143,8 +145,6 @@ void do_interrupt(int is_hw) ...@@ -143,8 +145,6 @@ void do_interrupt(int is_hw)
} }
m68k_switch_sp(env); m68k_switch_sp(env);
sp = env->aregs[7];
/* ??? This could cause MMU faults. */ /* ??? This could cause MMU faults. */
sp &= ~3; sp &= ~3;
sp -= 4; sp -= 4;
......
...@@ -345,7 +345,8 @@ static inline void gen_flush_flags(DisasContext *s) ...@@ -345,7 +345,8 @@ static inline void gen_flush_flags(DisasContext *s)
{ {
if (s->cc_op == CC_OP_FLAGS) if (s->cc_op == CC_OP_FLAGS)
return; return;
gen_op_flush_flags(s->cc_op); gen_flush_cc_op(s);
gen_op_flush_flags();
s->cc_op = CC_OP_FLAGS; s->cc_op = CC_OP_FLAGS;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册