Changeset View
Changeset View
Standalone View
Standalone View
sys/arm/arm/trap-v6.c
Show First 20 Lines • Show All 556 Lines • ▼ Show 20 Lines | |||||
*/ | */ | ||||
static int | static int | ||||
abort_fatal(struct trapframe *tf, u_int idx, u_int fsr, u_int far, | abort_fatal(struct trapframe *tf, u_int idx, u_int fsr, u_int far, | ||||
u_int prefetch, struct thread *td, struct ksig *ksig) | u_int prefetch, struct thread *td, struct ksig *ksig) | ||||
{ | { | ||||
bool usermode; | bool usermode; | ||||
const char *mode; | const char *mode; | ||||
const char *rw_mode; | const char *rw_mode; | ||||
#ifdef KDB | |||||
bool handled; | |||||
#endif | |||||
usermode = TRAPF_USERMODE(tf); | usermode = TRAPF_USERMODE(tf); | ||||
#ifdef KDTRACE_HOOKS | #ifdef KDTRACE_HOOKS | ||||
if (!usermode) { | if (!usermode) { | ||||
if (dtrace_trap_func != NULL && (*dtrace_trap_func)(tf, far)) | if (dtrace_trap_func != NULL && (*dtrace_trap_func)(tf, far)) | ||||
return (0); | return (0); | ||||
} | } | ||||
#endif | #endif | ||||
Show All 31 Lines | #endif | ||||
else | else | ||||
printf("ssp=%08x, slr=%08x", | printf("ssp=%08x, slr=%08x", | ||||
tf->tf_svc_sp, tf->tf_svc_lr); | tf->tf_svc_sp, tf->tf_svc_lr); | ||||
printf(", pc =%08x\n\n", tf->tf_pc); | printf(", pc =%08x\n\n", tf->tf_pc); | ||||
#ifdef KDB | #ifdef KDB | ||||
if (debugger_on_trap) { | if (debugger_on_trap) { | ||||
kdb_why = KDB_WHY_TRAP; | kdb_why = KDB_WHY_TRAP; | ||||
kdb_trap(fsr, 0, tf); | handled = kdb_trap(fsr, 0, tf); | ||||
kdb_why = KDB_WHY_UNSET; | kdb_why = KDB_WHY_UNSET; | ||||
if (handled) | |||||
return (0); | |||||
} | } | ||||
#endif | #endif | ||||
panic("Fatal abort"); | panic("Fatal abort"); | ||||
/*NOTREACHED*/ | /*NOTREACHED*/ | ||||
} | } | ||||
/* | /* | ||||
* abort_align() handles the following data abort: | * abort_align() handles the following data abort: | ||||
▲ Show 20 Lines • Show All 52 Lines • Show Last 20 Lines |