This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
The following commit(s) were added to refs/heads/master by this push: new f93964ad3c riscv: Dump trap val in exception handler f93964ad3c is described below commit f93964ad3c8eb9123b814160932c912cb92a61c7 Author: Huang Qi <huang...@xiaomi.com> AuthorDate: Tue Aug 30 03:39:53 2022 +0000 riscv: Dump trap val in exception handler Signed-off-by: Huang Qi <huang...@xiaomi.com> --- arch/risc-v/include/mode.h | 2 ++ arch/risc-v/src/common/riscv_exception.c | 12 +++--------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/arch/risc-v/include/mode.h b/arch/risc-v/include/mode.h index e4b3c40894..53b7014bb2 100644 --- a/arch/risc-v/include/mode.h +++ b/arch/risc-v/include/mode.h @@ -41,6 +41,7 @@ # define CSR_EPC sepc /* Exception program counter */ # define CSR_IE sie /* Interrupt enable register */ # define CSR_CAUSE scause /* Interrupt cause register */ +# define CSR_TVAL stval /* Trap value register */ /* In status register */ @@ -74,6 +75,7 @@ # define CSR_EPC mepc /* Exception program counter */ # define CSR_IE mie /* Interrupt enable register */ # define CSR_CAUSE mcause /* Interrupt cause register */ +# define CSR_TVAL mtval /* Trap value register */ /* In status register */ diff --git a/arch/risc-v/src/common/riscv_exception.c b/arch/risc-v/src/common/riscv_exception.c index 256625ddee..b26e9514f8 100644 --- a/arch/risc-v/src/common/riscv_exception.c +++ b/arch/risc-v/src/common/riscv_exception.c @@ -73,15 +73,9 @@ int riscv_exception(int mcause, void *regs, void *args) { uintptr_t cause = mcause & RISCV_IRQ_MASK; - if (mcause > RISCV_MAX_EXCEPTION) - { - _alert("EXCEPTION: Unknown. MCAUSE: %" PRIxREG "\n", cause); - } - else - { - _alert("EXCEPTION: %s. MCAUSE: %" PRIxREG "\n", - g_reasons_str[cause], cause); - } + _alert("EXCEPTION: %s. MCAUSE: %" PRIxREG ", MTVAL: %" PRIxREG "\n", + mcause > RISCV_MAX_EXCEPTION ? "Unknown" : g_reasons_str[cause], + cause, READ_CSR(CSR_TVAL)); _alert("PANIC!!! Exception = %" PRIxREG "\n", cause); up_irq_save();