diff --git a/arch/sh/include/m16c/irq.h b/arch/sh/include/m16c/irq.h
index 2e29f6500564324e0ac02118c6c9ce3a4821300f..daec5d684e6d1e1dd7b257076555f39ee69cb07b 100644
--- a/arch/sh/include/m16c/irq.h
+++ b/arch/sh/include/m16c/irq.h
@@ -191,7 +191,7 @@
 #  define M16C_INT0_IRQ       (_LAST_FIXED+24)   /* ffd74: INT0 */
 #  define M16C_INT1_IRQ       (_LAST_FIXED+25)   /* ffd78: INT1 */
 
-#  define NR_IRQS             (_LAST_FIXED+26   /* Total number of supported IRQs */
+#  define NR_IRQS             (_LAST_FIXED+26)   /* Total number of supported IRQs */
 #endif
 
 #define M16C_SYSTIMER_IRQ     M16C_TMRA0_IRQ
@@ -226,6 +226,34 @@ extern "C" {
  ************************************************************************************/
 
 #ifndef __ASSEMBLY__
+
+/* Save the current interrupt enable state & disable IRQs */
+
+static inline irqstate_t irqsave(void)
+{
+  irqstate_t flags;
+  __asm__ __volatile__
+    (
+     "\tstc	flg, %0\n"
+     "\tfclr	I\n"
+     : "=r" (flags)
+     :
+     : "memory");
+  return flags;
+}
+
+/* Restore saved IRQ & FIQ state */
+
+static inline void irqrestore(irqstate_t flags)
+{
+  __asm__ __volatile__
+    (
+     "ldc	%0, flg"
+     :
+     : "r" (flags)
+     : "memory");
+}
+
 #endif
 
 /************************************************************************************
diff --git a/arch/sh/include/m16c/types.h b/arch/sh/include/m16c/types.h
index df82676c460daa588c5596fbdbc8f3e8292662b0..4c3cad9bd33f1c0094d143634519ce7f8b99fe60 100644
--- a/arch/sh/include/m16c/types.h
+++ b/arch/sh/include/m16c/types.h
@@ -72,7 +72,7 @@ typedef unsigned long long uint64;
  * irqsave()
  */
 
-typedef unsigned int irqstate_t;
+typedef uint16 irqstate_t;
 
 #endif /* __ASSEMBLY__ */
 
diff --git a/arch/sh/src/common/up_assert.c b/arch/sh/src/common/up_assert.c
index f4a1bc080fee5ee7a2bb07e345acc7d0d09f3c25..3cac6606ff9eaf775e93fe7f81178e6304e970bc 100644
--- a/arch/sh/src/common/up_assert.c
+++ b/arch/sh/src/common/up_assert.c
@@ -72,177 +72,6 @@
  * Private Functions
  ****************************************************************************/
 
-/****************************************************************************
- * Name: up_getsp
- ****************************************************************************/
-
-/****************************************************************************
- * Name: getsp
- ****************************************************************************/
-
-static inline uint32 up_getsp(void)
-{
-  uint32 sp;
-
-  __asm__ __volatile__
-    (
-      "mov   r15, %0\n\t"
-      : "=&z" (sp)
-      :
-      : "memory"
-    );
-  return sp;
-}
-
-/****************************************************************************
- * Name: up_stackdump
- ****************************************************************************/
-
-#ifdef CONFIG_ARCH_STACKDUMP
-static void up_stackdump(uint32 sp, uint32 stack_base)
-{
-  uint32 stack ;
-
-  for (stack = sp & ~0x1f; stack < stack_base; stack += 32)
-    {
-      uint32 *ptr = (uint32*)stack;
-      lldbg("%08x: %08x %08x %08x %08x %08x %08x %08x %08x\n",
-             stack, ptr[0], ptr[1], ptr[2], ptr[3],
-             ptr[4], ptr[5], ptr[6], ptr[7]);
-    }
-}
-#else
-# define up_stackdump()
-#endif
-
-/****************************************************************************
- * Name: up_registerdump
- ****************************************************************************/
-
-#ifdef CONFIG_ARCH_STACKDUMP
-static inline void up_registerdump(void)
-{
-  uint32 *ptr = current_regs;
-
-  /* Are user registers available from interrupt processing? */
-
-  if (ptr)
-    {
-      /* Yes.. dump the interrupt registers */
-
-      lldbg("PC: %08x SR=%08x\n",
-            ptr[REG_PC], ptr[REG_SR]);
-
-      lldbg("PR: %08x GBR: %08x MACH: %08x MACL: %08x\n",
-            ptr[REG_PR], ptr[REG_GBR], ptr[REG_MACH], ptr[REG_MACL]);
-
-      lldbg("R%d: %08x %08x %08x %08x %08x %08x %08x %08x\n", 0,
-            ptr[REG_R0], ptr[REG_R1], ptr[REG_R2], ptr[REG_R3],
-            ptr[REG_R4], ptr[REG_R5], ptr[REG_R6], ptr[REG_R7]);
-
-      lldbg("R%d: %08x %08x %08x %08x %08x %08x %08x %08x\n", 8,
-            ptr[REG_R8], ptr[REG_R9], ptr[REG_R10], ptr[REG_R11],
-            ptr[REG_R12], ptr[REG_R13], ptr[REG_R14], ptr[REG_R15]);
-    }
-}
-#else
-# define up_registerdump()
-#endif
-
-/****************************************************************************
- * Name: up_dumpstate
- ****************************************************************************/
-
-#ifdef CONFIG_ARCH_STACKDUMP
-static void up_dumpstate(void)
-{
-  _TCB *rtcb        = (_TCB*)g_readytorun.head;
-  uint32 sp         = up_getsp();
-  uint32 ustackbase;
-  uint32 ustacksize;
-#if CONFIG_ARCH_INTERRUPTSTACK > 3
-  uint32 istackbase;
-  uint32 istacksize;
-#endif
-
-  /* Get the limits on the user stack memory */
-
-  if (rtcb->pid == 0)
-    {
-      ustackbase = g_heapbase - 4;
-      ustacksize = CONFIG_IDLETHREAD_STACKSIZE;
-    }
-  else
-    {
-      ustackbase = (uint32)rtcb->adj_stack_ptr;
-      ustacksize = (uint32)rtcb->adj_stack_size;
-    }
-
-  /* Get the limits on the interrupt stack memory */
-
-#if CONFIG_ARCH_INTERRUPTSTACK > 3
-  istackbase = (uint32)&g_userstack;
-  istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~3) - 4;
-
-  /* Show interrupt stack info */
-
-  lldbg("sp:     %08x\n", sp);
-  lldbg("IRQ stack:\n");
-  lldbg("  base: %08x\n", istackbase);
-  lldbg("  size: %08x\n", istacksize);
-
-  /* Does the current stack pointer lie within the interrupt
-   * stack?
-   */
-
-  if (sp <= istackbase && sp > istackbase - istacksize)
-    {
-      /* Yes.. dump the interrupt stack */
-
-      up_stackdump(sp, istackbase);
-
-      /* Extract the user stack pointer which should lie
-       * at the base of the interrupt stack.
-       */
-
-      sp = g_userstack;
-      lldbg("sp:     %08x\n", sp);
-    }
-
-  /* Show user stack info */
-
-  lldbg("User stack:\n");
-  lldbg("  base: %08x\n", ustackbase);
-  lldbg("  size: %08x\n", ustacksize);
-#else
-  lldbg("sp:         %08x\n", sp);
-  lldbg("stack base: %08x\n", ustackbase);
-  lldbg("stack size: %08x\n", ustacksize);
-#endif
-
-  /* Dump the user stack if the stack pointer lies within the allocated user
-   * stack memory.
-   */
-
-  if (sp > ustackbase || sp <= ustackbase - ustacksize)
-    {
-#if !defined(CONFIG_ARCH_INTERRUPTSTACK) || CONFIG_ARCH_INTERRUPTSTACK < 4
-      lldbg("ERROR: Stack pointer is not within allocated stack\n");
-#endif
-    }
-  else
-    {
-      up_stackdump(sp, ustackbase);
-    }
-
-  /* Then dump the registers (if available) */
-
-  up_registerdump();
-}
-#else
-# define up_dumpstate()
-#endif
-
 /****************************************************************************
  * Name: _up_assert
  ****************************************************************************/
