diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2009-05-13 14:29:22 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2009-05-13 14:29:22 +0000 |
commit | 27bee603a196dd9049de194777cc3be0d7514075 (patch) | |
tree | 0ae450bf5ef0895ccc80cc3732f05a284c59a3de /nuttx/arch/arm/src/common/up_doirq.c | |
parent | 11afe6bb048bff910f4345f8f344c5172a9f4ee8 (diff) | |
download | px4-nuttx-27bee603a196dd9049de194777cc3be0d7514075.tar.gz px4-nuttx-27bee603a196dd9049de194777cc3be0d7514075.tar.bz2 px4-nuttx-27bee603a196dd9049de194777cc3be0d7514075.zip |
lm3s6918 update
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1775 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/arm/src/common/up_doirq.c')
-rw-r--r-- | nuttx/arch/arm/src/common/up_doirq.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/nuttx/arch/arm/src/common/up_doirq.c b/nuttx/arch/arm/src/common/up_doirq.c index 293b9fdc4..b863ec0c5 100644 --- a/nuttx/arch/arm/src/common/up_doirq.c +++ b/nuttx/arch/arm/src/common/up_doirq.c @@ -1,7 +1,7 @@ /**************************************************************************** * arch/arm/src/common/up_doirq.c * - * Copyright (C) 2007, 2008 Gregory Nutt. All rights reserved. + * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <spudmonkey@racsa.co.cr> * * Redistribution and use in source and binary forms, with or without @@ -66,7 +66,7 @@ * Public Functions ****************************************************************************/ -void up_doirq(int irq, uint32* regs) +uint32 *up_doirq(int irq, uint32* regs) { up_ledon(LED_INIRQ); #ifdef CONFIG_SUPPRESS_INTERRUPTS @@ -89,6 +89,13 @@ void up_doirq(int irq, uint32* regs) irq_dispatch(irq, regs); + /* If a context switch occurred while processing the interrupt + * then current_regs may have value (depending upon the implementaton + * of context switching for te particular chip. + */ + + regs = current_regs; + /* Indicate that we are no long in an interrupt handler */ current_regs = NULL; @@ -101,4 +108,5 @@ void up_doirq(int irq, uint32* regs) } up_ledoff(LED_INIRQ); #endif + return regs; } |