From 884be2bdb9e393df7df30aa4bc8ee709d73f722a Mon Sep 17 00:00:00 2001 From: zhangyuan21 Date: Mon, 10 Apr 2023 21:19:12 +0800 Subject: [PATCH] assert: Distinguish between assert and exception CURRENT_REGS may change during assert handling, so pass in the 'regs' parameter at the entry point of _assert. Signed-off-by: zhangyuan21 --- arch/arm/src/arm/arm_dataabort.c | 4 ++-- arch/arm/src/arm/arm_prefetchabort.c | 2 +- arch/arm/src/arm/arm_undefinedinsn.c | 2 +- arch/arm/src/armv6-m/arm_hardfault.c | 2 +- arch/arm/src/armv7-a/arm_dataabort.c | 4 ++-- arch/arm/src/armv7-a/arm_prefetchabort.c | 4 ++-- arch/arm/src/armv7-a/arm_undefinedinsn.c | 2 +- arch/arm/src/armv7-m/arm_busfault.c | 2 +- arch/arm/src/armv7-m/arm_hardfault.c | 2 +- arch/arm/src/armv7-m/arm_memfault.c | 2 +- arch/arm/src/armv7-m/arm_usagefault.c | 2 +- arch/arm/src/armv7-r/arm_dataabort.c | 2 +- arch/arm/src/armv7-r/arm_prefetchabort.c | 2 +- arch/arm/src/armv7-r/arm_undefinedinsn.c | 2 +- arch/arm/src/armv8-m/arm_busfault.c | 2 +- arch/arm/src/armv8-m/arm_hardfault.c | 2 +- arch/arm/src/armv8-m/arm_memfault.c | 2 +- arch/arm/src/armv8-m/arm_securefault.c | 2 +- arch/arm/src/armv8-m/arm_usagefault.c | 2 +- arch/arm/src/nrf52/nrf52_sdc.c | 4 ++-- arch/arm/src/nrf53/nrf53_sdc.c | 4 ++-- arch/arm/src/phy62xx/phy62xx_hardfault.c | 2 +- arch/arm64/src/common/arm64_fatal.c | 2 +- arch/ceva/src/xc5/xc5_hardfault.c | 2 +- arch/ceva/src/xm6/xm6_hardfault.c | 2 +- arch/mips/src/pic32mx/pic32mx_exception.c | 2 +- arch/mips/src/pic32mz/pic32mz_exception.c | 2 +- arch/risc-v/src/common/riscv_exception.c | 2 +- arch/xtensa/src/common/xtensa_assert.c | 4 ++-- arch/z16/src/z16f/z16f_sysexec.c | 2 +- include/assert.h | 4 +++- include/sys/syscall_lookup.h | 2 +- libs/libc/assert/lib_assert.c | 2 +- sched/misc/assert.c | 25 ++++++++++++++--------- syscall/syscall.csv | 2 +- 35 files changed, 57 insertions(+), 50 deletions(-) diff --git a/arch/arm/src/arm/arm_dataabort.c b/arch/arm/src/arm/arm_dataabort.c index 5ab1d0376b..cf704f78ee 100644 --- a/arch/arm/src/arm/arm_dataabort.c +++ b/arch/arm/src/arm/arm_dataabort.c @@ -145,7 +145,7 @@ segfault: #endif _alert("Data abort. PC: %08x FAR: %08x FSR: %08x\n", regs[REG_PC], far, fsr); - PANIC(); + PANIC_WITH_REGS("panic", regs); } #else /* CONFIG_PAGING */ @@ -161,7 +161,7 @@ void arm_dataabort(uint32_t *regs) /* Crash -- possibly showing diagnost debug information. */ _alert("Data abort. PC: %08" PRIx32 "\n", regs[REG_PC]); - PANIC(); + PANIC_WITH_REGS("panic", regs); } #endif /* CONFIG_PAGING */ diff --git a/arch/arm/src/arm/arm_prefetchabort.c b/arch/arm/src/arm/arm_prefetchabort.c index 314ac0cbd0..fbfa62dc59 100644 --- a/arch/arm/src/arm/arm_prefetchabort.c +++ b/arch/arm/src/arm/arm_prefetchabort.c @@ -125,6 +125,6 @@ void arm_prefetchabort(uint32_t *regs) #endif { _alert("Prefetch abort. PC: %08" PRIx32 "\n", regs[REG_PC]); - PANIC(); + PANIC_WITH_REGS("panic", regs); } } diff --git a/arch/arm/src/arm/arm_undefinedinsn.c b/arch/arm/src/arm/arm_undefinedinsn.c index 2ef7eacbcb..45a3004fb7 100644 --- a/arch/arm/src/arm/arm_undefinedinsn.c +++ b/arch/arm/src/arm/arm_undefinedinsn.c @@ -44,5 +44,5 @@ void arm_undefinedinsn(uint32_t *regs) { _alert("Undefined instruction at 0x%" PRIx32 "\n", regs[REG_PC]); CURRENT_REGS = regs; - PANIC(); + PANIC_WITH_REGS("panic", regs); } diff --git a/arch/arm/src/armv6-m/arm_hardfault.c b/arch/arm/src/armv6-m/arm_hardfault.c index 5ddc43f2c0..4dea1b87b1 100644 --- a/arch/arm/src/armv6-m/arm_hardfault.c +++ b/arch/arm/src/armv6-m/arm_hardfault.c @@ -120,6 +120,6 @@ int arm_hardfault(int irq, void *context, void *arg) up_irq_save(); hfalert("PANIC!!! Hard fault\n"); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; /* Won't get here */ } diff --git a/arch/arm/src/armv7-a/arm_dataabort.c b/arch/arm/src/armv7-a/arm_dataabort.c index 584b5286a5..2b9aa45ce1 100644 --- a/arch/arm/src/armv7-a/arm_dataabort.c +++ b/arch/arm/src/armv7-a/arm_dataabort.c @@ -140,7 +140,7 @@ uint32_t *arm_dataabort(uint32_t *regs, uint32_t dfar, uint32_t dfsr) segfault: _alert("Data abort. PC: %08x DFAR: %08x DFSR: %08x\n", regs[REG_PC], dfar, dfsr); - PANIC(); + PANIC_WITH_REGS("panic", regs); return regs; /* To keep the compiler happy */ } @@ -158,7 +158,7 @@ uint32_t *arm_dataabort(uint32_t *regs, uint32_t dfar, uint32_t dfsr) _alert("Data abort. PC: %08x DFAR: %08x DFSR: %08x\n", regs[REG_PC], dfar, dfsr); - PANIC(); + PANIC_WITH_REGS("panic", regs); return regs; /* To keep the compiler happy */ } diff --git a/arch/arm/src/armv7-a/arm_prefetchabort.c b/arch/arm/src/armv7-a/arm_prefetchabort.c index adb9c88ece..734b703b85 100644 --- a/arch/arm/src/armv7-a/arm_prefetchabort.c +++ b/arch/arm/src/armv7-a/arm_prefetchabort.c @@ -111,7 +111,7 @@ uint32_t *arm_prefetchabort(uint32_t *regs, uint32_t ifar, uint32_t ifsr) { _alert("Prefetch abort. PC: %08x IFAR: %08x IFSR: %08x\n", regs[REG_PC], ifar, ifsr); - PANIC(); + PANIC_WITH_REGS("panic", regs); } return regs; @@ -131,7 +131,7 @@ uint32_t *arm_prefetchabort(uint32_t *regs, uint32_t ifar, uint32_t ifsr) _alert("Prefetch abort. PC: %08x IFAR: %08x IFSR: %08x\n", regs[REG_PC], ifar, ifsr); - PANIC(); + PANIC_WITH_REGS("panic", regs); return regs; /* To keep the compiler happy */ } diff --git a/arch/arm/src/armv7-a/arm_undefinedinsn.c b/arch/arm/src/armv7-a/arm_undefinedinsn.c index f5202b7a90..ddd927914c 100644 --- a/arch/arm/src/armv7-a/arm_undefinedinsn.c +++ b/arch/arm/src/armv7-a/arm_undefinedinsn.c @@ -44,6 +44,6 @@ uint32_t *arm_undefinedinsn(uint32_t *regs) { _alert("Undefined instruction at 0x%x\n", regs[REG_PC]); CURRENT_REGS = regs; - PANIC(); + PANIC_WITH_REGS("panic", regs); return regs; /* To keep the compiler happy */ } diff --git a/arch/arm/src/armv7-m/arm_busfault.c b/arch/arm/src/armv7-m/arm_busfault.c index 41f0b8d4aa..9fa43c4ea1 100644 --- a/arch/arm/src/armv7-m/arm_busfault.c +++ b/arch/arm/src/armv7-m/arm_busfault.c @@ -103,6 +103,6 @@ int arm_busfault(int irq, void *context, void *arg) } up_irq_save(); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; } diff --git a/arch/arm/src/armv7-m/arm_hardfault.c b/arch/arm/src/armv7-m/arm_hardfault.c index 7ea7ec4c12..d1c440370c 100644 --- a/arch/arm/src/armv7-m/arm_hardfault.c +++ b/arch/arm/src/armv7-m/arm_hardfault.c @@ -172,6 +172,6 @@ int arm_hardfault(int irq, void *context, void *arg) } up_irq_save(); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; } diff --git a/arch/arm/src/armv7-m/arm_memfault.c b/arch/arm/src/armv7-m/arm_memfault.c index 8b9a164f1a..8fdecd7f3e 100644 --- a/arch/arm/src/armv7-m/arm_memfault.c +++ b/arch/arm/src/armv7-m/arm_memfault.c @@ -99,6 +99,6 @@ int arm_memfault(int irq, void *context, void *arg) } up_irq_save(); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; /* Won't get here */ } diff --git a/arch/arm/src/armv7-m/arm_usagefault.c b/arch/arm/src/armv7-m/arm_usagefault.c index 00579faa47..ddb3998ec4 100644 --- a/arch/arm/src/armv7-m/arm_usagefault.c +++ b/arch/arm/src/armv7-m/arm_usagefault.c @@ -111,6 +111,6 @@ int arm_usagefault(int irq, void *context, void *arg) } up_irq_save(); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; } diff --git a/arch/arm/src/armv7-r/arm_dataabort.c b/arch/arm/src/armv7-r/arm_dataabort.c index 96d2316de8..558a1c0fa5 100644 --- a/arch/arm/src/armv7-r/arm_dataabort.c +++ b/arch/arm/src/armv7-r/arm_dataabort.c @@ -63,6 +63,6 @@ uint32_t *arm_dataabort(uint32_t *regs, uint32_t dfar, uint32_t dfsr) _alert("Data abort. PC: %08x DFAR: %08x DFSR: %08x\n", regs[REG_PC], dfar, dfsr); - PANIC(); + PANIC_WITH_REGS("panic", regs); return regs; /* To keep the compiler happy */ } diff --git a/arch/arm/src/armv7-r/arm_prefetchabort.c b/arch/arm/src/armv7-r/arm_prefetchabort.c index 72c68b0de9..ac030a6d17 100644 --- a/arch/arm/src/armv7-r/arm_prefetchabort.c +++ b/arch/arm/src/armv7-r/arm_prefetchabort.c @@ -59,6 +59,6 @@ uint32_t *arm_prefetchabort(uint32_t *regs, uint32_t ifar, uint32_t ifsr) _alert("Prefetch abort. PC: %08x IFAR: %08x IFSR: %08x\n", regs[REG_PC], ifar, ifsr); - PANIC(); + PANIC_WITH_REGS("panic", regs); return regs; /* To keep the compiler happy */ } diff --git a/arch/arm/src/armv7-r/arm_undefinedinsn.c b/arch/arm/src/armv7-r/arm_undefinedinsn.c index f6fd55e801..4bc9367c5d 100644 --- a/arch/arm/src/armv7-r/arm_undefinedinsn.c +++ b/arch/arm/src/armv7-r/arm_undefinedinsn.c @@ -44,6 +44,6 @@ uint32_t *arm_undefinedinsn(uint32_t *regs) { _alert("Undefined instruction at 0x%x\n", regs[REG_PC]); CURRENT_REGS = regs; - PANIC(); + PANIC_WITH_REGS("panic", regs); return regs; /* To keep the compiler happy */ } diff --git a/arch/arm/src/armv8-m/arm_busfault.c b/arch/arm/src/armv8-m/arm_busfault.c index 5feafdf43e..559cba5fb4 100644 --- a/arch/arm/src/armv8-m/arm_busfault.c +++ b/arch/arm/src/armv8-m/arm_busfault.c @@ -103,6 +103,6 @@ int arm_busfault(int irq, void *context, void *arg) } up_irq_save(); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; } diff --git a/arch/arm/src/armv8-m/arm_hardfault.c b/arch/arm/src/armv8-m/arm_hardfault.c index 0eec176999..44ac314f7b 100644 --- a/arch/arm/src/armv8-m/arm_hardfault.c +++ b/arch/arm/src/armv8-m/arm_hardfault.c @@ -182,6 +182,6 @@ int arm_hardfault(int irq, void *context, void *arg) } up_irq_save(); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; } diff --git a/arch/arm/src/armv8-m/arm_memfault.c b/arch/arm/src/armv8-m/arm_memfault.c index b6b52b1b19..506e70ed29 100644 --- a/arch/arm/src/armv8-m/arm_memfault.c +++ b/arch/arm/src/armv8-m/arm_memfault.c @@ -99,6 +99,6 @@ int arm_memfault(int irq, void *context, void *arg) } up_irq_save(); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; /* Won't get here */ } diff --git a/arch/arm/src/armv8-m/arm_securefault.c b/arch/arm/src/armv8-m/arm_securefault.c index 77775c83d0..76ece2d4d7 100644 --- a/arch/arm/src/armv8-m/arm_securefault.c +++ b/arch/arm/src/armv8-m/arm_securefault.c @@ -167,7 +167,7 @@ int arm_securefault(int irq, void *context, void *arg) #endif up_irq_save(); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; } diff --git a/arch/arm/src/armv8-m/arm_usagefault.c b/arch/arm/src/armv8-m/arm_usagefault.c index 3706d38db2..41b6808e33 100644 --- a/arch/arm/src/armv8-m/arm_usagefault.c +++ b/arch/arm/src/armv8-m/arm_usagefault.c @@ -111,6 +111,6 @@ int arm_usagefault(int irq, void *context, void *arg) } up_irq_save(); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; } diff --git a/arch/arm/src/nrf52/nrf52_sdc.c b/arch/arm/src/nrf52/nrf52_sdc.c index dfcf227b43..344669ac41 100644 --- a/arch/arm/src/nrf52/nrf52_sdc.c +++ b/arch/arm/src/nrf52/nrf52_sdc.c @@ -323,7 +323,7 @@ static int bt_hci_send(struct bt_driver_s *btdev, static void sdc_fault_handler(const char *file, const uint32_t line) { - _assert(file, line, "SoftDevice Controller Fault"); + __assert(file, line, "SoftDevice Controller Fault"); } /**************************************************************************** @@ -332,7 +332,7 @@ static void sdc_fault_handler(const char *file, const uint32_t line) static void mpsl_assert_handler(const char *const file, const uint32_t line) { - _assert(file, line, "MPSL assertion failed"); + __assert(file, line, "MPSL assertion failed"); } /**************************************************************************** diff --git a/arch/arm/src/nrf53/nrf53_sdc.c b/arch/arm/src/nrf53/nrf53_sdc.c index 21a3c00353..fc2c9417ad 100644 --- a/arch/arm/src/nrf53/nrf53_sdc.c +++ b/arch/arm/src/nrf53/nrf53_sdc.c @@ -323,7 +323,7 @@ static int bt_hci_send(struct bt_driver_s *btdev, static void sdc_fault_handler(const char *file, const uint32_t line) { - _assert(file, line, "SoftDevice Controller Fault"); + __assert(file, line, "SoftDevice Controller Fault"); } /**************************************************************************** @@ -332,7 +332,7 @@ static void sdc_fault_handler(const char *file, const uint32_t line) static void mpsl_assert_handler(const char *const file, const uint32_t line) { - _assert(file, line, "MPSL assertion failed"); + __assert(file, line, "MPSL assertion failed"); } /**************************************************************************** diff --git a/arch/arm/src/phy62xx/phy62xx_hardfault.c b/arch/arm/src/phy62xx/phy62xx_hardfault.c index c9cb8a0cc2..7189fe8b36 100644 --- a/arch/arm/src/phy62xx/phy62xx_hardfault.c +++ b/arch/arm/src/phy62xx/phy62xx_hardfault.c @@ -124,6 +124,6 @@ int arm_hardfault(int irq, void *context, void *arg) up_irq_save(); hfalert("PANIC!!! Hard fault\n"); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; /* Won't get here */ } diff --git a/arch/arm64/src/common/arm64_fatal.c b/arch/arm64/src/common/arm64_fatal.c index c941cfe278..74fcd386e6 100644 --- a/arch/arm64/src/common/arm64_fatal.c +++ b/arch/arm64/src/common/arm64_fatal.c @@ -372,5 +372,5 @@ void arm64_fatal_error(unsigned int reason, struct regs_context * reg) } } - PANIC(); + PANIC_WITH_REGS("panic", reg); } diff --git a/arch/ceva/src/xc5/xc5_hardfault.c b/arch/ceva/src/xc5/xc5_hardfault.c index 31218767a4..371cb88263 100644 --- a/arch/ceva/src/xc5/xc5_hardfault.c +++ b/arch/ceva/src/xc5/xc5_hardfault.c @@ -88,6 +88,6 @@ int ceva_hardfault(int irq, void *context, void *arg) hfdumpreg4(P_MAPAR, P_MAPSR, UOP_STS, UOP_PAR); hfdumpreg1(REG_DBG_GEN); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; } diff --git a/arch/ceva/src/xm6/xm6_hardfault.c b/arch/ceva/src/xm6/xm6_hardfault.c index f1b3e972b9..78fc72b587 100644 --- a/arch/ceva/src/xm6/xm6_hardfault.c +++ b/arch/ceva/src/xm6/xm6_hardfault.c @@ -106,6 +106,6 @@ int ceva_hardfault(int irq, void *context, void *arg) hfdumpreg4(MAPAR, MAPSR, DBG_GEN, DBG_GEN_2); hfdumpreg4(DBG_DUNMPD, HIST_OVERFLOW, DBG_DESC_ID, DBG_QMAN_ID); - PANIC(); + PANIC_WITH_REGS("panic", context); return OK; } diff --git a/arch/mips/src/pic32mx/pic32mx_exception.c b/arch/mips/src/pic32mx/pic32mx_exception.c index f44980acda..fecb327db7 100644 --- a/arch/mips/src/pic32mx/pic32mx_exception.c +++ b/arch/mips/src/pic32mx/pic32mx_exception.c @@ -164,6 +164,6 @@ uint32_t *pic32mx_exception(uint32_t *regs) */ CURRENT_REGS = regs; - PANIC(); + PANIC_WITH_REGS("panic", regs); return regs; /* Won't get here */ } diff --git a/arch/mips/src/pic32mz/pic32mz_exception.c b/arch/mips/src/pic32mz/pic32mz_exception.c index 9f40b5f357..0f42e88436 100644 --- a/arch/mips/src/pic32mz/pic32mz_exception.c +++ b/arch/mips/src/pic32mz/pic32mz_exception.c @@ -163,6 +163,6 @@ uint32_t *pic32mz_exception(uint32_t *regs) */ CURRENT_REGS = regs; - PANIC(); + PANIC_WITH_REGS("panic", regs); return regs; /* Won't get here */ } diff --git a/arch/risc-v/src/common/riscv_exception.c b/arch/risc-v/src/common/riscv_exception.c index e8c0326b6d..f560a60b0a 100644 --- a/arch/risc-v/src/common/riscv_exception.c +++ b/arch/risc-v/src/common/riscv_exception.c @@ -82,7 +82,7 @@ int riscv_exception(int mcause, void *regs, void *args) _alert("PANIC!!! Exception = %" PRIxREG "\n", cause); up_irq_save(); CURRENT_REGS = regs; - PANIC(); + PANIC_WITH_REGS("panic", regs); return 0; } diff --git a/arch/xtensa/src/common/xtensa_assert.c b/arch/xtensa/src/common/xtensa_assert.c index 6490dd4555..821981e7ba 100644 --- a/arch/xtensa/src/common/xtensa_assert.c +++ b/arch/xtensa/src/common/xtensa_assert.c @@ -81,7 +81,7 @@ void xtensa_panic(int xptcode, uint32_t *regs) _alert("Unhandled Exception %d\n", xptcode); #endif - PANIC(); /* Should not return */ + PANIC_WITH_REGS("panic", regs); /* Should not return */ for (; ; ); } @@ -184,6 +184,6 @@ void xtensa_user_panic(int exccause, uint32_t *regs) _alert("User Exception: EXCCAUSE=%04x\n", exccause); #endif - PANIC(); /* Should not return */ + PANIC_WITH_REGS("user panic", regs); /* Should not return */ for (; ; ); } diff --git a/arch/z16/src/z16f/z16f_sysexec.c b/arch/z16/src/z16f/z16f_sysexec.c index 296b427457..f98fc954ab 100644 --- a/arch/z16/src/z16f/z16f_sysexec.c +++ b/arch/z16/src/z16f/z16f_sysexec.c @@ -101,5 +101,5 @@ void z16f_sysexec(FAR chipreg_t *regs) z16f_reset(); } - PANIC(); + PANIC_WITH_REGS("panic", regs); } diff --git a/include/assert.h b/include/assert.h index 88bdec6380..96f13d0d1b 100644 --- a/include/assert.h +++ b/include/assert.h @@ -48,6 +48,7 @@ #endif #define PANIC() __assert(__FILE__, __LINE__, "panic") +#define PANIC_WITH_REGS(msg, regs) _assert(__FILE__, __LINE__, msg, regs) #ifdef CONFIG_DEBUG_ASSERTIONS_EXPRESSION # define ASSERT(f) \ @@ -152,7 +153,8 @@ extern "C" * ****************************************************************************/ -void _assert(FAR const char *filename, int linenum, FAR const char *msg); +void _assert(FAR const char *filename, int linenum, + FAR const char *msg, FAR void *regs); /**************************************************************************** * Name: __assert diff --git a/include/sys/syscall_lookup.h b/include/sys/syscall_lookup.h index d26ae4f061..949c629450 100644 --- a/include/sys/syscall_lookup.h +++ b/include/sys/syscall_lookup.h @@ -25,7 +25,7 @@ */ SYSCALL_LOOKUP1(_exit, 1) -SYSCALL_LOOKUP(_assert, 3) +SYSCALL_LOOKUP(_assert, 4) SYSCALL_LOOKUP(getpid, 0) SYSCALL_LOOKUP(gettid, 0) SYSCALL_LOOKUP(prctl, 2) diff --git a/libs/libc/assert/lib_assert.c b/libs/libc/assert/lib_assert.c index 5103c71586..557a933b6b 100644 --- a/libs/libc/assert/lib_assert.c +++ b/libs/libc/assert/lib_assert.c @@ -33,6 +33,6 @@ void __assert(FAR const char *filename, int linenum, FAR const char *msg) { - _assert(filename, linenum, msg); + _assert(filename, linenum, msg, NULL); abort(); } diff --git a/sched/misc/assert.c b/sched/misc/assert.c index 585f7c47fc..b321df7ad6 100644 --- a/sched/misc/assert.c +++ b/sched/misc/assert.c @@ -419,12 +419,25 @@ static void show_tasks(void) * Public Functions ****************************************************************************/ -void _assert(FAR const char *filename, int linenum, FAR const char *msg) +/**************************************************************************** + * Name: _assert + ****************************************************************************/ + +void _assert(FAR const char *filename, int linenum, + FAR const char *msg, FAR void *regs) { FAR struct tcb_s *rtcb = running_task(); struct utsname name; bool fatal = true; + /* try to save current context if regs is null */ + + if (regs == NULL) + { + up_saveusercontext(g_last_regs); + regs = g_last_regs; + } + /* Flush any buffered SYSLOG data (from prior to the assertion) */ syslog_flush(); @@ -471,15 +484,7 @@ void _assert(FAR const char *filename, int linenum, FAR const char *msg) /* Register dump */ - if (up_interrupt_context()) - { - up_dump_register(NULL); - } - else - { - up_saveusercontext(g_last_regs); - up_dump_register(g_last_regs); - } + up_dump_register(regs); #ifdef CONFIG_ARCH_STACKDUMP show_stacks(rtcb); diff --git a/syscall/syscall.csv b/syscall/syscall.csv index 6315060f20..c0f048f11b 100644 --- a/syscall/syscall.csv +++ b/syscall/syscall.csv @@ -1,4 +1,4 @@ -"_assert","assert.h","","void","FAR const char *","int","FAR const char *" +"_assert","assert.h","","void","FAR const char *","int","FAR const char *","FAR void *" "_exit","unistd.h","","noreturn","int" "accept4","sys/socket.h","defined(CONFIG_NET)","int","int","FAR struct sockaddr *","FAR socklen_t *","int" "adjtime","sys/time.h","defined(CONFIG_CLOCK_TIMEKEEPING)","int","FAR const struct timeval *","FAR struct timeval *"