diff --git a/arch/sh/src/common/up_internal.h b/arch/sh/src/common/up_internal.h
index 9241bb0e7f60cfb1db036444c7f6a245259f3c26..3c708a387c7a3e863b310ece0f7b72bf4dae087e 100644
--- a/arch/sh/src/common/up_internal.h
+++ b/arch/sh/src/common/up_internal.h
@@ -209,6 +209,14 @@ extern void up_usbuninitialize(void);
 # define up_usbuninitialize()
 #endif
 
+/* Defined in chip-specific logic */
+
+#ifdef CONFIG_ARCH_STACKDUMP
+extern void up_dumpstate(void);
+#else
+#  define up_dumpstate()
+#endif
+
 #endif /* __ASSEMBLY__ */
 
 #endif  /* ___ARCH_SH_SRC_COMMON_UP_INTERNAL_H */
diff --git a/arch/sh/src/m16c/Make.defs b/arch/sh/src/m16c/Make.defs
index 7c1645c8b16bce9837870d627d9876ba42f20992..5bb9d73beaced44274821a157374111b7f0f85c2 100644
--- a/arch/sh/src/m16c/Make.defs
+++ b/arch/sh/src/m16c/Make.defs
@@ -38,9 +38,9 @@ HEAD_ASRC	= m16c_head.S
 CMN_ASRCS	= 
 CMN_CSRCS	= up_allocateheap.c up_assert.c up_blocktask.c up_copystate.c \
 		  up_createstack.c up_doirq.c up_exit.c up_idle.c up_initialize.c \
