From 91371fbcf6c75d004d883ebf079b80feef1fa230 Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Mon, 27 Jul 2020 16:29:21 +0000 Subject: [PATCH] Set si_trapno to the fault index from fsr. Reviewed by: kib Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D25772 --- sys/arm/arm/trap-v6.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/arm/arm/trap-v6.c b/sys/arm/arm/trap-v6.c index 84acf479bfe..7ade224f949 100644 --- a/sys/arm/arm/trap-v6.c +++ b/sys/arm/arm/trap-v6.c @@ -169,7 +169,8 @@ static const struct abort aborts[] = { }; static __inline void -call_trapsignal(struct thread *td, int sig, int code, vm_offset_t addr) +call_trapsignal(struct thread *td, int sig, int code, vm_offset_t addr, + int trapno) { ksiginfo_t ksi; @@ -185,6 +186,7 @@ call_trapsignal(struct thread *td, int sig, int code, vm_offset_t addr) ksi.ksi_signo = sig; ksi.ksi_code = code; ksi.ksi_addr = (void *)addr; + ksi.ksi_trapno = trapno; trapsignal(td, &ksi); } @@ -252,7 +254,7 @@ abort_debug(struct trapframe *tf, u_int fsr, u_int prefetch, bool usermode, struct thread *td; td = curthread; - call_trapsignal(td, SIGTRAP, TRAP_BRKPT, far); + call_trapsignal(td, SIGTRAP, TRAP_BRKPT, far, FAULT_DEBUG); userret(td, tf); } else { #ifdef KDB @@ -523,7 +525,7 @@ nogo: ksig.addr = far; do_trapsignal: - call_trapsignal(td, ksig.sig, ksig.code, ksig.addr); + call_trapsignal(td, ksig.sig, ksig.code, ksig.addr, idx); out: if (usermode) userret(td, tf);