]> xenbits.xensource.com Git - qemu-xen-4.4-testing.git/commitdiff
cris: Avoid spurios hw_abort on recursive bus faults
authorEdgar E. Iglesias <edgar.iglesias@gmail.com>
Thu, 16 Sep 2010 13:40:27 +0000 (15:40 +0200)
committerEdgar E. Iglesias <edgar.iglesias@gmail.com>
Thu, 16 Sep 2010 13:40:27 +0000 (15:40 +0200)
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
target-cris/helper.c

index 053ed4ab2aa735f98ceef0d58da9caa9bd9076fb..83b25c14da9ef10c03d11b7f39bc47e2a71e82ae 100644 (file)
@@ -235,9 +235,15 @@ void do_interrupt(CPUState *env)
        /* Apply the CRIS CCS shift. Clears U if set.  */
        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);
 
+       /* 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",
                   __func__, env->pc, ex_vec,
                   env->pregs[PR_CCS],