-		  up_initialstate.c up_interruptcontext.c up_lowputs.c \
-		  up_mdelay.c up_puts.c up_releasepending.c up_releasestack.c \
-		  up_reprioritizertr.c up_udelay.c up_unblocktask.c up_usestack.c
+		  up_interruptcontext.c up_lowputs.c up_mdelay.c up_puts.c \
+		  up_releasepending.c up_releasestack.c up_reprioritizertr.c \
+		  up_udelay.c up_unblocktask.c up_usestack.c
 
 ifneq ($(CONFIG_DISABLE_SIGNALS),y)
 CMN_CSRCS	+= up_schedulesigaction.c up_sigdeliver.c
diff --git a/arch/sh/src/m16c/chip.h b/arch/sh/src/m16c/chip.h
index 580823f1b3a277235cda383507cc954311374083..89f07c97a952de397668425c9c0b8eca888efacb 100644
--- a/arch/sh/src/m16c/chip.h
+++ b/arch/sh/src/m16c/chip.h
@@ -232,4 +232,4 @@
 #define M16C_PUR2          0x003fe    /* Pull-up control 2 */
 #define M16C_PCR           0x003ff    /* Port control */
 
-#endif /* __ARCH_SH_SRC_M16C_CHIP_H */
\ No newline at end of file
+#endif /* __ARCH_SH_SRC_M16C_CHIP_H */
diff --git a/arch/sh/src/m16c/m16c_head.S b/arch/sh/src/m16c/m16c_head.S
index 753f98c203d2cf0df5d7d35d2516321ec26d8a60..944493911130034e8d456c74db5bccef50cd2210 100644
--- a/arch/sh/src/m16c/m16c_head.S
+++ b/arch/sh/src/m16c/m16c_head.S
@@ -91,12 +91,13 @@
  * 0x00400 - DATA		Size: Determined by linker
  *           BSS		Size: Determined by linker
  *           Idle stack		Size: CONFIG_IDLETHREAD_STACKSIZE
