Revision 0cf5c677
b/target-m68k/op.c | ||
---|---|---|
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 | 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 |
} |
b/target-m68k/op_helper.c | ||
---|---|---|
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 | 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; |
b/target-m68k/translate.c | ||
---|---|---|
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 |
|
Also available in: Unified diff