Commit 0cf5c6771b216793d1fe57d25864d842570f32f6

Authored by pbrook
1 parent 87ee1669

M68K status register fixes.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2967 c046a42c-6fe2-441c-8c8c-71466251a162
target-m68k/op.c
... ... @@ -338,10 +338,7 @@ OP(ext16s32)
338 338  
339 339 OP(flush_flags)
340 340 {
341   - int cc_op = PARAM1;
342   - if (cc_op == CC_OP_DYNAMIC)
343   - cc_op = env->cc_op;
344   - cpu_m68k_flush_flags(env, cc_op);
  341 + cpu_m68k_flush_flags(env, env->cc_op);
345 342 FORCE_RET();
346 343 }
347 344  
... ... @@ -480,7 +477,7 @@ OP(fp_result)
480 477  
481 478 OP(set_sr)
482 479 {
483   - env->sr = get_op(PARAM1);
  480 + env->sr = get_op(PARAM1) & 0xffff;
484 481 m68k_switch_sp(env);
485 482 FORCE_RET();
486 483 }
... ...
target-m68k/op_helper.c
... ... @@ -131,6 +131,8 @@ void do_interrupt(int is_hw)
131 131  
132 132 vector = env->exception_index << 2;
133 133  
  134 + sp = env->aregs[7];
  135 +
134 136 fmt |= 0x40000000;
135 137 fmt |= (sp & 3) << 28;
136 138 fmt |= vector << 16;
... ... @@ -143,8 +145,6 @@ void do_interrupt(int is_hw)
143 145 }
144 146 m68k_switch_sp(env);
145 147  
146   - sp = env->aregs[7];
147   -
148 148 /* ??? This could cause MMU faults. */
149 149 sp &= ~3;
150 150 sp -= 4;
... ...
target-m68k/translate.c
... ... @@ -345,7 +345,8 @@ static inline void gen_flush_flags(DisasContext *s)
345 345 {
346 346 if (s->cc_op == CC_OP_FLAGS)
347 347 return;
348   - gen_op_flush_flags(s->cc_op);
  348 + gen_flush_cc_op(s);
  349 + gen_op_flush_flags();
349 350 s->cc_op = CC_OP_FLAGS;
350 351 }
351 352  
... ...