summaryrefslogtreecommitdiff
path: root/nuttx/arch/arm/include
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-11-20 00:39:29 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-11-20 00:39:29 +0000
commit5eae3bcf7b345513044bceaebede0969bab4946d (patch)
treeb827da1499744d503114c5f538007f93234903f9 /nuttx/arch/arm/include
parent631c85af1216657895832c12d41625f08911a928 (diff)
downloadpx4-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.h12
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)