summaryrefslogtreecommitdiff
path: root/nuttx/arch/mips/src
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-10-29 02:29:13 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-10-29 02:29:13 +0000
commite876ab20bae53a5e217f00c5b0dfb35554e6ac4f (patch)
tree753d77710cf12624daec90d398d4672d1a0ac1d6 /nuttx/arch/mips/src
parent4d79d5b9bf070303f8646104a936414865e3b55f (diff)
downloadpx4-nuttx-e876ab20bae53a5e217f00c5b0dfb35554e6ac4f.tar.gz
px4-nuttx-e876ab20bae53a5e217f00c5b0dfb35554e6ac4f.tar.bz2
px4-nuttx-e876ab20bae53a5e217f00c5b0dfb35554e6ac4f.zip
Fix some MIPS software interrupt enabling issues
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4067 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/mips/src')
-rw-r--r--nuttx/arch/mips/src/mips32/up_irq.c2
-rw-r--r--nuttx/arch/mips/src/pic32mx/pic32mx-irq.c7
2 files changed, 6 insertions, 3 deletions
diff --git a/nuttx/arch/mips/src/mips32/up_irq.c b/nuttx/arch/mips/src/mips32/up_irq.c
index b29c9853f..80ab7f78a 100644
--- a/nuttx/arch/mips/src/mips32/up_irq.c
+++ b/nuttx/arch/mips/src/mips32/up_irq.c
@@ -83,7 +83,7 @@ irqstate_t irqsave(void)
status &= ~CP0_STATUS_IM_MASK; /* Clear all interrupt mask bits */
status |= CP0_STATUS_IM_SWINTS; /* Keep S/W interrupts enabled */
cp0_putstatus(status); /* Disable interrupts */
- return ret; /* Return status before interrtupts disabled */
+ return ret; /* Return status before interrupts disabled */
}
/****************************************************************************
diff --git a/nuttx/arch/mips/src/pic32mx/pic32mx-irq.c b/nuttx/arch/mips/src/pic32mx/pic32mx-irq.c
index 87e545853..1681673fa 100644
--- a/nuttx/arch/mips/src/pic32mx/pic32mx-irq.c
+++ b/nuttx/arch/mips/src/pic32mx/pic32mx-irq.c
@@ -136,16 +136,19 @@ void up_irqinitialize(void)
/* And finally, enable interrupts */
-#ifndef CONFIG_SUPPRESS_INTERRUPTS
-
/* Interrupts are enabled by setting the IE bit in the CP0 status register */
regval = 0;
asm volatile("ei %0" : "=r"(regval));
+#ifndef CONFIG_SUPPRESS_INTERRUPTS
/* Then enable all interrupt levels */
irqrestore(CP0_STATUS_IM_ALL);
+#else
+ /* Enable only software interrupts */
+
+ irqrestore(CP0_STATUS_IM_SWINTS);
#endif
}