Changeset View
Changeset View
Standalone View
Standalone View
head/sys/arm64/arm64/trap.c
Show First 20 Lines • Show All 166 Lines • ▼ Show 20 Lines | |||||
#ifdef KDB | #ifdef KDB | ||||
if (kdb_active) { | if (kdb_active) { | ||||
kdb_reenter(); | kdb_reenter(); | ||||
return; | return; | ||||
} | } | ||||
#endif | #endif | ||||
pcb = td->td_pcb; | pcb = td->td_pcb; | ||||
/* | |||||
* Special case for fuswintr and suswintr. These can't sleep so | |||||
* handle them early on in the trap handler. | |||||
*/ | |||||
if (__predict_false(pcb->pcb_onfault == (vm_offset_t)&fsu_intr_fault)) { | |||||
frame->tf_elr = pcb->pcb_onfault; | |||||
return; | |||||
} | |||||
p = td->td_proc; | p = td->td_proc; | ||||
if (lower) | if (lower) | ||||
map = &p->p_vmspace->vm_map; | map = &p->p_vmspace->vm_map; | ||||
else { | else { | ||||
/* The top bit tells us which range to use */ | /* The top bit tells us which range to use */ | ||||
if (far >= VM_MAXUSER_ADDRESS) { | if (far >= VM_MAXUSER_ADDRESS) { | ||||
map = kernel_map; | map = kernel_map; | ||||
} else { | } else { | ||||
▲ Show 20 Lines • Show All 272 Lines • Show Last 20 Lines |