diff --git a/ChangeLog b/ChangeLog
index 982217c28f5e9818a5f6f472f02598e02da54867..d9d73582e8867c71053d24b5aec310658d02f04f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1288,7 +1288,7 @@
 	  test is ran repeatedly in a loop.
 	* configs/ez80f910200zco - Updated to used ZDS-II 4.11.1
 
-5.12 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
+5.12 2010-10-26 Gregory Nutt <spudmonkey@racsa.co.cr>
 
 	* arch/avr - Add a place to support AVR family processors.
 	* arch/avr/include/avr32 and arch/avr/src/avr32 - Add support for AVR32
@@ -1301,4 +1301,18 @@
 	  lib_labs.c, lib_llabs.c, lib_imaxabs.c - Add abs(), labs(), llabs(), and
 	  imaxabs().
 	* Add include/inttypes.h
+	* arch/hc/src/mc9s12ne64 - This hcs12 port grew a few more files.  But it
+	  is still a long way from complete.
+	* arch/*/src/*/*_sigdeliver.c - Fixed a serious error in the signal
+	  trampoline logic.  Essentially, interrupts are re-enabled while the
+	  signal handler executes, but the logic to re-disable the interrupts
+	  before returning from the signal handler trampoline was missing.  Under
+	  certain circumstances, this can cause stack corruption.  This was
+	  discovered by David Hewson on an ARM9 platform, but since the code
+	  has been leveraged, the bug has been propogated from ARM to Cortex-M3,
+	  AVR32, M16C, SH1, ZNEO, eZ80, Z8, and Z80 -- almost every architecture.
+	  The correction has been incorporated for all architectures but only
+	  verified on a few.
+
+5.13 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
 
diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html
index dd767ff36fb1ceb042c3a244c6bf5320ddb31cdf..fe9110565cb2a2067d992692245846dabc94f233 100644
--- a/Documentation/NuttX.html
+++ b/Documentation/NuttX.html
@@ -8,7 +8,7 @@
   <tr align="center" bgcolor="#e4e4e4">
     <td>
       <h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
-      <p>Last Updated: October 18, 2010</p>
+      <p>Last Updated: October 26, 2010</p>
     </td>
   </tr>
 </table>
@@ -772,10 +772,10 @@
   </tr>
 </table>
 
-<p><b>nuttx-5.11 Release Notes</b>:
+<p><b>nuttx-5.12 Release Notes</b>:
 
 <p>
-  This 58<sup>th</sup> release of NuttX, Version 5.11, was made on October 1, 2010 and is available for download from the
+  This 59<sup>th</sup> release of NuttX, Version 5.12, was made on October 26, 2010 and is available for download from the
   <a href="http://sourceforge.net/project/showfiles.php?group_id=189573">SourceForge</a> website.
   The change log associated with the release is available <a href="#currentrelease">here</a>.
   Unreleased changes after this release are available in CVS.
@@ -785,26 +785,29 @@
   This is primarily a bugfix release and includes some important corrections to the code:
   <ul>
     <li>
-      One very important bug fixes a race condition that can occur using
-	  semaphores that can be awakened by signals.  Under this particular
-	  race condition, a task could hang waiting for a semaphore.
-    </li>
-    <li>
-	  Corrections to lm3s8962 port contributed by Larry Arnold.  That
-	  port is purported to work correctly with these changes in place.
+	  Fixed an important error in the signal trampoline logic.  Essentially,
+	  interrupts are re-enabled while the signal handler executes, but the
+	  logic to re-disable the interrupts before returning from the signal
+	  handler trampoline was missing.  Under certain circumstances, this
+	  can cause stack corruption.  This was discovered by David Hewson on
+	  an ARM9 platform, but since the code has been leveraged, the bug has
+	  been propogated from ARM to Cortex-M3, AVR32, M16C, SH1, ZNEO, eZ80,
+	  Z8, and Z80 -- almost every architecture. The correction has been
+	  incorporated for all architectures but only verified on a few.
     </li>
   </ul>
 </p>
 <p>
-  Plus less critical bugfixes as detailed in the ChangeLog.  New features
-  include:
+  Other notable changes in NuttX-5.12 include:
   <ul>
     <li>
-	* A new configuration to support the mbed.org LPC1768 board (Contributed
-	  by Dave Marples), and
+	  A complete port for the AVR32 (AT91UC3B0256) is incorporated in the
+	  source tree.  Testing of this port is underway now.  This release
+	  was made before verifying this port in order to get the important
+	  bugfix in place.
     </li>
     <li>
-	* A driver for the Atmel AT45DB161D 4Mbit SPI FLASH part.
+	  Other miscellaneous bugfix and enhancements as noted in the ChangeLog.
     </li>
   </ul>
 </p>
@@ -1342,7 +1345,8 @@
          This port is currently under development.
          All code is complete for the basic NuttX port including header files for all AT91UC3* peripherals.
          Testing of this port is underway now.
-         It is hoped that the first, released AVR32 port will appear in version 5.12 of NuttX, probably near the beginning of September, 2010.
+		 The untest AVR32 is present in the 5.12 release of NuttX.
+		 It is hoped that the first, verified AVR32 port will be released in version 5.13 of NuttX.
       </p>
     </ul>
   </td>
@@ -1880,28 +1884,31 @@ Other memory:
 </table>
 
 <ul><pre>
