Call into kdb on a data abort when it's enabled. This is needed to

correctly handle trying to access an invalid address in the debugger.

While here document that the breakpoint handler is supposed to fall
through to the following case.

Sponsored by:	ABT Systems Ltd
This commit is contained in:
Andrew Turner 2015-08-25 16:49:10 +00:00
parent 65780a4020
commit 8f7467734a

View File

@ -155,6 +155,13 @@ data_abort(struct trapframe *frame, uint64_t esr, int lower)
uint64_t far;
int error, sig, ucode;
#ifdef KDB
if (kdb_active) {
kdb_reenter();
return;
}
#endif
td = curthread;
pcb = td->td_pcb;
@ -221,6 +228,11 @@ data_abort(struct trapframe *frame, uint64_t esr, int lower)
frame->tf_elr = pcb->pcb_onfault;
return;
}
#ifdef KDB
if (debugger_on_panic || kdb_active)
if (kdb_trap(ESR_ELx_EXCEPTION(esr), 0, frame))
return;
#endif
panic("vm_fault failed: %lx", frame->tf_elr);
}
}
@ -293,6 +305,7 @@ do_el1h_sync(struct trapframe *frame)
break;
}
#endif
/* FALLTHROUGH */
case EXCP_WATCHPT_EL1:
case EXCP_SOFTSTP_EL1:
#ifdef KDB