summaryrefslogtreecommitdiff
path: root/nuttx/arch
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-06-15 17:23:48 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-06-15 17:23:48 +0000
commitf0c4282b44dcf92fcf0933df9d47367c03f41ece (patch)
tree1dd2e4b972a8efc0288fbf11d184b5e9d8521499 /nuttx/arch
parent1e5b09b3aef15551da9717ef5b5f5a36fb7e11bf (diff)
downloadpx4-nuttx-f0c4282b44dcf92fcf0933df9d47367c03f41ece.tar.gz
px4-nuttx-f0c4282b44dcf92fcf0933df9d47367c03f41ece.tar.bz2
px4-nuttx-f0c4282b44dcf92fcf0933df9d47367c03f41ece.zip
Fix some AVR context save errors
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3704 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch')
-rw-r--r--nuttx/arch/avr/src/atmega/atmega_lowconsole.c2
-rwxr-xr-xnuttx/arch/avr/src/avr/excptmacros.h28
2 files changed, 16 insertions, 14 deletions
diff --git a/nuttx/arch/avr/src/atmega/atmega_lowconsole.c b/nuttx/arch/avr/src/atmega/atmega_lowconsole.c
index c1fda6244..4e52f4aba 100644
--- a/nuttx/arch/avr/src/atmega/atmega_lowconsole.c
+++ b/nuttx/arch/avr/src/atmega/atmega_lowconsole.c
@@ -377,7 +377,7 @@ void usart1_configure(void)
#elif CONFIG_USART1_BITS == 8
ucsr1c |= ((1 << UCSZ10) | (1 << UCSZ11));
#elif CONFIG_USART1_BITS == 9
- ucsr1c |= (U(1 << CSZ10) | (1 << UCSZ11));
+ ucsr1c |= ((1 << CSZ10) | (1 << UCSZ11));
ucsr1b |= (1 << UCSZ12);
#else
# error "Unsupported word size"
diff --git a/nuttx/arch/avr/src/avr/excptmacros.h b/nuttx/arch/avr/src/avr/excptmacros.h
index 38aacdb96..e7be1569b 100755
--- a/nuttx/arch/avr/src/avr/excptmacros.h
+++ b/nuttx/arch/avr/src/avr/excptmacros.h
@@ -150,34 +150,36 @@
* handler.
*
* On Entry:
- * r0 - has already been pushed onto the stack and now holds the IRQ number
+ * r24 - has already been pushed onto the stack and now holds the IRQ number
* sp - Points to the top of the stack
* Only the stack is available for storage
*
* PCL
* PCH
- * R0
+ * R24
* --- <- SP
*
* At completion:
- * Register state is saved on the stack; All registers are available for usage except sp.
+ * Register state is saved on the stack; All registers are available for usage except sp and
+ * r24 which still contains the IRQ number as set by the HANDLER macro.
*
********************************************************************************************/
.macro EXCPT_PROLOGUE
- /* Save R1 - The zero register (but might not be zero) */
+ /* Save R0 -- the scratch register */
- push r1
+ push r0
/* Save the status register on the stack */
- in r1, __SREG__ /* Save the status register */
+ in r0, __SREG__ /* Save the status register */
cli /* Disable interrupts */
- push r1
+ push r0
- /* R1 must be zero for our purposes */
+ /* Save R1 -- the zero register (which may not be zero). R1 must be zero for our purposes */
+ push r1
clr r1
/* Save r2-r17 - Call-saved, "static" registers */
@@ -230,12 +232,12 @@
* it was on entry into this macro. We'll have to subtract to get that value.
*/
- in r24, __SP_L__
- in r25, __SP_H__
- adiw r24, XCPTCONTEXT_REGS
+ in r26, __SP_L__
+ in r27, __SP_H__
+ adiw r26, XCPTCONTEXT_REGS
- push r24
- push r25
+ push r26
+ push r27
.endm
/********************************************************************************************