Use the address of fsu_intr_fault, not the first two instructions in it as

the address to check if we are handling a trap for fuswintr or suswintr.

Sponsored by:	The FreeBSD Foundation
This commit is contained in:
Andrew Turner 2015-04-17 12:58:09 +00:00
parent 28ebe80cab
commit 9d77aa2a87

View File

@ -65,7 +65,7 @@ __FBSDID("$FreeBSD$");
#include <ddb/db_output.h>
#endif
extern uintptr_t fsu_intr_fault;
extern register_t fsu_intr_fault;
/* Called from exception.S */
void do_el1h_sync(struct trapframe *);
@ -154,7 +154,7 @@ data_abort(struct trapframe *frame, uint64_t esr, int lower)
* 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 == fsu_intr_fault)) {
if (__predict_false(pcb->pcb_onfault == (vm_offset_t)&fsu_intr_fault)) {
frame->tf_elr = pcb->pcb_onfault;
return;
}