diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2010-11-20 00:39:29 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2010-11-20 00:39:29 +0000 |
commit | 5eae3bcf7b345513044bceaebede0969bab4946d (patch) | |
tree | b827da1499744d503114c5f538007f93234903f9 /nuttx/arch/arm/include | |
parent | 631c85af1216657895832c12d41625f08911a928 (diff) | |
download | px4-nuttx-5eae3bcf7b345513044bceaebede0969bab4946d.tar.gz px4-nuttx-5eae3bcf7b345513044bceaebede0969bab4946d.tar.bz2 px4-nuttx-5eae3bcf7b345513044bceaebede0969bab4946d.zip |
Fix Cortex-M3 nested interrupt hard fault
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3119 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/arm/include')
-rw-r--r-- | nuttx/arch/arm/include/cortexm3/irq.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/nuttx/arch/arm/include/cortexm3/irq.h b/nuttx/arch/arm/include/cortexm3/irq.h index de38585c3..3f731385b 100644 --- a/nuttx/arch/arm/include/cortexm3/irq.h +++ b/nuttx/arch/arm/include/cortexm3/irq.h @@ -244,7 +244,7 @@ static inline void setbasepri(uint32_t basepri) : "memory"); } -/* Get IPSR */ +/* Get/set IPSR */ static inline uint32_t getipsr(void) { @@ -258,6 +258,16 @@ static inline uint32_t getipsr(void) return ipsr; } +static inline void setipsr(uint32_t ipsr) +{ + __asm__ __volatile__ + ( + "\tmsr ipsr, %0\n" + : + : "r" (ipsr) + : "memory"); +} + /* SVC system call */ static inline void svcall(uint32_t cmd, uint32_t arg) |