OP(flush_flags)
{
- int cc_op = PARAM1;
- if (cc_op == CC_OP_DYNAMIC)
- cc_op = env->cc_op;
- cpu_m68k_flush_flags(env, cc_op);
+ cpu_m68k_flush_flags(env, env->cc_op);
FORCE_RET();
}
OP(set_sr)
{
- env->sr = get_op(PARAM1);
+ env->sr = get_op(PARAM1) & 0xffff;
m68k_switch_sp(env);
FORCE_RET();
}
vector = env->exception_index << 2;
+ sp = env->aregs[7];
+
fmt |= 0x40000000;
fmt |= (sp & 3) << 28;
fmt |= vector << 16;
}
m68k_switch_sp(env);
- sp = env->aregs[7];
-
/* ??? This could cause MMU faults. */
sp &= ~3;
sp -= 4;
{
if (s->cc_op == CC_OP_FLAGS)
return;
- gen_op_flush_flags(s->cc_op);
+ gen_flush_cc_op(s);
+ gen_op_flush_flags();
s->cc_op = CC_OP_FLAGS;
}