diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2013-04-16 18:00:59 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2013-04-16 18:00:59 -0600 |
commit | 9255670a9d9fab07e941008aa9e9edbf5b460c0b (patch) | |
tree | f31c4ec2141db41f31b1de70af701d45b695e3a7 /nuttx/arch/arm/src/armv6-m/up_schedulesigaction.c | |
parent | 82b1ed85155de4cac47551adb2363cc36b8806d0 (diff) | |
download | px4-nuttx-9255670a9d9fab07e941008aa9e9edbf5b460c0b.tar.gz px4-nuttx-9255670a9d9fab07e941008aa9e9edbf5b460c0b.tar.bz2 px4-nuttx-9255670a9d9fab07e941008aa9e9edbf5b460c0b.zip |
Fix major misthink in Cortex-M0 port: The Cortex-M0 has no BASEPRI register. We have to revert to using the nasty PRIMASK register
Diffstat (limited to 'nuttx/arch/arm/src/armv6-m/up_schedulesigaction.c')
-rw-r--r-- | nuttx/arch/arm/src/armv6-m/up_schedulesigaction.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/nuttx/arch/arm/src/armv6-m/up_schedulesigaction.c b/nuttx/arch/arm/src/armv6-m/up_schedulesigaction.c index fa1232704..e41a1a33a 100644 --- a/nuttx/arch/arm/src/armv6-m/up_schedulesigaction.c +++ b/nuttx/arch/arm/src/armv6-m/up_schedulesigaction.c @@ -156,7 +156,7 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) tcb->xcp.sigdeliver = sigdeliver; tcb->xcp.saved_pc = current_regs[REG_PC]; - tcb->xcp.saved_basepri = current_regs[REG_BASEPRI]; + tcb->xcp.saved_primask = current_regs[REG_PRIMASK]; tcb->xcp.saved_xpsr = current_regs[REG_XPSR]; /* Then set up to vector to the trampoline with interrupts @@ -165,7 +165,7 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) */ current_regs[REG_PC] = (uint32_t)up_sigdeliver; - current_regs[REG_BASEPRI] = NVIC_SYSH_DISABLE_PRIORITY; + current_regs[REG_PRIMASK] = 1; current_regs[REG_XPSR] = ARMV6M_XPSR_T; #ifdef CONFIG_NUTTX_KERNEL current_regs[REG_XPSR] = EXC_RETURN_PRIVTHR; @@ -194,7 +194,7 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) tcb->xcp.sigdeliver = sigdeliver; tcb->xcp.saved_pc = tcb->xcp.regs[REG_PC]; - tcb->xcp.saved_basepri = tcb->xcp.regs[REG_BASEPRI]; + tcb->xcp.saved_primask = tcb->xcp.regs[REG_PRIMASK]; tcb->xcp.saved_xpsr = tcb->xcp.regs[REG_XPSR]; /* Then set up to vector to the trampoline with interrupts @@ -203,7 +203,7 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) */ tcb->xcp.regs[REG_PC] = (uint32_t)up_sigdeliver; - tcb->xcp.regs[REG_BASEPRI] = NVIC_SYSH_DISABLE_PRIORITY; + tcb->xcp.regs[REG_PRIMASK] = 1; tcb->xcp.regs[REG_XPSR] = ARMV6M_XPSR_T; } |