diff --git a/arch/avr/src/avr32/up_exceptions.S b/arch/avr/src/avr32/up_exceptions.S
index d7686e3d0a0521ca8417f6acc8493b2c4be53d3e..4a7ade6fde1b99d749103c534377d98dfb978f75 100755
--- a/arch/avr/src/avr32/up_exceptions.S
+++ b/arch/avr/src/avr32/up_exceptions.S
@@ -233,8 +233,8 @@ avr32_xcptcommon:
 /*     xx xx xx xx xx xx xx xx xx SR PC LI 12 11 10 SR PC                   */
 /*                                ^                       ^+8*4             */
 
-	ld.w	r11, sp[4*4]
-	ld.w	r12, sp[5*4]
+	ld.w	r12, sp[4*4]
+	ld.w	r11, sp[5*4]
 	stm		--sp, r11-r12
 
 /* Save r8 and r8:                                                          */
diff --git a/arch/avr/src/avr32/up_fullcontextrestore.S b/arch/avr/src/avr32/up_fullcontextrestore.S
index c883c58c7eba238a3cc60d2fb15961f48b701136..3d99721801dbbf81c5082075c623206fb6c8ad41 100755
--- a/arch/avr/src/avr32/up_fullcontextrestore.S
+++ b/arch/avr/src/avr32/up_fullcontextrestore.S
@@ -70,7 +70,10 @@
  *      pointer (hence, interrupts must be disabled), and (b) there is the
  *      very real possibility that the new stack pointer might overlap with
  *      the register save area and stack usage in this function might corrupt
- *      the register save data before the state is restored.
+ *      the register save data before the state is restored.  It turns that
+ *      an extra 3 words in the register save structure size will protect its
+ *      contents (because that is the number of temporaries pushed onto the
+ *      stack).
  *
  * Input Parameters:
  *   r12 = A pointer to the register save area of the thread to be restored.
diff --git a/arch/avr/src/avr32/up_sigdeliver.c b/arch/avr/src/avr32/up_sigdeliver.c
index b000f118a81013f7695f34953e3aab9f7d297967..c8866948290154fe522723dbe8a9325012c9f6c0 100644
--- a/arch/avr/src/avr32/up_sigdeliver.c
+++ b/arch/avr/src/avr32/up_sigdeliver.c
@@ -82,7 +82,11 @@
 void up_sigdeliver(void)
 {
   _TCB  *rtcb = (_TCB*)g_readytorun.head;
+#if 0
   uint32_t regs[XCPTCONTEXT_REGS+3];  /* Why +3? See below */
+#else
+  uint32_t regs[XCPTCONTEXT_REGS];
+#endif
   sig_deliver_t sigdeliver;
 
   /* Save the errno.  This must be preserved throughout the signal handling
@@ -140,7 +144,9 @@ void up_sigdeliver(void)
    *      dangerous because there is the very real possibility that the new
    *      stack pointer might overlap with the register save area and hat stack
    *      usage in up_fullcontextrestore might corrupt the register save data
-   *      before the state is restored.
+   *      before the state is restored.  At present, there does not appear to
+   *      be any stack overlap problems.  If there were, then adding 3 words
+   *      to the size of register save structure size will protect its contents.
    */
 
   up_ledoff(LED_SIGNAL);
diff --git a/configs/avr32dev1/README.txt b/configs/avr32dev1/README.txt
index 98e65c231eca5bd7fe899f6846baee9c8221a909..8b3cc271ad60680bd7a46e3ee53612adf0c216f1 100755
--- a/configs/avr32dev1/README.txt
+++ b/configs/avr32dev1/README.txt
@@ -432,4 +432,8 @@ Where <subdir> is one of the following:
     This configuration directory, performs a simple OS test using
     examples/ostest.
 
+    NOTE: Round-robin scheduling is disabled in this test because
+    the RR test in examples/ostest declares data structures that
+    are too large for the poor little uc3 SRAM.
+