- *           Interrupt stack	Size: CONFIG_M16C_ISTACKSIZE
+ *           Interrupt stack	Size: CONFIG_ARCH_INTERRUPTSTACK
  *           Heap		Size: Everything remaining
  * 0x00bff - (end+1)
  */
 
 	.data
+#if 0
 	.globl	_g_stackbase
 	.type	_g_stackbase, object
 _g_stackbase:
@@ -107,16 +108,13 @@ _g_stackbase:
 	.globl	_g_istackbase
 	.type	_g_istackbase, object
 _g_istackbase:
-	.word	_enbss+CONFIG_IDLETHREAD_STACKSIZE-4
+	.word	_enbss+CONFIG_IDLETHREAD_STACKSIZE
 	.size	_g_istackbase, .-_g_istackbase
-
-
- * The heap extends from _g_heapbase to the end of RAM.
- */
+#endif
 	.globl	_g_heapbase
 	.type	_g_heapbase, object
 _g_heapbase:
-	.word	_enbss+CONFIG_IDLETHREAD_STACKSIZE+CONFIG_M16C_ISTACKSIZE
+	.word	_enbss+CONFIG_IDLETHREAD_STACKSIZE+CONFIG_ARCH_INTERRUPTSTACK
 	.size	_g_heapbase, .-_g_heapbase
 
 /************************************************************************************
@@ -346,9 +344,13 @@ _g_heapbase:
 	.type	__start, #function
 __start:
 
-/* Set the istack pointer */
+/* Set the interrupt and user stack pointers */
 
