mirror of https://github.com/xemu-project/xemu.git
M68K status register fixes.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2967 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
87ee166914
commit
0cf5c6771b
|
@ -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)
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
}
|
}
|
||||||
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)
|
||||||
{
|
{
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue