From d01965fd90b5727f2d61d56ad4f450ce4c00eeb8 Mon Sep 17 00:00:00 2001 From: patacongo Date: Fri, 18 Nov 2011 23:24:53 +0000 Subject: [PATCH] More PIC32 nested interrupt work-around git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4102 42af7a65-404d-4744-a932-0658087f49c3 --- arch/mips/src/pic32mx/pic32mx-decodeirq.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/arch/mips/src/pic32mx/pic32mx-decodeirq.c b/arch/mips/src/pic32mx/pic32mx-decodeirq.c index a7b55e06f6a..de7c9ab7ab1 100644 --- a/arch/mips/src/pic32mx/pic32mx-decodeirq.c +++ b/arch/mips/src/pic32mx/pic32mx-decodeirq.c @@ -85,7 +85,9 @@ uint32_t *pic32mx_decodeirq(uint32_t *regs) { +#ifdef CONFIG_PIC32MX_NESTED_INTERRUPTS uint32_t *savestate; +#endif uint32_t regval; int irq; @@ -100,7 +102,11 @@ uint32_t *pic32mx_decodeirq(uint32_t *regs) * the interrupted context that is being processed now. */ - savestate = (uint32_t*)current_regs; +#ifdef CONFIG_PIC32MX_NESTED_INTERRUPTS + savestate = (uint32_t*)current_regs; +#else + DEBUGASSERT(current_regs == NULL); +#endif current_regs = regs; /* Loop while there are pending interrupts with priority greater than zero */ @@ -145,11 +151,16 @@ uint32_t *pic32mx_decodeirq(uint32_t *regs) * are returning from a nested interrupt. */ +#ifdef CONFIG_PIC32MX_NESTED_INTERRUPTS current_regs = savestate; if (current_regs == NULL) { up_ledoff(LED_INIRQ); } +#else + current_regs = savestate; + up_ledoff(LED_INIRQ); +#endif return regs; }