-	ldc	#_enbss, isp		/* Set idle thread stack pointer to the end of BSS */
+	mov.w	#_enbss, R0
+	ldc	R0, usp			/* Set the user stack pointer */
+	add.w	#CONFIG_IDLETHREAD_STACKSIZE, R0
+	ldc	R0, isp			/* Set interrupt thread stack pointer to the end of BSS */
+	fset	U			/* Set bit 7 (U) to select the user stack pointer */
 
 /* Set BCLK speed. At reset, the processor clock  (BLCK) defaults to a divisor of 8.
  * This sets clock to F1 (divide by 1) on XIN: BCLK = XIN frequency.
diff --git a/arch/sh/src/sh1/Make.defs b/arch/sh/src/sh1/Make.defs
index faa9d8562c0ec2c88756f67df390bc84ce6fb934..184ab142829c3de5aca44619aadf8dae06b1d144 100644
--- a/arch/sh/src/sh1/Make.defs
+++ b/arch/sh/src/sh1/Make.defs
@@ -47,7 +47,8 @@ CMN_CSRCS	+= up_schedulesigaction.c up_sigdeliver.c
 endif
 
 CHIP_ASRCS	= sh1_vector.S sh1_saveusercontext.S
-CHIP_CSRCS	= sh1_lowputc.c sh1_irq.c sh1_timerisr.c sh1_serial.c
+CHIP_CSRCS	= sh1_lowputc.c sh1_irq.c sh1_timerisr.c sh1_serial.c \
+		  sh1_initialstate.c sh1_dumpstate.c
 
 ifeq ($(CONFIG_USBDEV),y)
 CHIP_CSRCS	+= 
diff --git a/arch/sh/src/sh1/sh1_dumpstate.c b/arch/sh/src/sh1/sh1_dumpstate.c
new file mode 100755
index 0000000000000000000000000000000000000000..8d41adec42ecca70727fe5d0f7ad24152893fc51
--- /dev/null
+++ b/arch/sh/src/sh1/sh1_dumpstate.c
@@ -0,0 +1,240 @@
+/****************************************************************************
+ * arch/sh/src/sh1/sh1_assert.c
+ *
+ *   Copyright (C) 2008, 2009 Gregory Nutt. All rights reserved.
+ *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <sys/types.h>
+#include <debug.h>
+
+#include "up_internal.h"
+
+include <nuttx/config.h>
+
+#include <sys/types.h>
+#include <debug.h>
+
+#include <nuttx/irq.h>
+#include <nuttx/arch.h>
+
+#include "up_arch.h"
+#include "up_internal.h"
+
+#ifdef CONFIG_ARCH_STACKDUMP
+
+/****************************************************************************
+ * Definitions
+ ****************************************************************************/
+
+/* Output debug info if stack dump is selected -- even if 
+ * debug is not selected.
+ */
+
+#ifdef CONFIG_ARCH_STACKDUMP
+# undef  lldbg
+# define lldbg lib_lowprintf
+#endif
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: sh1_getsp
+ ****************************************************************************/
+
+static inline uint32 sh1_getsp(void)
+{
+  uint32 sp;
+
+  __asm__ __volatile__
+    (
+      "mov   r15, %0\n\t"
+      : "=&z" (sp)
+      :
+      : "memory"
+    );
+  return sp;
+}
+
+/****************************************************************************
+ * Name: sh1_stackdump
+ ****************************************************************************/
+
+static void sh1_stackdump(uint32 sp, uint32 stack_base)
+{
+  uint32 stack ;
+
+  for (stack = sp & ~0x1f; stack < stack_base; stack += 32)
+    {
+      uint32 *ptr = (uint32*)stack;
+      lldbg("%08x: %08x %08x %08x %08x %08x %08x %08x %08x\n",
+             stack, ptr[0], ptr[1], ptr[2], ptr[3],
+             ptr[4], ptr[5], ptr[6], ptr[7]);
+    }
+}
+
+/****************************************************************************
+ * Name: sh1_registerdump
+ ****************************************************************************/
+
+static inline void sh1_registerdump(void)
+{
+  uint32 *ptr = current_regs;
+
+  /* Are user registers available from interrupt processing? */
+
+  if (ptr)
+    {
+      /* Yes.. dump the interrupt registers */
+
+      lldbg("PC: %08x SR=%08x\n",
+            ptr[REG_PC], ptr[REG_SR]);
+
+      lldbg("PR: %08x GBR: %08x MACH: %08x MACL: %08x\n",
+            ptr[REG_PR], ptr[REG_GBR], ptr[REG_MACH], ptr[REG_MACL]);
+
+      lldbg("R%d: %08x %08x %08x %08x %08x %08x %08x %08x\n", 0,
+            ptr[REG_R0], ptr[REG_R1], ptr[REG_R2], ptr[REG_R3],
+            ptr[REG_R4], ptr[REG_R5], ptr[REG_R6], ptr[REG_R7]);
+
+      lldbg("R%d: %08x %08x %08x %08x %08x %08x %08x %08x\n", 8,
+            ptr[REG_R8], ptr[REG_R9], ptr[REG_R10], ptr[REG_R11],
+            ptr[REG_R12], ptr[REG_R13], ptr[REG_R14], ptr[REG_R15]);
+    }
+}
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: up_dumpstate
+ ****************************************************************************/
+
+void up_dumpstate(void)
+{
+  _TCB *rtcb        = (_TCB*)g_readytorun.head;
+  uint32 sp         = sh1_getsp();
+  uint32 ustackbase;
+  uint32 ustacksize;
+#if CONFIG_ARCH_INTERRUPTSTACK > 3
+  uint32 istackbase;
+  uint32 istacksize;
+#endif
+
+  /* Get the limits on the user stack memory */
+
+  if (rtcb->pid == 0)
+    {
+      ustackbase = g_heapbase - 4;
+      ustacksize = CONFIG_IDLETHREAD_STACKSIZE;
+    }
+  else
+    {
+      ustackbase = (uint32)rtcb->adj_stack_ptr;
+      ustacksize = (uint32)rtcb->adj_stack_size;
+    }
+
+  /* Get the limits on the interrupt stack memory */
+
+#if CONFIG_ARCH_INTERRUPTSTACK > 3
+  istackbase = (uint32)&g_userstack;
+  istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~3) - 4;
+
+  /* Show interrupt stack info */
+
+  lldbg("sp:     %08x\n", sp);
+  lldbg("IRQ stack:\n");
+  lldbg("  base: %08x\n", istackbase);
+  lldbg("  size: %08x\n", istacksize);
+
+  /* Does the current stack pointer lie within the interrupt
+   * stack?
+   */
+
+  if (sp <= istackbase && sp > istackbase - istacksize)
+    {
+      /* Yes.. dump the interrupt stack */
+
+      sh1_stackdump(sp, istackbase);
+
+      /* Extract the user stack pointer which should lie
+       * at the base of the interrupt stack.
+       */
+
+      sp = g_userstack;
+      lldbg("sp:     %08x\n", sp);
+    }
+
+  /* Show user stack info */
+
+  lldbg("User stack:\n");
+  lldbg("  base: %08x\n", ustackbase);
+  lldbg("  size: %08x\n", ustacksize);
+#else
+  lldbg("sp:         %08x\n", sp);
+  lldbg("stack base: %08x\n", ustackbase);
+  lldbg("stack size: %08x\n", ustacksize);
+#endif
+
+  /* Dump the user stack if the stack pointer lies within the allocated user
+   * stack memory.
+   */
+
+  if (sp > ustackbase || sp <= ustackbase - ustacksize)
+    {
+#if !defined(CONFIG_ARCH_INTERRUPTSTACK) || CONFIG_ARCH_INTERRUPTSTACK < 4
+      lldbg("ERROR: Stack pointer is not within allocated stack\n");
+#endif
+    }
+  else
+    {
+      sh1_stackdump(sp, ustackbase);
+    }
+
+  /* Then dump the registers (if available) */
+
+  sh1_registerdump();
+}
+
+#endif /* CONFIG_ARCH_STACKDUMP */
diff --git a/arch/sh/src/common/up_initialstate.c b/arch/sh/src/sh1/sh1_initialstate.c
similarity index 97%
rename from arch/sh/src/common/up_initialstate.c
rename to arch/sh/src/sh1/sh1_initialstate.c
index d9de84a1585c709052ed83f8f139a88b3ab9efb1..8ad4290e148a198edec33eba37df99d3c7f4cd5e 100644
--- a/arch/sh/src/common/up_initialstate.c
+++ b/arch/sh/src/sh1/sh1_initialstate.c
@@ -1,7 +1,7 @@
 /****************************************************************************
- *  arch/sh/src/common/up_initialstate.c
+ *  arch/sh/src/sh1/sh1_initialstate.c
  *
- *   Copyright (C) 2008 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2008, 2009 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/configs/skp16c26/include/board.h b/configs/skp16c26/include/board.h
index 5f694f5deef9d752190752f05713c43c3f709ad2..b087ec0721821bc3ccd04a09c52c0de48e66f27c 100644
--- a/configs/skp16c26/include/board.h
+++ b/configs/skp16c26/include/board.h
@@ -44,8 +44,6 @@
 #ifndef __ASSEMBLY__
 # include <sys/types.h>
 #endif
-#include "sfr262.h"  		/* M16C/26 special function register definitions */
-#include "skp_lcd.h"  		/* SKP LCD function definitions */
 
 /************************************************************************************
  * Definitions
@@ -80,9 +78,6 @@
 #define LED_ON      	0
 #define LED_OFF     	1
 
-#define ENABLE_IRQ   	{_asm(" FSET I");}
-#define DISABLE_IRQ		{_asm(" FCLR I");}
-
 /* Use these macros for switch inputs */
 
 #define ENABLE_SWITCHES {S1_DDR = 0; S2_DDR = 0; S3_DDR = 0;}
diff --git a/configs/skp16c26/ostest/Make.defs b/configs/skp16c26/ostest/Make.defs
index a1267dbf0f918f44e2b212c223f729de92788a26..7225216e16866a50fb0a16273a4bf256a42dcda7 100644
--- a/configs/skp16c26/ostest/Make.defs
+++ b/configs/skp16c26/ostest/Make.defs
@@ -53,7 +53,7 @@ else
   ARCHOPTIMIZATION	= -Os -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= --m16c -msoft-float -fno-builtin
+ARCHCPUFLAGS		= -mcpu=m16c -fno-builtin
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
diff --git a/configs/skp16c26/ostest/defconfig b/configs/skp16c26/ostest/defconfig
index 1f515adbaecfa326ab807d83b771ba48d6904493..c194f02f6e5204ce8ad2c15cefca4629b6d86cb2 100644
--- a/configs/skp16c26/ostest/defconfig
+++ b/configs/skp16c26/ostest/defconfig
@@ -47,9 +47,9 @@
 # CONFIG_ARCH_BOARD_name - for use in C code
 # CONFIG_ENDIAN_BIG - define if big endian (default is little endian)
 # CONFIG_BOARD_LOOPSPERMSEC - for delay loops
-# CONFIG_DRAM_SIZE - Describes the installed DRAM.
-# CONFIG_DRAM_START - The start address of DRAM (physical)
-# CONFIG_DRAM_VSTART - The startaddress of DRAM (virtual)
+# CONFIG_DRAM_SIZE - Describes the internal SRAM.
+# CONFIG_DRAM_START - The start address of internal SRAM
+# CONFIG_DRAM_END - The end+1 address of internal SRAM
 # CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
 #   stack. If defined, this symbol is the size of the interrupt
 #   stack in bytes.  If not defined, the user task stacks will be
