mirror of https://github.com/xqemu/xqemu.git
cris: Avoid spurios hw_abort on recursive bus faults
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
This commit is contained in:
parent
41557447d3
commit
abdfd9500e
|
@ -235,9 +235,15 @@ void do_interrupt(CPUState *env)
|
||||||
/* Apply the CRIS CCS shift. Clears U if set. */
|
/* Apply the CRIS CCS shift. Clears U if set. */
|
||||||
cris_shift_ccs(env);
|
cris_shift_ccs(env);
|
||||||
|
|
||||||
/* Now that we are in kernel mode, load the handlers address. */
|
/* Now that we are in kernel mode, load the handlers address.
|
||||||
|
This load may not fault, real hw leaves that behaviour as
|
||||||
|
undefined. */
|
||||||
env->pc = ldl_code(env->pregs[PR_EBP] + ex_vec * 4);
|
env->pc = ldl_code(env->pregs[PR_EBP] + ex_vec * 4);
|
||||||
|
|
||||||
|
/* Clear the excption_index to avoid spurios hw_aborts for recursive
|
||||||
|
bus faults. */
|
||||||
|
env->exception_index = -1;
|
||||||
|
|
||||||
D_LOG("%s isr=%x vec=%x ccs=%x pid=%d erp=%x\n",
|
D_LOG("%s isr=%x vec=%x ccs=%x pid=%d erp=%x\n",
|
||||||
__func__, env->pc, ex_vec,
|
__func__, env->pc, ex_vec,
|
||||||
env->pregs[PR_CCS],
|
env->pregs[PR_CCS],
|
||||||
|
|
Loading…
Reference in New Issue