diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2013-03-19 16:11:23 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2013-03-19 16:11:23 +0000 |
commit | a48a83271d371fd33201e3bba10967531ad32419 (patch) | |
tree | c58b80885bb66dbe6eda976a83caea2eae93e7fe /nuttx/arch/arm/src/armv7-m/up_memfault.c | |
parent | c79e92ceffd9665632b58a6fb884178a4f4c71a2 (diff) | |
download | px4-nuttx-a48a83271d371fd33201e3bba10967531ad32419.tar.gz px4-nuttx-a48a83271d371fd33201e3bba10967531ad32419.tar.bz2 px4-nuttx-a48a83271d371fd33201e3bba10967531ad32419.zip |
If the PRIMASK is used to disable interrupts, then additional logic is required to handle hard faults in the kernel build
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5761 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/arm/src/armv7-m/up_memfault.c')
-rw-r--r-- | nuttx/arch/arm/src/armv7-m/up_memfault.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/nuttx/arch/arm/src/armv7-m/up_memfault.c b/nuttx/arch/arm/src/armv7-m/up_memfault.c index a90f7cc74..c9f1b57b1 100644 --- a/nuttx/arch/arm/src/armv7-m/up_memfault.c +++ b/nuttx/arch/arm/src/armv7-m/up_memfault.c @@ -97,17 +97,33 @@ int up_memfault(int irq, FAR void *context) mfdbg(" IRQ: %d context: %p\n", irq, regs); lldbg(" CFAULTS: %08x MMFAR: %08x\n", getreg32(NVIC_CFAULTS), getreg32(NVIC_MEMMANAGE_ADDR)); + mfdbg(" BASEPRI: %08x PRIMASK: %08x IPSR: %08x CONTROL: %08x\n", + getbasepri(), getprimask(), getipsr(), getcontrol()); mfdbg(" R0: %08x %08x %08x %08x %08x %08x %08x %08x\n", regs[REG_R0], regs[REG_R1], regs[REG_R2], regs[REG_R3], regs[REG_R4], regs[REG_R5], regs[REG_R6], regs[REG_R7]); mfdbg(" R8: %08x %08x %08x %08x %08x %08x %08x %08x\n", regs[REG_R8], regs[REG_R9], regs[REG_R10], regs[REG_R11], regs[REG_R12], regs[REG_R13], regs[REG_R14], regs[REG_R15]); -#ifdef REG_EXC_RETURN - mfdbg(" PSR: %08x EXC_RETURN: %08x\n", - regs[REG_XPSR], regs[REG_EXC_RETURN]); + +#ifdef CONFIG_ARMV7M_USEBASEPRI +# ifdef REG_EXC_RETURN + mfdbg(" xPSR: %08x BASEPRI: %08x EXC_RETURN: %08x (saved)\n", + current_regs[REG_XPSR], current_regs[REG_BASEPRI], + current_regs[REG_EXC_RETURN]); +# else + mfdbg(" xPSR: %08x BASEPRI: %08x (saved)\n", + current_regs[REG_XPSR], current_regs[REG_BASEPRI]); +# endif #else - mfdbg(" PSR: %08x\n", regs[REG_XPSR]); +# ifdef REG_EXC_RETURN + mfdbg(" xPSR: %08x PRIMASK: %08x EXC_RETURN: %08x (saved)\n", + current_regs[REG_XPSR], current_regs[REG_PRIMASK], + current_regs[REG_EXC_RETURN]); +# else + mfdbg(" xPSR: %08x PRIMASK: %08x (saved)\n", + current_regs[REG_XPSR], current_regs[REG_PRIMASK]); +# endif #endif PANIC(OSERR_UNEXPECTEDISR); |