@@ -63,12 +63,11 @@ CONFIG_ARCH_CHIP_M30262F8=y
 CONFIG_ARCH_BOARD=skp16c26
 CONFIG_ARCH_BOARD_SKP16C26=y
 CONFIG_ENDIAN_BIG=y
+CONFIG_DRAM_SIZE=0x00800
+CONFIG_DRAM_START=0x00400
+CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
 CONFIG_BOARD_LOOPSPERMSEC=16945
-CONFIG_DRAM_SIZE=0x01000000
-CONFIG_DRAM_START=0x01000000
-CONFIG_DRAM_VSTART=0x00000000
-CONFIG_DRAM_NUTTXENTRY=0x01008000
-CONFIG_ARCH_INTERRUPTSTACK=0
+CONFIG_ARCH_INTERRUPTSTACK=128
 CONFIG_ARCH_STACKDUMP=y
 
 #
@@ -87,12 +86,12 @@ CONFIG_ARCH_STACKDUMP=y
 #
 CONFIG_UART0_SERIAL_CONSOLE=y
 CONFIG_UART1_SERIAL_CONSOLE=n
-CONFIG_UART0_TXBUFSIZE=256
-CONFIG_UART1_TXBUFSIZE=256
-CONFIG_UART0_RXBUFSIZE=256
-CONFIG_UART1_RXBUFSIZE=256
-CONFIG_UART0_BAUD=115200
-CONFIG_UART1_BAUD=115200
+CONFIG_UART0_TXBUFSIZE=64
+CONFIG_UART1_TXBUFSIZE=64
+CONFIG_UART0_RXBUFSIZE=64
+CONFIG_UART1_RXBUFSIZE=64
+CONFIG_UART0_BAUD=9600
+CONFIG_UART1_BAUD=9600
 CONFIG_UART0_BITS=8
 CONFIG_UART1_BITS=8
 CONFIG_UART0_PARITY=0
@@ -160,9 +159,9 @@ CONFIG_ARCH_LOWPUTC=y
 CONFIG_RR_INTERVAL=200
 CONFIG_SCHED_INSTRUMENTATION=n
 CONFIG_TASK_NAME_SIZE=0
-CONFIG_START_YEAR=2008
-CONFIG_START_MONTH=8
-CONFIG_START_DAY=29
+CONFIG_START_YEAR=2009
+CONFIG_START_MONTH=2
+CONFIG_START_DAY=8
 CONFIG_JULIAN_TIME=n
 CONFIG_DEV_CONSOLE=y
 CONFIG_DEV_LOWCONSOLE=n