summaryrefslogtreecommitdiff
path: root/nuttx/arch/arm/src/common/up_initialstate.c
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-05-13 16:19:05 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-05-13 16:19:05 +0000
commitd85a6b5e74dbbf82ef5ed1518d9c588356a11251 (patch)
treedea1afe1fb2cb6db6e1f6aaf63c72fe52a1a62f5 /nuttx/arch/arm/src/common/up_initialstate.c
parent27bee603a196dd9049de194777cc3be0d7514075 (diff)
downloadpx4-nuttx-d85a6b5e74dbbf82ef5ed1518d9c588356a11251.tar.gz
px4-nuttx-d85a6b5e74dbbf82ef5ed1518d9c588356a11251.tar.bz2
px4-nuttx-d85a6b5e74dbbf82ef5ed1518d9c588356a11251.zip
1st cut at lm3s6918 interrupt handling
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1776 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/arm/src/common/up_initialstate.c')
-rw-r--r--nuttx/arch/arm/src/common/up_initialstate.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/nuttx/arch/arm/src/common/up_initialstate.c b/nuttx/arch/arm/src/common/up_initialstate.c
index 2dd1695ba..a945b4c51 100644
--- a/nuttx/arch/arm/src/common/up_initialstate.c
+++ b/nuttx/arch/arm/src/common/up_initialstate.c
@@ -81,11 +81,18 @@ void up_initial_state(_TCB *tcb)
/* Initialize the initial exception register context structure */
memset(xcp, 0, sizeof(struct xcptcontext));
- xcp->regs[REG_SP] = (uint32)tcb->adj_stack_ptr;
- xcp->regs[REG_PC] = (uint32)tcb->start;
-#ifdef CONFIG_SUPPRESS_INTERRUPTS
- xcp->regs[REG_CPSR] = SVC_MODE | PSR_I_BIT | PSR_F_BIT;
+ xcp->regs[REG_SP] = (uint32)tcb->adj_stack_ptr;
+ xcp->regs[REG_PC] = (uint32)tcb->start;
+
+#ifdef __thumb2__
+# ifdef CONFIG_SUPPRESS_INTERRUPTS
+ xcp->regs[REG_PRIMASK] = 1;
+# endif
#else
- xcp->regs[REG_CPSR] = SVC_MODE | PSR_F_BIT;
+# ifdef CONFIG_SUPPRESS_INTERRUPTS
+ xcp->regs[REG_CPSR] = SVC_MODE | PSR_I_BIT | PSR_F_BIT;
+# else
+ xcp->regs[REG_CPSR] = SVC_MODE | PSR_F_BIT;
+# endif
#endif
}