-nuttx-5.11 2010-10-01 Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
-
-	* configs/ea3131/src/up_fillpage.c - Added new configuration item
-	  CONFIG_PAGING_BINPATH.  If CONFIG_PAGING_BINPATH is defined, then it
-	  is the full path to a file on a mounted file system that contains
-	  a binary image of the NuttX executable.  Pages will be filled by
-	  reading from offsets into this file that correspond to virtual
-	  fault addresses.  up_fillpage.c implements logic to perform page
-	  files using the CONFIG_PAGING_BINPATH file.
-	* configs/mbed - Add configuration to support the mbed.org LPC1768
-	  board (Contributed by Dave Marples).
-	* sched/sem_wait.c and sem_waitirq.c - Eliminate a race condition
-	  that can occur when a semaphore wait is interrupt by a signal.
-	  (see email thread: http://tech.groups.yahoo.com/group/nuttx/message/530)
-	* drivers/mtd/at45db.c - Add a driver for the Atmel AT45DB161D 4Mbit
-	  SPI FLASH part (untested on initial check-in).
-	* arch/arm/src/lm3s and arch/arm/include/lm3s - Corrections for the
-	  lm3s8962 port contributed by Larry Arnold.  That port is purported
-	  to work correctly with these changes in place.
-	* examples/ostest/prioinherit.c - Need to reinitialize globals if
-	  test is ran repeatedly in a loop.
-	* configs/ez80f910200zco - Updated to used ZDS-II 4.11.1
+nuttx-5.12 2010-10-26 Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
+
+	* arch/avr - Add a place to support AVR family processors.
+	* arch/avr/include/avr32 and arch/avr/src/avr32 - Add support for AVR32
+	  (all of the AVR32 is a work in progress).
+	* arch/avr/include/at91uc3 and arch/avr/src/at91uc3 - Add support
+	  for the AT91 UC3A/B family of AVR32 MCUs.
+	* confgs/avr32dev1 - Add support for the Atmel AVR32DEV1 board featuring
+	  the AT91UC3B0256 MCU.  This board is produced by www.mcuzone.com.
+	* include/stdlib.h, lib/Makefile, lib/lib_abs.c, lib/lib_labs.c,
+	  lib_labs.c, lib_llabs.c, lib_imaxabs.c - Add abs(), labs(), llabs(), and
+	  imaxabs().
+	* Add include/inttypes.h
+	* arch/hc/src/mc9s12ne64 - This hcs12 port grew a few more files.  But it
+	  is still a long way from complete.
+	* arch/*/src/*/*_sigdeliver.c - Fixed a serious error in the signal
+	  trampoline logic.  Essentially, interrupts are re-enabled while the
+	  signal handler executes, but the logic to re-disable the interrupts
+	  before returning from the signal handler trampoline was missing.  Under
+	  certain circumstances, this can cause stack corruption.  This was
+	  discovered by David Hewson on an ARM9 platform, but since the code
+	  has been leveraged, the bug has been propogated from ARM to Cortex-M3,
+	  AVR32, M16C, SH1, ZNEO, eZ80, Z8, and Z80 -- almost every architecture.
+	  The correction has been incorporated for all architectures but only
+	  verified on a few.
 
 pascal-2.0 2009-12-21 Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
 
@@ -1931,18 +1938,7 @@ buildroot-1.8 2009-12-21 &lt;spudmonkey@racsa.co.cr&gt;
 </table>
 
 <ul><pre>
-nuttx-5.12 2010-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
-
-	* arch/avr - Add a place to support AVR family processors.
-	* arch/avr/include/avr32 and arch/avr/src/avr32 - Add support for AVR32
-	  (all of the AVR32 is a work in progress).
-	* arch/avr/include/at91uc3 and arch/avr/src/at91uc3 - Add support
-	  for the AT91 UC3A/B family of AVR32 MCUs.
-	* confgs/avr32dev1 - Add support for the Atmel AVR32DEV1 board featuring
-	  the AT91UC3B0256 MCU.  This board is produced by www.mcuzone.com.
-	* include/stdlib.h, lib/Makefile, lib/lib_abs.c, lib/lib_labs.c,
-	  lib_labs.c, lib_llabs.c, lib_imaxabs.c - Add abs(), labs(), llabs(), and
-	  imaxabs().
+nuttx-5.13 2010-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
 
 pascal-2.1 2010-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
 
diff --git a/ReleaseNotes b/ReleaseNotes
index e88b4d79e7a35cd3f0e1bd45ea7e38ad663469a6..f0f8aed4ddf0e32393e8ea1e1c8b31416844cbc8 100644
--- a/ReleaseNotes
+++ b/ReleaseNotes
@@ -1431,3 +1431,26 @@ include:
   * A new configuration to support the mbed.org LPC1768 board (Contributed
     by Dave Marples), and
   * A driver for the Atmel AT45DB161D 4Mbit SPI FLASH part,
+
+nuttx-5.12
+^^^^^^^^^^
+
+This is the 59th release of NuttX.  This is a critical bugfix release.
+
+	* Fixed an important error in the signal trampoline logic.  Essentially,
+	  interrupts are re-enabled while the signal handler executes, but the
+	  logic to re-disable the interrupts before returning from the signal
+	  handler trampoline was missing.  Under certain circumstances, this
+	  can cause stack corruption.  This was discovered by David Hewson on
+	  an ARM9 platform, but since the code has been leveraged, the bug has
+	  been propogated from ARM to Cortex-M3, AVR32, M16C, SH1, ZNEO, eZ80,
+	  Z8, and Z80 -- almost every architecture. The correction has been
+	  incorporated for all architectures but only verified on a few.
+
+Other notable changes in NuttX-5.12:
+
+	* A complete port for the AVR32 (AT91UC3B0256) is incorporated in the
+	  source tree.  Testing of this port is underway now.  This release
+	  was made before verifying this port in order to get the important
+	  bugfix in place.
+	* Other miscellaneous bugfix and enhancements as noted in the ChangeLog.
diff --git a/arch/arm/src/arm/up_fullcontextrestore.S b/arch/arm/src/arm/up_fullcontextrestore.S
index c99337636a4fbade2595596ea6130edc0f2dce6a..d0745ef5b46c96df7022c7ea0c999b00c8c49c60 100644
--- a/arch/arm/src/arm/up_fullcontextrestore.S
+++ b/arch/arm/src/arm/up_fullcontextrestore.S
@@ -1,7 +1,7 @@
 /**************************************************************************
  * arch/arm/src/arm/up_fullcontextrestore.S
  *
- *   Copyright (C) 2007, 2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2007, 2009-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -95,9 +95,10 @@ up_fullcontextrestore:
 
 	/* Now we can restore the CPSR.  We wait until we are completely
 	 * finished with the context save data to do this. Restore the CPSR
-	 * may re-enable and interrupts and we couldt be in a context
-	 * where save structure is only protected by interrupts being disabled.
-         */
+	 * may re-enable and interrupts and we could be in a context
+	 * where the save structure is only protected by interrupts being
+	 * disabled.
+	 */
 
 	ldr	r1, [r0, #(4*REG_CPSR)]	/* Fetch the stored CPSR value */
 	msr	cpsr, r1		/* Set the CPSR */
diff --git a/arch/arm/src/arm/up_schedulesigaction.c b/arch/arm/src/arm/up_schedulesigaction.c
index 63129680059606756dba83d35b1f357764612b50..0dfb6e540fbf9c919ea308e8743a0f8b106a1ba3 100644
--- a/arch/arm/src/arm/up_schedulesigaction.c
+++ b/arch/arm/src/arm/up_schedulesigaction.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/arm/src/arm/up_schedulesigaction.c
  *
- *   Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/arch/arm/src/arm/up_sigdeliver.c b/arch/arm/src/arm/up_sigdeliver.c
index a2358a0440578c513d465618d61e82e0d9b3d75e..f92f85e7e093a0158f0bca60baaba48b78853bf9 100644
--- a/arch/arm/src/arm/up_sigdeliver.c
+++ b/arch/arm/src/arm/up_sigdeliver.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/arm/src/arm/up_sigdeliver.c
  *
- *   Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -73,10 +73,9 @@
  * Name: up_sigdeliver
  *
  * Description:
- *   This is the a signal handling trampoline.  When a
- *   signal action was posted.  The task context was mucked
- *   with and forced to branch to this location with interrupts
- *   disabled.
+ *   This is the a signal handling trampoline.  When a signal action was
+ *   posted.  The task context was mucked with and forced to branch to this
+ *   location with interrupts disabled.
  *
  ****************************************************************************/
 
@@ -86,9 +85,9 @@ void up_sigdeliver(void)
   uint32_t regs[XCPTCONTEXT_REGS];
   sig_deliver_t sigdeliver;
 
-  /* Save the errno.  This must be preserved throughout the
-   * signal handling so that the user code final gets
-   * the correct errno value (probably EINTR).
+  /* Save the errno.  This must be preserved throughout the signal handling
+   * so that the user code final gets the correct errno value (probably
+   * EINTR).
    */
 
   int saved_errno = rtcb->pterrno;
@@ -105,11 +104,9 @@ void up_sigdeliver(void)
   regs[REG_PC]         = rtcb->xcp.saved_pc;
   regs[REG_CPSR]       = rtcb->xcp.saved_cpsr;
 
-  /* Get a local copy of the sigdeliver function pointer.
-   * we do this so that we can nullify the sigdeliver
-   * function point in the TCB and accept more signal
-   * deliveries while processing the current pending
-   * signals.
+  /* Get a local copy of the sigdeliver function pointer. we do this so that
+   * we can nullify the sigdeliver function pointer in the TCB and accept
+   * more signal deliveries while processing the current pending signals.
    */
 
   sigdeliver           = rtcb->xcp.sigdeliver;
@@ -123,18 +120,16 @@ void up_sigdeliver(void)
 
   sigdeliver(rtcb);
 
-  /* Output any debug messaged BEFORE restoreing errno
-   * (becuase they may alter errno), then restore the
-   * original errno that is needed by the user logic
-   * (it is probably EINTR).
+  /* Output any debug messages BEFORE restoring errno (because they may
+   * alter errno), then disable interrupts again and restore the original
+   * errno that is needed by the user logic (it is probably EINTR).
    */
 
   sdbg("Resuming\n");
+  (void)irqsave();
   rtcb->pterrno = saved_errno;
 
-  /* Then restore the correct state for this thread of
-   * execution.
-   */
+  /* Then restore the correct state for this thread of execution. */
 
   up_ledoff(LED_SIGNAL);
   up_fullcontextrestore(regs);
diff --git a/arch/arm/src/cortexm3/up_schedulesigaction.c b/arch/arm/src/cortexm3/up_schedulesigaction.c
index e4f4f51b4a29fa3a12ec79564632c8d13e234ec3..879cd6715b08cc84ab63e40b09bd358fd9680d93 100644
--- a/arch/arm/src/cortexm3/up_schedulesigaction.c
+++ b/arch/arm/src/cortexm3/up_schedulesigaction.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/arm/src/cortexm3/up_schedulesigaction.c
  *
- *   Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/arch/arm/src/cortexm3/up_sigdeliver.c b/arch/arm/src/cortexm3/up_sigdeliver.c
index e350f126af50fe031dca49c5a282326a0f28be99..f05b7ce69a84a5ea335c9c2e9177aaac71853151 100644
--- a/arch/arm/src/cortexm3/up_sigdeliver.c
+++ b/arch/arm/src/cortexm3/up_sigdeliver.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/arm/src/cortexm3/up_sigdeliver.c
  *
- *   Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -73,10 +73,9 @@
  * Name: up_sigdeliver
  *
  * Description:
- *   This is the a signal handling trampoline.  When a
- *   signal action was posted.  The task context was mucked
- *   with and forced to branch to this location with interrupts
- *   disabled.
+ *   This is the a signal handling trampoline.  When a signal action was
+ *   posted.  The task context was mucked with and forced to branch to this
+ *   location with interrupts disabled.
  *
  ****************************************************************************/
 
@@ -86,9 +85,9 @@ void up_sigdeliver(void)
   uint32_t regs[XCPTCONTEXT_REGS];
   sig_deliver_t sigdeliver;
 
-  /* Save the errno.  This must be preserved throughout the
-   * signal handling so that the user code final gets
-   * the correct errno value (probably EINTR).
+  /* Save the errno.  This must be preserved throughout the signal handling
+   * so that the user code final gets the correct errno value (probably
+   * EINTR).
    */
 
   int saved_errno = rtcb->pterrno;
@@ -106,11 +105,9 @@ void up_sigdeliver(void)
   regs[REG_PRIMASK]    = rtcb->xcp.saved_primask;
   regs[REG_XPSR]       = rtcb->xcp.saved_xpsr;
 
-  /* Get a local copy of the sigdeliver function pointer.
-   * we do this so that we can nullify the sigdeliver
-   * function point in the TCB and accept more signal
-   * deliveries while processing the current pending
-   * signals.
+  /* Get a local copy of the sigdeliver function pointer. We do this so that
+   * we can nullify the sigdeliver function pointer in the TCB and accept
+   * more signal deliveries while processing the current pending signals.
    */
 
   sigdeliver           = rtcb->xcp.sigdeliver;
@@ -124,13 +121,13 @@ void up_sigdeliver(void)
 
   sigdeliver(rtcb);
 
-  /* Output any debug messaged BEFORE restoreing errno
-   * (becuase they may alter errno), then restore the
-   * original errno that is needed by the user logic
-   * (it is probably EINTR).
+  /* Output any debug messages BEFORE restoring errno (because they may
+   * alter errno), then disable interrupts again and restore the original
+   * errno that is needed by the user logic (it is probably EINTR).
    */
 
   sdbg("Resuming\n");
+  (void)irqsave();
   rtcb->pterrno = saved_errno;
 
   /* Then restore the correct state for this thread of
diff --git a/arch/avr/src/avr32/up_sigdeliver.c b/arch/avr/src/avr32/up_sigdeliver.c
index 599b6f0d03ad7718084e3e217654ebc2dfe750ed..aa3940b79818b3841c37ba81b8ba77133dab8f22 100644
--- a/arch/avr/src/avr32/up_sigdeliver.c
+++ b/arch/avr/src/avr32/up_sigdeliver.c
@@ -103,9 +103,9 @@ void up_sigdeliver(void)
   regs[REG_PC]         = rtcb->xcp.saved_pc;
   regs[REG_SR]         = rtcb->xcp.saved_sr;
 
-  /* Get a local copy of the sigdeliver function pointer. We do this so tha
-   * we can nullify the sigdeliver function point in the TCB and accept more
-   * signal deliveries while processing the current pending signals.
+  /* Get a local copy of the sigdeliver function pointer. We do this so that
+   * we can nullify the sigdeliver function pointer in the TCB and accept
+   * more signal deliveries while processing the current pending signals.
    */
 
   sigdeliver           = rtcb->xcp.sigdeliver;
@@ -119,17 +119,16 @@ void up_sigdeliver(void)
 
   sigdeliver(rtcb);
 
-  /* Output any debug messaged BEFORE restoring errno (becuase they may
-   * alter errno), then restore the original errno that is needed by
-   * the user logic (it is probably EINTR).
+  /* Output any debug messages BEFORE restoring errno (because they may
+   * alter errno), then disable interrupts again and restore the original
+   * errno that is needed by the user logic (it is probably EINTR).
    */
 
   sdbg("Resuming\n");
+  (void)irqsave();
   rtcb->pterrno = saved_errno;
 
-  /* Then restore the correct state for this thread of
-   * execution.
-   */
+  /* Then restore the correct state for this thread of execution. */
 
   up_ledoff(LED_SIGNAL);
   up_fullcontextrestore(regs);
diff --git a/arch/sh/src/m16c/m16c_schedulesigaction.c b/arch/sh/src/m16c/m16c_schedulesigaction.c
index ae53e4ff5e38f7b8756287ebe5273684c00fd2e9..d921fca01ebf161b2cc562b3f8dcc9f386a77baa 100644
--- a/arch/sh/src/m16c/m16c_schedulesigaction.c
+++ b/arch/sh/src/m16c/m16c_schedulesigaction.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/sh/src/m16c/m16c_schedulesigaction.c
  *
- *   Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/arch/sh/src/m16c/m16c_sigdeliver.c b/arch/sh/src/m16c/m16c_sigdeliver.c
index 4493c28b48f505fb291f6c1f4c304c85f8c95652..848249721a33576ada968dd85c75ea8200d85a45 100644
--- a/arch/sh/src/m16c/m16c_sigdeliver.c
+++ b/arch/sh/src/m16c/m16c_sigdeliver.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/sh/src/m16c/m16c_sigdeliver.c
  *
- *   Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -72,10 +72,9 @@
  * Name: up_sigdeliver
  *
  * Description:
- *   This is the a signal handling trampoline.  When a
- *   signal action was posted.  The task context was mucked
- *   with and forced to branch to this location with interrupts
- *   disabled.
+ *   This is the a signal handling trampoline.  When a signal action was
+ *   posted.  The task context was mucked with and forced to branch to this
+ *   location with interrupts disabled.
  *
  ****************************************************************************/
 
@@ -86,9 +85,9 @@ void up_sigdeliver(void)
   uint8_t regs[XCPTCONTEXT_SIZE];
   sig_deliver_t sigdeliver;
 
-  /* Save the errno.  This must be preserved throughout the
-   * signal handling so that the user code final gets
-   * the correct errno value (probably EINTR).
+  /* Save the errno.  This must be preserved throughout the signal handling
+   * so that the user code final gets the correct errno value (probably
+   * EINTR).
    */
 
   int saved_errno = rtcb->pterrno;
@@ -106,10 +105,9 @@ void up_sigdeliver(void)
   regs[REG_PC+1] = rtcb->xcp.saved_pc[1];
   regs[REG_FLG]  = rtcb->xcp.saved_flg;
 
-  /* Get a local copy of the sigdeliver function pointer.
-   * we do this so that we can nullify the sigdeliver
-   * function point in the TCB and accept more signal
-   * deliveries while processing the current pending
+  /* Get a local copy of the sigdeliver function pointer.  We do this so
+   * that we can nullify the sigdeliver function pointer in the TCB and
+   * accept more signal deliveries while processing the current pending
    * signals.
    */
 
@@ -124,13 +122,13 @@ void up_sigdeliver(void)
 
   sigdeliver(rtcb);
 
-  /* Output any debug messaged BEFORE restoreing errno
-   * (becuase they may alter errno), then restore the
-   * original errno that is needed by the user logic
-   * (it is probably EINTR).
+  /* Output any debug messages BEFORE restoring errno (because they may
+   * alter errno), then disable interrupts again and restore the original
+   * errno that is needed by the user logic (it is probably EINTR).
    */
 
   sdbg("Resuming\n");
+  (void)irqsave();
   rtcb->pterrno = saved_errno;
 
   /* Then restore the correct state for this thread of
diff --git a/arch/sh/src/sh1/sh1_schedulesigaction.c b/arch/sh/src/sh1/sh1_schedulesigaction.c
index 6e7ba34e858d91b15447d1c483e884613aff974f..4454195d695c8259997da75adc7c17e42c1958c0 100644
--- a/arch/sh/src/sh1/sh1_schedulesigaction.c
+++ b/arch/sh/src/sh1/sh1_schedulesigaction.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/sh/src/sh1/sh1_schedulesigaction.c
  *
- *   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/arch/sh/src/sh1/sh1_sigdeliver.c b/arch/sh/src/sh1/sh1_sigdeliver.c
index cddec60415cface0149a68221be36ac0058b016e..568b448e3e9b1d9dafcde191a852fbeee7aa28e5 100644
--- a/arch/sh/src/sh1/sh1_sigdeliver.c
+++ b/arch/sh/src/sh1/sh1_sigdeliver.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * common/up_sigdeliver.c
  *
- *   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -72,10 +72,9 @@
  * Name: up_sigdeliver
  *
  * Description:
- *   This is the a signal handling trampoline.  When a
- *   signal action was posted.  The task context was mucked
- *   with and forced to branch to this location with interrupts
- *   disabled.
+ *   This is the a signal handling trampoline.  When a signal action was
+ *   posted.  The task context was mucked with and forced to branch to this
+ *   location with interrupts disabled.
  *
  ****************************************************************************/
 
@@ -86,9 +85,9 @@ void up_sigdeliver(void)
   uint32_t regs[XCPTCONTEXT_REGS];
   sig_deliver_t sigdeliver;
 
-  /* Save the errno.  This must be preserved throughout the
-   * signal handling so that the user code final gets
-   * the correct errno value (probably EINTR).
+  /* Save the errno.  This must be preserved throughout the signal handling
+   * so that the user code final gets the correct errno value (probably
+   * EINTR).
    */
 
   int saved_errno = rtcb->pterrno;
@@ -105,17 +104,16 @@ void up_sigdeliver(void)
   regs[REG_PC] = rtcb->xcp.saved_pc;
   regs[REG_SR] = rtcb->xcp.saved_sr;
 
-  /* Get a local copy of the sigdeliver function pointer.
-   * we do this so that we can nullify the sigdeliver
-   * function point in the TCB and accept more signal
-   * deliveries while processing the current pending
+  /* Get a local copy of the sigdeliver function pointer.  We do this so
+   * that we can nullify the sigdeliver function pointer in the TCB and
+   * accept more signal deliveries while processing the current pending
    * signals.
    */
 
   sigdeliver           = rtcb->xcp.sigdeliver;
   rtcb->xcp.sigdeliver = NULL;
 
-  /* Then restore the task interrupt statat. */
+  /* Then restore the task interrupt state. */
 
   irqrestore(regs[REG_SR] & 0x000000f0);
 
@@ -123,18 +121,16 @@ void up_sigdeliver(void)
 
   sigdeliver(rtcb);
 
-  /* Output any debug messaged BEFORE restoreing errno
-   * (becuase they may alter errno), then restore the
-   * original errno that is needed by the user logic
-   * (it is probably EINTR).
+  /* Output any debug messages BEFORE restoring errno (because they may
+   * alter errno), then disable interrupts again and restore the original
+   * errno that is needed by the user logic (it is probably EINTR).
    */
 
   sdbg("Resuming\n");
+  (void)irqsave();
   rtcb->pterrno = saved_errno;
 
-  /* Then restore the correct state for this thread of
-   * execution.
-   */
+  /* Then restore the correct state for this thread of execution. */
 
   up_ledoff(LED_SIGNAL);
   up_fullcontextrestore(regs);
diff --git a/arch/sim/src/up_schedulesigaction.c b/arch/sim/src/up_schedulesigaction.c
index b22aa5252fab995c1ae2176f5980bb993f3041f8..ca61e8ddf3e73f4312f902d46c1c0a26289c2e37 100644
--- a/arch/sim/src/up_schedulesigaction.c
+++ b/arch/sim/src/up_schedulesigaction.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * up_schedulesigaction.c
  *
- *   Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -98,7 +98,7 @@
 
 void up_schedule_sigaction(_TCB *tcb, sig_deliver_t sigdeliver)
 {
-  /* We don't have to anything complex of the simulated target */
+  /* We don't have to anything complex for the simulated target */
 
   if (tcb == (_TCB*)g_readytorun.head)
     {
diff --git a/arch/z16/src/common/up_schedulesigaction.c b/arch/z16/src/common/up_schedulesigaction.c
index e76a8c4ffd4c7ce512390d81d9f4ae84d227e5fa..368b2ed541900c1a9a3eaf0c3381b653acc61a8c 100644
--- a/arch/z16/src/common/up_schedulesigaction.c
+++ b/arch/z16/src/common/up_schedulesigaction.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * common/up_schedulesigaction.c
  *
- *   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/arch/z16/src/common/up_sigdeliver.c b/arch/z16/src/common/up_sigdeliver.c
index 85f3e972d94603b29a7f5bc79893c69a1b77f51d..4ca05d17ba639a036f60b3ef3c3f1a63ccb7fa0d 100644
--- a/arch/z16/src/common/up_sigdeliver.c
+++ b/arch/z16/src/common/up_sigdeliver.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * common/up_sigdeliver.c
  *
- *   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -95,8 +95,8 @@ void up_sigdeliver(void)
 
   up_ledon(LED_SIGNAL);
 
-  dbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
-       rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
+  sdbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
+        rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
   ASSERT(rtcb->xcp.sigdeliver != NULL);
 
   /* Save the real return state on the stack. */
@@ -125,17 +125,16 @@ void up_sigdeliver(void)
 
   sigdeliver(rtcb);
 
-  /* Output any debug messaged BEFORE restoring errno (because they may
-   * alter errno), then restore the original errno that is needed by
-   * the user logic (it is probably EINTR).
+  /* Output any debug messages BEFORE restoring errno (because they may
+   * alter errno), then disable interrupts again and restore the original
+   * errno that is needed by the user logic (it is probably EINTR).
    */
 
-  dbg("Resuming\n");
+  sdbg("Resuming\n");
+  (void)irqsave();
   rtcb->pterrno = saved_errno;
 
-  /* Then restore the correct state for this thread of
-   * execution.
-   */
+  /* Then restore the correct state for this thread of execution. */
 
   up_ledoff(LED_SIGNAL);
   SIGNAL_RETURN(regs);
diff --git a/arch/z80/src/ez80/ez80_schedulesigaction.c b/arch/z80/src/ez80/ez80_schedulesigaction.c
index 8c9a8426027f9faf5007bc704030922e00c8a1b5..ce48fe98718141cecdb4cbab83a64f8640d67a45 100644
--- a/arch/z80/src/ez80/ez80_schedulesigaction.c
+++ b/arch/z80/src/ez80/ez80_schedulesigaction.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/z80/src/ez80/ez80_schedulesigaction.c
  *
- *   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/arch/z80/src/ez80/ez80_sigdeliver.c b/arch/z80/src/ez80/ez80_sigdeliver.c
index 90fdf4c6be7bc03f0573bc8d4411343ccfbb0d2d..86aaad2d5016453aa35af540cc2d1674b9b50b98 100644
--- a/arch/z80/src/ez80/ez80_sigdeliver.c
+++ b/arch/z80/src/ez80/ez80_sigdeliver.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/z80/src/ez80/ez80_sigdeliver.c
  *
- *   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -72,10 +72,9 @@
  * Name: up_sigdeliver
  *
  * Description:
- *   This is the a signal handling trampoline.  When a
- *   signal action was posted.  The task context was mucked
- *   with and forced to branch to this location with interrupts
- *   disabled.
+ *   This is the a signal handling trampoline.  When a signal action was
+ *   posted.  The task context was mucked with and forced to branch to this
+ *   location with interrupts disabled.
  *
  ****************************************************************************/
 
@@ -106,8 +105,9 @@ void up_sigdeliver(void)
   regs[XCPT_I]  = rtcb->xcp.saved_i;
 
   /* Get a local copy of the sigdeliver function pointer.  We do this so
-   * that we can nullify the sigdeliver function point in the TCB and accept
-   * more signal deliveries while processing the current pending signals.
+   * that we can nullify the sigdeliver function pointer in the TCB and 
+   * accept more signal deliveries while processing the current pending
+   * signals.
    */
 
   sigdeliver           = rtcb->xcp.sigdeliver;
@@ -121,12 +121,13 @@ void up_sigdeliver(void)
 
   sigdeliver(rtcb);
 
-  /* Output any debug messaged BEFORE restoring errno (because they may alter
-   * errno), then restore the original errno that is needed by the user logic
-   * (it is probably EINTR).
+  /* Output any debug messages BEFORE restoring errno (because they may
+   * alter errno), then disable interrupts again and restore the original
+   * errno that is needed by the user logic (it is probably EINTR).
    */
 
   sdbg("Resuming\n");
+  (void)irqsave();
   rtcb->pterrno = saved_errno;
 
   /* Then restore the correct state for this thread of
diff --git a/arch/z80/src/z8/z8_schedulesigaction.c b/arch/z80/src/z8/z8_schedulesigaction.c
index 0a5b9c095f603fbe3fbfc28b9a8a770bf6ccf5f1..1f1a354712cfcddd54eaf7c7a82079185a9a9dda 100644
--- a/arch/z80/src/z8/z8_schedulesigaction.c
+++ b/arch/z80/src/z8/z8_schedulesigaction.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/z80/src/z8/z8_schedulesigaction.c
  *
- *   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/arch/z80/src/z8/z8_sigdeliver.c b/arch/z80/src/z8/z8_sigdeliver.c
index badb8a328a89164d0d746416e64e17ec251dda2d..c5cf30aa6a063ba035c4fcd1c0773922b5aff968 100644
--- a/arch/z80/src/z8/z8_sigdeliver.c
+++ b/arch/z80/src/z8/z8_sigdeliver.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/z80/src/z8/z8_sigdeliver.c
  *
- *   Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -86,10 +86,9 @@ static void z8_copystate(FAR chipreg_t *dest, FAR const chipreg_t *src)
  * Name: up_sigdeliver
  *
  * Description:
- *   This is the a signal handling trampoline.  When a
- *   signal action was posted.  The task context was mucked
- *   with and forced to branch to this location with interrupts
- *   disabled.
+ *   This is the a signal handling trampoline.  When a signal action was
+ *   posted.  The task context was mucked with and forced to branch to this
+ *   location with interrupts disabled.
  *
  ****************************************************************************/
 
@@ -109,7 +108,7 @@ void up_sigdeliver(void)
 
   up_ledon(LED_SIGNAL);
 
-  dbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
+  sdbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
        rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
   ASSERT(rtcb->xcp.sigdeliver != NULL);
 
@@ -120,8 +119,9 @@ void up_sigdeliver(void)
   regs[XCPT_IRQCTL] = rtcb->xcp.saved_irqctl;
 
   /* Get a local copy of the sigdeliver function pointer.  We do this so
-   * that we can nullify the sigdeliver function point in the TCB and accept
-   * more signal deliveries while processing the current pending signals.
+   * that we can nullify the sigdeliver function pointer in the TCB and
+   * accept more signal deliveries while processing the current pending
+   * signals.
    */
 
   sigdeliver           = rtcb->xcp.sigdeliver;
@@ -135,17 +135,16 @@ void up_sigdeliver(void)
 
   sigdeliver(rtcb);
 
-  /* Output any debug messaged BEFORE restoring errno (because they may alter
-   * errno), then restore the original errno that is needed by the user logic
-   * (it is probably EINTR).
+  /* Output any debug messages BEFORE restoring errno (because they may
+   * alter errno), then disable interrupts again and restore the original
+   * errno that is needed by the user logic (it is probably EINTR).
    */
 
-  dbg("Resuming\n");
+  sdbg("Resuming\n");
+  (void)irqsave();
   rtcb->pterrno = saved_errno;
 
-  /* Then restore the correct state for this thread of
-   * execution.
-   */
+  /* Then restore the correct state for this thread of execution. */
 
   up_ledoff(LED_SIGNAL);
   z8_restorecontext(regs);
diff --git a/arch/z80/src/z80/z80_schedulesigaction.c b/arch/z80/src/z80/z80_schedulesigaction.c
index 19ea6d6bc2f70c9d713fef98921d8fe16a7dbd72..24b12731c7e7738c70e6cc26d96e10d9f978972f 100644
--- a/arch/z80/src/z80/z80_schedulesigaction.c
+++ b/arch/z80/src/z80/z80_schedulesigaction.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/z80/src/z80/z80_schedulesigaction.c
  *
- *   Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/arch/z80/src/z80/z80_sigdeliver.c b/arch/z80/src/z80/z80_sigdeliver.c
index 884a5c4b603a91463581bae69cfb1ad5288e610f..c6aa5ff3c56dd30206859530f47391e87e88bb78 100644
--- a/arch/z80/src/z80/z80_sigdeliver.c
+++ b/arch/z80/src/z80/z80_sigdeliver.c
@@ -1,7 +1,7 @@
 /****************************************************************************
  * arch/z80/src/z80/z80_sigdeliver.c
  *
- *   Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2007-2010 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -71,10 +71,9 @@
  * Name: up_sigdeliver
  *
  * Description:
- *   This is the a signal handling trampoline.  When a
- *   signal action was posted.  The task context was mucked
- *   with and forced to branch to this location with interrupts
- *   disabled.
+ *   This is the a signal handling trampoline.  When a signal action was
+ *   posted.  The task context was mucked with and forced to branch to this
+ *   location with interrupts disabled.
  *
  ****************************************************************************/
 
@@ -94,7 +93,7 @@ void up_sigdeliver(void)
 
   up_ledon(LED_SIGNAL);
 
-  dbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
+  sdbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
        rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
   ASSERT(rtcb->xcp.sigdeliver != NULL);
 
@@ -105,8 +104,9 @@ void up_sigdeliver(void)
   regs[XCPT_I]  = rtcb->xcp.saved_i;
 
   /* Get a local copy of the sigdeliver function pointer.  We do this so
-   * that we can nullify the sigdeliver function point in the TCB and accept
-   * more signal deliveries while processing the current pending signals.
+   * that we can nullify the sigdeliver function pointer in the TCB and
+   * accept more signal deliveries while processing the current pending
+   * signals.
    */
 
   sigdeliver           = rtcb->xcp.sigdeliver;
@@ -120,17 +120,16 @@ void up_sigdeliver(void)
 
   sigdeliver(rtcb);
 
-  /* Output any debug messaged BEFORE restoring errno (because they may alter
-   * errno), then restore the original errno that is needed by the user logic
-   * (it is probably EINTR).
+  /* Output any debug messages BEFORE restoring errno (because they may
+   * alter errno), then disable interrupts again and restore the original
+   * errno that is needed by the user logic (it is probably EINTR).
    */
 
-  dbg("Resuming\n");
+  sdbg("Resuming\n");
+  (void)irqsave();
   rtcb->pterrno = saved_errno;
 
-  /* Then restore the correct state for this thread of
-   * execution.
-   */
+  /* Then restore the correct state for this thread of execution. */
 
   up_ledoff(LED_SIGNAL);
   z80_restoreusercontext(regs);
diff --git a/configs/sam3u-ek/nsh/defconfig b/configs/sam3u-ek/nsh/defconfig
index 25854b1451ff65fdfaf17f65d130704ae0539f88..a01555654aea4e0df3152760eb8d91c86e3fe258 100755
--- a/configs/sam3u-ek/nsh/defconfig
+++ b/configs/sam3u-ek/nsh/defconfig
@@ -631,6 +631,93 @@ CONFIG_USBSTRG_PRODUCTSTR="USBdev Storage"
 CONFIG_USBSTRG_VERSIONNO=0x0399
 CONFIG_USBSTRG_REMOVABLE=y
 
+#
+# Graphics related configuration settings
+#
+# CONFIG_NX
+#   Enables overall support for graphics library and NX
+# CONFIG_NX_MULTIUSER
+#   Configures NX in multi-user mode
+# CONFIG_NX_NPLANES
+#   Some YUV color formats requires support for multiple planes,
+#   one for each color component.  Unless you have such special
+#   hardware, this value should be undefined or set to 1
+# CONFIG_NX_DISABLE_1BPP, CONFIG_NX_DISABLE_2BPP,
+# CONFIG_NX_DISABLE_4BPP, CONFIG_NX_DISABLE_8BPP,
+# CONFIG_NX_DISABLE_16BPP, CONFIG_NX_DISABLE_24BPP, and
+# CONFIG_NX_DISABLE_32BPP
+#   NX supports a variety of pixel depths.  You can save some
+#   memory by disabling support for unused color depths.
+# CONFIG_NX_PACKEDMSFIRST
+#   If a pixel depth of less than 8-bits is used, then NX needs
+#   to know if the pixels pack from the MS to LS or from LS to MS
+# CONFIG_NX_LCDDRIVER
+#   By default, NX builds to use a framebuffer driver (see
+#   include/nuttx/fb.h). If this option is defined, NX will
+#   build to use an LCD driver (see include/nuttx/lcd.h).
+# CONFIG_LCD_MAXPOWER - The full-on power setting for an LCD device.
+# CONFIG_LCD_MAXCONTRAST - The maximum contrast value for an LCD device.
+# CONFIG_NX_MOUSE
+#   Build in support for mouse input
+# CONFIG_NX_KBD
+#   Build in support of keypad/keyboard input
+# CONFIG_NXTK_BORDERWIDTH
+#   Specifies with with of the border (in pixels) used with
+#   framed windows.  The default is 4.
+# CONFIG_NXTK_BORDERCOLOR1 and CONFIG_NXTK_BORDERCOLOR2
+#   Specify the colors of the border used with framed windows.
+#   CONFIG_NXTK_BORDERCOLOR2 is the shadow side color and so
+#   is normally darker.  The default is medium and dark grey,
+#   respectively
+# CONFIG_NXTK_AUTORAISE
+#   If set, a window will be raised to the top if the mouse position
+#   is over a visible portion of the window.  Default: A mouse
+#   button must be clicked over a visible portion of the window.
+# CONFIG_NXFONTS_CHARBITS
+#   The number of bits in the character set.  Current options are
+#   only 7 and 8.  The default is 7.
+# CONFIG_NXFONT_SANS
+#   At present, there is only one font.  But if there were were more,
+#   then this option would select the sans serif font.
+#
+# NX Multi-user only options:
+#
+# CONFIG_NX_BLOCKING
+#   Open the client message queues in blocking mode.  In this case,
+#   nx_eventhandler()  will not return until a message is received and processed.
+# CONFIG_NX_MXSERVERMSGS and CONFIG_NX_MXCLIENTMSGS
+#   Specifies the maximum number of messages that can fit in
+#   the message queues.  No additional resources are allocated, but
+#   this can be set to prevent flooding of the client or server with
+#   too many messages (CONFIG_PREALLOC_MQ_MSGS controls how many
+#   messages are pre-allocated).
+#
+CONFIG_NX=n
+CONFIG_NX_MULTIUSER=n
+CONFIG_NX_NPLANES=1
+CONFIG_NX_DISABLE_1BPP=y
+CONFIG_NX_DISABLE_2BPP=y
+CONFIG_NX_DISABLE_4BPP=y
+CONFIG_NX_DISABLE_8BPP=y
+CONFIG_NX_DISABLE_16BPP=n
+CONFIG_NX_DISABLE_24BPP=y
+CONFIG_NX_DISABLE_32BPP=y
+CONFIG_NX_PACKEDMSFIRST=n
+CONFIG_NX_LCDDRIVER=y
+CONFIG_LCD_MAXPOWER=31
+CONFIG_LCD_MAXCONTRAST=1
+CONFIG_NX_MOUSE=y
+CONFIG_NX_KBD=y
+#CONFIG_NXTK_BORDERWIDTH=4
+#CONFIG_NXTK_BORDERCOLOR1
+#CONFIG_NXTK_BORDERCOLOR2
+CONFIG_NXTK_AUTORAISE=n
+CONFIG_NXFONT_SANS=y
+CONFIG_NXFONTS_CHARBITS=7
+CONFIG_NX_BLOCKING=y
+CONFIG_NX_MXSERVERMSGS=32
+CONFIG_NX_MXCLIENTMSGS=16
+
 #
 # Settings for examples/uip
 #
diff --git a/configs/sam3u-ek/ostest/defconfig b/configs/sam3u-ek/ostest/defconfig
index 54706dcbda9f1ae1faefd64054064b293e6c7666..8f42884b202a2d415347c8ed4ec26e659243f70d 100755
--- a/configs/sam3u-ek/ostest/defconfig
+++ b/configs/sam3u-ek/ostest/defconfig
@@ -629,6 +629,93 @@ CONFIG_USBSTRG_PRODUCTSTR="USBdev Storage"
 CONFIG_USBSTRG_VERSIONNO=0x0399
 CONFIG_USBSTRG_REMOVABLE=y
 
+#
+# Graphics related configuration settings
+#
+# CONFIG_NX
+#   Enables overall support for graphics library and NX
+# CONFIG_NX_MULTIUSER
+#   Configures NX in multi-user mode
+# CONFIG_NX_NPLANES
+#   Some YUV color formats requires support for multiple planes,
+#   one for each color component.  Unless you have such special
+#   hardware, this value should be undefined or set to 1
+# CONFIG_NX_DISABLE_1BPP, CONFIG_NX_DISABLE_2BPP,
+# CONFIG_NX_DISABLE_4BPP, CONFIG_NX_DISABLE_8BPP,
+# CONFIG_NX_DISABLE_16BPP, CONFIG_NX_DISABLE_24BPP, and
+# CONFIG_NX_DISABLE_32BPP
+#   NX supports a variety of pixel depths.  You can save some
+#   memory by disabling support for unused color depths.
+# CONFIG_NX_PACKEDMSFIRST
+#   If a pixel depth of less than 8-bits is used, then NX needs
+#   to know if the pixels pack from the MS to LS or from LS to MS
+# CONFIG_NX_LCDDRIVER
+#   By default, NX builds to use a framebuffer driver (see
+#   include/nuttx/fb.h). If this option is defined, NX will
+#   build to use an LCD driver (see include/nuttx/lcd.h).
+# CONFIG_LCD_MAXPOWER - The full-on power setting for an LCD device.
+# CONFIG_LCD_MAXCONTRAST - The maximum contrast value for an LCD device.
+# CONFIG_NX_MOUSE
+#   Build in support for mouse input
+# CONFIG_NX_KBD
+#   Build in support of keypad/keyboard input
+# CONFIG_NXTK_BORDERWIDTH
+#   Specifies with with of the border (in pixels) used with
+#   framed windows.  The default is 4.
+# CONFIG_NXTK_BORDERCOLOR1 and CONFIG_NXTK_BORDERCOLOR2
+#   Specify the colors of the border used with framed windows.
+#   CONFIG_NXTK_BORDERCOLOR2 is the shadow side color and so
+#   is normally darker.  The default is medium and dark grey,
+#   respectively
+# CONFIG_NXTK_AUTORAISE
+#   If set, a window will be raised to the top if the mouse position
+#   is over a visible portion of the window.  Default: A mouse
+#   button must be clicked over a visible portion of the window.
+# CONFIG_NXFONTS_CHARBITS
+#   The number of bits in the character set.  Current options are
+#   only 7 and 8.  The default is 7.
+# CONFIG_NXFONT_SANS
+#   At present, there is only one font.  But if there were were more,
+#   then this option would select the sans serif font.
+#
+# NX Multi-user only options:
+#
+# CONFIG_NX_BLOCKING
+#   Open the client message queues in blocking mode.  In this case,
+#   nx_eventhandler()  will not return until a message is received and processed.
+# CONFIG_NX_MXSERVERMSGS and CONFIG_NX_MXCLIENTMSGS
+#   Specifies the maximum number of messages that can fit in
+#   the message queues.  No additional resources are allocated, but
+#   this can be set to prevent flooding of the client or server with
+#   too many messages (CONFIG_PREALLOC_MQ_MSGS controls how many
+#   messages are pre-allocated).
+#
+CONFIG_NX=n
+CONFIG_NX_MULTIUSER=n
+CONFIG_NX_NPLANES=1
+CONFIG_NX_DISABLE_1BPP=y
+CONFIG_NX_DISABLE_2BPP=y
+CONFIG_NX_DISABLE_4BPP=y
+CONFIG_NX_DISABLE_8BPP=y
+CONFIG_NX_DISABLE_16BPP=n
+CONFIG_NX_DISABLE_24BPP=y
+CONFIG_NX_DISABLE_32BPP=y
+CONFIG_NX_PACKEDMSFIRST=n
+CONFIG_NX_LCDDRIVER=y
+CONFIG_LCD_MAXPOWER=31
+CONFIG_LCD_MAXCONTRAST=1
+CONFIG_NX_MOUSE=y
+CONFIG_NX_KBD=y
+#CONFIG_NXTK_BORDERWIDTH=4
+#CONFIG_NXTK_BORDERCOLOR1
+#CONFIG_NXTK_BORDERCOLOR2
+CONFIG_NXTK_AUTORAISE=n
+CONFIG_NXFONT_SANS=y
+CONFIG_NXFONTS_CHARBITS=7
+CONFIG_NX_BLOCKING=y
+CONFIG_NX_MXSERVERMSGS=32
+CONFIG_NX_MXCLIENTMSGS=16
+
 #
 # Settings for examples/uip
 #