diff --git a/arch/avr/include/at90usb/irq.h b/arch/avr/include/at90usb/irq.h
index 6d2b9166c40c8d824b5542819cda620c4d829ef6..c2f9db4e69b18b415f0fe06caec0accde2831c61 100644
--- a/arch/avr/include/at90usb/irq.h
+++ b/arch/avr/include/at90usb/irq.h
@@ -104,23 +104,6 @@
  ****************************************************************************/
 
 #ifndef __ASSEMBLY__
-
-/* Save the current interrupt enable state & disable all interrupts */
-
-static inline irqstate_t irqsave(void)
-{
-  /* Needs to return the current interrupt state, then disable interrupts */
-#warning "Not implemented"
-  return 0
-}
-
-/* Restore saved interrupt state */
-
-static inline void irqrestore(irqstate_t flags)
-{
-  /* Based on the provided interrupt flags, conditionally enable interrupts */
-#warning "Not implemented"
-}
 #endif /* __ASSEMBLY__ */
 
 /****************************************************************************
diff --git a/arch/avr/include/atmega/irq.h b/arch/avr/include/atmega/irq.h
index ea5b0206046402e86af4c41c6d294186bc3a0bd7..aabf227ee0eb85983d9965f1002e577c6de09095 100644
--- a/arch/avr/include/atmega/irq.h
+++ b/arch/avr/include/atmega/irq.h
@@ -101,23 +101,6 @@
  ****************************************************************************/
 
 #ifndef __ASSEMBLY__
-
-/* Save the current interrupt enable state & disable all interrupts */
-
-static inline irqstate_t irqsave(void)
-{
-  /* Needs to return the current interrupt state, then disable interrupts */
-#warning "Not implemented"
-  return 0
-}
-
-/* Restore saved interrupt state */
-
-static inline void irqrestore(irqstate_t flags)
-{
-  /* Based on the provided interrupt flags, conditionally enable interrupts */
-#warning "Not implemented"
-}
 #endif /* __ASSEMBLY__ */
 
 /****************************************************************************
diff --git a/arch/avr/include/avr/irq.h b/arch/avr/include/avr/irq.h
index c18f6c4b89a33bb605d42eae289c7611501474f3..07b875a0aee72f5533c7ef828d6b9ee2bef62b4e 100644
--- a/arch/avr/include/avr/irq.h
+++ b/arch/avr/include/avr/irq.h
@@ -98,7 +98,7 @@ struct xcptcontext
 static inline irqstate_t getsreg(void)
 {
   irqstate_t sreg;
-  asm volatile ("in %0, __SREG__" : =r (sreg) :: );
+  asm volatile ("in %0, __SREG__" : "=r" (sreg) :: );
   return sreg;
 }
 
@@ -127,7 +127,7 @@ static inline irqstate_t irqsave(void)
   asm volatile
     (
       "\tin %0, __SREG__\n"
-	  "\tcli\n
+	  "\tcli\n"
 	  : "=&r" (sreg) :: 
 	);
   return sreg;
@@ -137,7 +137,7 @@ static inline irqstate_t irqsave(void)
 
 static inline void irqrestore(irqstate_t flags)
 {
-  asm volatile ("out __SREG__, %s" : : "r" (flags) : );
+  asm volatile ("out __SREG__, %0" : : "r" (flags) : );
 }
 #endif /* __ASSEMBLY__ */
 
diff --git a/arch/avr/src/Makefile b/arch/avr/src/Makefile
index 258501b7661c146a180bf61e0e96485f6c56eb99..1f8c41e7c2800e4ebaed611f1958011b60af7ade 100644
--- a/arch/avr/src/Makefile
+++ b/arch/avr/src/Makefile
@@ -33,26 +33,30 @@
 #
 ############################################################################
 
+-include $(TOPDIR)/.config
 -include $(TOPDIR)/Make.defs
 -include chip/Make.defs
 
 ARCH_SRCDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src
 ifeq ($(CONFIG_ARCH_AVR32),y)
 ARCH_SUBDIR	= avr32
+endif
 ifeq ($(CONFIG_ARCH_AVR),y)
 ARCH_SUBDIR	= avr
 endif
 
 ifeq ($(WINTOOL),y)
   NUTTX		= "${shell cygpath -w $(TOPDIR)/nuttx}"
-  INCLUDES	= -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
-  		   -I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
-		   -I "${shell cygpath -w $(ARCH_SRCDIR)/$(ARCH_SUBDIR)}" \
-		   -I "${shell cygpath -w $(TOPDIR)/sched}"
+  INCLUDES	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}"
+  INCLUDES	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/common}"
+  INCLUDES	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/$(ARCH_SUBDIR)}"
+  INCLUDES	+= -I "${shell cygpath -w $(TOPDIR)/sched}"
 else
-  NUTTX		= $(TOPDIR)/nuttx
-  INCLUDES	= -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common \
-		   -I$(ARCH_SRCDIR)/$(ARCH_SUBDIR) -I$(TOPDIR)/sched
+  NUTTX		= "$(TOPDIR)/nuttx"
+  INCLUDES	+= -I "$(ARCH_SRCDIR)/chip"
+  INCLUDES	+= -I "$(ARCH_SRCDIR)/common"
+  INCLUDES	+= -I "$(ARCH_SRCDIR)/$(ARCH_SUBDIR)"
+  INCLUDES	+= -I "$(TOPDIR)/sched"
 endif
 
 CPPFLAGS	+= $(INCLUDES)
diff --git a/arch/avr/src/at90usb/Make.defs b/arch/avr/src/at90usb/Make.defs
index 48973c89879d626b8ea36e9fa463ca5779ec8698..bc91ceb668c34df843911e9c6b1950b5a8d1d3ad 100644
--- a/arch/avr/src/at90usb/Make.defs
+++ b/arch/avr/src/at90usb/Make.defs
@@ -39,26 +39,21 @@ HEAD_ASRC	= at90usb_head.S
 
 # Common AVR files
 
-CMN_ASRCS	= up_exceptions.S up_fullcontextrestore.S up_switchcontext.S
-CMN_CSRCS	= up_assert.c up_allocateheap.c up_blocktask.c up_copystate.c \
-		  up_createstack.c up_mdelay.c up_udelay.c up_exit.c up_idle.c \
-		  up_initialize.c up_initialstate.c up_interruptcontext.c \
-		  up_modifyreg8.c up_modifyreg16.c up_modifyreg32.c \
-		  up_releasepending.c up_releasestack.c up_reprioritizertr.c \
-		  up_schedulesigaction.c up_sigdeliver.c up_unblocktask.c \
-		  up_usestack.c up_doirq.c
+CMN_ASRCS	= 
+CMN_CSRCS	= up_allocateheap.c up_createstack.c up_exit.c up_idle.c \
+			  up_initialize.c up_interruptcontext.c up_lowputs.c up_mdelay.c \
+			  up_modifyreg8.c up_modifyreg16.c up_modifyreg32.c up_puts.c \
+			  up_releasestack.c up_udelay.c up_usestack.c
 
-# Required ATMEGA files
+# Required aT90USB files
 
 CHIP_ASRCS	=
-CHIP_CSRCS	= at90usb_clkinit.c at90usb_gpio.c at90usb_irq.c \
-		  at90usb_lowconsole.c at90usb_lowinit.c at90usb_serial.c \
-		  at90usb_timerisr.c
+CHIP_CSRCS	= 
 
-# Configuration-dependent ATMEGA files
+# Configuration-dependent aT90USB files
 
 ifeq ($(CONFIG_AVR_GPIOIRQ),y)
-CHIP_CSRCS	+= at90usb_gpioirq.c
+CHIP_CSRCS	+= 
 endif
 
 
diff --git a/arch/avr/src/at90usb/at90usb_config.h b/arch/avr/src/at90usb/at90usb_config.h
new file mode 100644
index 0000000000000000000000000000000000000000..a39a6b5e280c91050b403ef436fde83898b0ee91
--- /dev/null
+++ b/arch/avr/src/at90usb/at90usb_config.h
@@ -0,0 +1,62 @@
+/************************************************************************************
+ * arch/avr/src/at90usb/at90usb_config.h
+ *
+ *   Copyright (C) 2011 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.
+ *
+ ************************************************************************************/
+
+#ifndef __ARCH_AVR_SRC_ATMEGA_ATMEGA_CONFIG_H
+#define __ARCH_AVR_SRC_ATMEGA_ATMEGA_CONFIG_H
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+#include <nuttx/config.h>
+
+/************************************************************************************
+ * Pre-processor Definitions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Types
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Data
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Functions
+ ************************************************************************************/
+
+#endif /* __ARCH_AVR_SRC_ATMEGA_ATMEGA_CONFIG_H */
+
diff --git a/arch/avr/src/at90usb/at90usb_head.S b/arch/avr/src/at90usb/at90usb_head.S
index a6745d866a6e2447cfb988ef0d71980c5e0278c4..8c9c18bd2737269d8656036f622daa24d0d5a120 100755
--- a/arch/avr/src/at90usb/at90usb_head.S
+++ b/arch/avr/src/at90usb/at90usb_head.S
@@ -52,60 +52,60 @@
  * External Symbols
  ****************************************************************************/
 
-	.file		"up_nommuhead.S"
-	.global		_sbss			/* Start of .bss.  Defined by ld.script */
-	.global		_ebss			/* End of .bss.  Defined by ld.script */
-	.global		_sdata			/* Start of .data section in RAM */
-	.global		_edata			/* End of .data section in RAM */
-	.global		_eronly			/* Start of .data section in FLASH */
-	.global		up_lowinit		/* Perform low level initialization */
-	.global		os_start		/* NuttX entry point */
-
-	.global		vectortab
-	.global		at90usb_int0		/* External interrupt request 0 */
-	.global		at90usb_int1		/* External interrupt request 1 */
-	.global		at90usb_int2		/* External interrupt request 2 */
-	.global		at90usb_int3		/* External interrupt request 3 */
-	.global		at90usb_int4		/* External interrupt request 4 */
-	.global		at90usb_int5		/* External interrupt request 5 */
-	.global		at90usb_int6		/* External interrupt request 6 */
-	.global		at90usb_int7		/* External interrupt request 7 */
-	.global		at90usb_pcint0		/* PCINT0 Pin Change Interrupt Request 0 */
-	.global		at90usb_usbgen		/* USB General USB General Interrupt request */
-	.global		at90usb_usbep		/* USB Endpoint/Pipe USB ENdpoint/Pipe Interrupt request */
-	.global		at90usb_wdt			/* Watchdog Time-out Interrupt */
-	.global		at90usb_t2compa		/* TIMER2 COMPA Timer/Counter2 Compare Match A */
-	.global		at90usb_t2compb		/* TIMER2 COMPB Timer/Counter2 Compare Match B */
-	.global		at90usb_t2ovf		/* TIMER2 OVF Timer/Counter2 Overflow */
-	.global		at90usb_t1capt		/* TIMER1 CAPT Timer/Counter1 Capture Event */
-	.global		at90usb_t1compa		/* TIMER1 COMPA Timer/Counter1 Compare Match A */
-	.global		at90usb_t1compb		/* TIMER1 COMPB Timer/Counter1 Compare Match B */
-	.global		at90usb_t1compc		/* TIMER1 COMPC Timer/Counter1 Compare Match c */
-	.global		at90usb_t1ovf		/* TIMER1 OVF Timer/Counter1 Overflow */
-	.global		at90usb_t0compa		/* TIMER0 COMPA Timer/Counter0 Compare Match A */
-	.global		at90usb_t0compb		/* TIMER0 COMPB Timer/Counter0 Compare Match B */
-	.global		at90usb_t0ovf		/* TIMER0 OVF Timer/Counter0 Overflow */
-	.global		at90usb_spi			/* STC SPI Serial Transfer Complete */
-	.global		at90usb_u1rx		/* USART1 Rx Complete */
-	.global		at90usb_u1dre		/* USART1 Data Register Empty */
-	.global		at90usb_u1tx		/* USART1 Tx Complete */
-	.global		at90usb_anacomp		/* ANALOG COMP Analog Comparator */
-	.global		at90usb_adc			/* ADC Conversion Complete */
-	.global		at90usb_ee			/* EEPROM Ready */
-	.global		at90usb_t3capt		/* TIMER3 CAPT Timer/Counter3 Capture Event */
-	.global		at90usb_t3compa		/* TIMER3 COMPA Timer/Counter3 Compare Match A */
-	.global		at90usb_t3compb		/* TIMER3 COMPB Timer/Counter3 Compare Match B */
-	.global		at90usb_t3compc		/* TIMER3 COMPC Timer/Counter3 Compare Match C */
-	.global		at90usb_t3ovf		/* TIMER3 OVF Timer/Counter3 Overflow */
-	.global		at90usb_twi			/* TWI Two-wire Serial Interface */
-	.global		at90usb_spmrdy		/* Store Program Memory Ready */
+	.file	"up_nommuhead.S"
+	.global	_sbss				/* Start of .bss.  Defined by ld.script */
+	.global	_ebss				/* End of .bss.  Defined by ld.script */
+	.global	_sdata				/* Start of .data section in RAM */
+	.global	_edata				/* End of .data section in RAM */
+	.global	_eronly				/* Start of .data section in FLASH */
+	.global	up_lowinit			/* Perform low level initialization */
+	.global	os_start			/* NuttX entry point */
+
+	.global	vectortab
+	.global	at90usb_int0		/* External interrupt request 0 */
+	.global	at90usb_int1		/* External interrupt request 1 */
+	.global	at90usb_int2		/* External interrupt request 2 */
+	.global	at90usb_int3		/* External interrupt request 3 */
+	.global	at90usb_int4		/* External interrupt request 4 */
+	.global	at90usb_int5		/* External interrupt request 5 */
+	.global	at90usb_int6		/* External interrupt request 6 */
+	.global	at90usb_int7		/* External interrupt request 7 */
+	.global	at90usb_pcint0		/* PCINT0 Pin Change Interrupt Request 0 */
+	.global	at90usb_usbgen		/* USB General USB General Interrupt request */
+	.global	at90usb_usbep		/* USB Endpoint/Pipe USB ENdpoint/Pipe Interrupt request */
+	.global	at90usb_wdt			/* Watchdog Time-out Interrupt */
+	.global	at90usb_t2compa		/* TIMER2 COMPA Timer/Counter2 Compare Match A */
+	.global	at90usb_t2compb		/* TIMER2 COMPB Timer/Counter2 Compare Match B */
+	.global	at90usb_t2ovf		/* TIMER2 OVF Timer/Counter2 Overflow */
+	.global	at90usb_t1capt		/* TIMER1 CAPT Timer/Counter1 Capture Event */
+	.global	at90usb_t1compa		/* TIMER1 COMPA Timer/Counter1 Compare Match A */
+	.global	at90usb_t1compb		/* TIMER1 COMPB Timer/Counter1 Compare Match B */
+	.global	at90usb_t1compc		/* TIMER1 COMPC Timer/Counter1 Compare Match c */
+	.global	at90usb_t1ovf		/* TIMER1 OVF Timer/Counter1 Overflow */
+	.global	at90usb_t0compa		/* TIMER0 COMPA Timer/Counter0 Compare Match A */
+	.global	at90usb_t0compb		/* TIMER0 COMPB Timer/Counter0 Compare Match B */
+	.global	at90usb_t0ovf		/* TIMER0 OVF Timer/Counter0 Overflow */
+	.global	at90usb_spi			/* STC SPI Serial Transfer Complete */
+	.global	at90usb_u1rx		/* USART1 Rx Complete */
+	.global	at90usb_u1dre		/* USART1 Data Register Empty */
+	.global	at90usb_u1tx		/* USART1 Tx Complete */
+	.global	at90usb_anacomp		/* ANALOG COMP Analog Comparator */
+	.global	at90usb_adc			/* ADC Conversion Complete */
+	.global	at90usb_ee			/* EEPROM Ready */
+	.global	at90usb_t3capt		/* TIMER3 CAPT Timer/Counter3 Capture Event */
+	.global	at90usb_t3compa		/* TIMER3 COMPA Timer/Counter3 Compare Match A */
+	.global	at90usb_t3compb		/* TIMER3 COMPB Timer/Counter3 Compare Match B */
+	.global	at90usb_t3compc		/* TIMER3 COMPC Timer/Counter3 Compare Match C */
+	.global	at90usb_t3ovf		/* TIMER3 OVF Timer/Counter3 Overflow */
+	.global	at90usb_twi			/* TWI Two-wire Serial Interface */
+	.global	at90usb_spmrdy		/* Store Program Memory Ready */
 
 /****************************************************************************
  * Macros
  ****************************************************************************/
 
-	.macro		vector name
-	jmp			\name
+	.macro	vector name
+	jmp		\name
 	.endm
 
 /****************************************************************************
@@ -116,90 +116,106 @@
  * vector.
  */
 
-	.section	.vectors, "ax", @progbits
-	.func		vectortab
+	.section .vectors, "ax", @progbits
+	.func	vectortab
 vectortab:
-	jmp			__start				/*  0: Vector 0 is the reset vector */
-	vector		at90usb_int0		/*  1: External interrupt request 0 */
-	vector		at90usb_int1		/*  2: External interrupt request 1 */
-	vector		at90usb_int2		/*  3: External interrupt request 2 */
-	vector		at90usb_int3		/*  4: External interrupt request 3 */
-	vector		at90usb_int4		/*  5: External interrupt request 4 */
-	vector		at90usb_int5		/*  6: External interrupt request 5 */
-	vector		at90usb_int6		/*  7: External interrupt request 6 */
-	vector		at90usb_int7		/*  8: External interrupt request 7 */
-	vector		at90usb_pcint0		/*  9: PCINT0 Pin Change Interrupt Request 0 */
-	vector		at90usb_usbgen		/* 10: USB General USB General Interrupt request */
-	vector		at90usb_usbep		/* 11: USB Endpoint/Pipe USB ENdpoint/Pipe Interrupt request */
-	vector		at90usb_wdt			/* 12: Watchdog Time-out Interrupt */
-	vector		at90usb_t2compa		/* 13: TIMER2 COMPA Timer/Counter2 Compare Match A */
-	vector		at90usb_t2compb		/* 14: TIMER2 COMPB Timer/Counter2 Compare Match B */
-	vector		at90usb_t2ovf		/* 15: TIMER2 OVF Timer/Counter2 Overflow */
-	vector		at90usb_t1capt		/* 16: TIMER1 CAPT Timer/Counter1 Capture Event */
-	vector		at90usb_t1compa		/* 17: TIMER1 COMPA Timer/Counter1 Compare Match A */
-	vector		at90usb_t1compb		/* 18: TIMER1 COMPB Timer/Counter1 Compare Match B */
-	vector		at90usb_t1compc		/* 19: TIMER1 COMPC Timer/Counter1 Compare Match c */
-	vector		at90usb_t1ovf		/* 20: TIMER1 OVF Timer/Counter1 Overflow */
-	vector		at90usb_t0compa		/* 21: TIMER0 COMPA Timer/Counter0 Compare Match A */
-	vector		at90usb_t0compb		/* 22: TIMER0 COMPB Timer/Counter0 Compare Match B */
-	vector		at90usb_t0ovf		/* 23: TIMER0 OVF Timer/Counter0 Overflow */
-	vector		at90usb_spi			/* 24: STC SPI Serial Transfer Complete */
-	vector		at90usb_u1rx		/* 25: USART1 Rx Complete */
-	vector		at90usb_u1dre		/* 26: USART1 Data Register Empty */
-	vector		at90usb_u1tx		/* 27: USART1 Tx Complete */
-	vector		at90usb_anacomp		/* 28: ANALOG COMP Analog Comparator */
-	vector		at90usb_adc			/* 29: ADC Conversion Complete */
-	vector		at90usb_ee			/* 30: EEPROM Ready */
-	vector		at90usb_t3capt		/* 31: TIMER3 CAPT Timer/Counter3 Capture Event */
-	vector		at90usb_t3compa		/* 32: TIMER3 COMPA Timer/Counter3 Compare Match A */
-	vector		at90usb_t3compb		/* 33: TIMER3 COMPB Timer/Counter3 Compare Match B */
-	vector		at90usb_t3compc		/* 34: TIMER3 COMPC Timer/Counter3 Compare Match C */
-	vector		at90usb_t3ovf		/* 35: TIMER3 OVF Timer/Counter3 Overflow */
-	vector		at90usb_twi			/* 36: TWI Two-wire Serial Interface */
-	vector		at90usb_spmrdy		/* 37: Store Program Memory Ready */
+	jmp		__start				/*  0: Vector 0 is the reset vector */
+	vector	at90usb_int0		/*  1: External interrupt request 0 */
+	vector	at90usb_int1		/*  2: External interrupt request 1 */
+	vector	at90usb_int2		/*  3: External interrupt request 2 */
+	vector	at90usb_int3		/*  4: External interrupt request 3 */
+	vector	at90usb_int4		/*  5: External interrupt request 4 */
+	vector	at90usb_int5		/*  6: External interrupt request 5 */
+	vector	at90usb_int6		/*  7: External interrupt request 6 */
+	vector	at90usb_int7		/*  8: External interrupt request 7 */
+	vector	at90usb_pcint0		/*  9: PCINT0 Pin Change Interrupt Request 0 */
+	vector	at90usb_usbgen		/* 10: USB General USB General Interrupt request */
+	vector	at90usb_usbep		/* 11: USB Endpoint/Pipe USB ENdpoint/Pipe Interrupt request */
+	vector	at90usb_wdt			/* 12: Watchdog Time-out Interrupt */
+	vector	at90usb_t2compa		/* 13: TIMER2 COMPA Timer/Counter2 Compare Match A */
+	vector	at90usb_t2compb		/* 14: TIMER2 COMPB Timer/Counter2 Compare Match B */
+	vector	at90usb_t2ovf		/* 15: TIMER2 OVF Timer/Counter2 Overflow */
+	vector	at90usb_t1capt		/* 16: TIMER1 CAPT Timer/Counter1 Capture Event */
+	vector	at90usb_t1compa		/* 17: TIMER1 COMPA Timer/Counter1 Compare Match A */
+	vector	at90usb_t1compb		/* 18: TIMER1 COMPB Timer/Counter1 Compare Match B */
+	vector	at90usb_t1compc		/* 19: TIMER1 COMPC Timer/Counter1 Compare Match c */
+	vector	at90usb_t1ovf		/* 20: TIMER1 OVF Timer/Counter1 Overflow */
+	vector	at90usb_t0compa		/* 21: TIMER0 COMPA Timer/Counter0 Compare Match A */
+	vector	at90usb_t0compb		/* 22: TIMER0 COMPB Timer/Counter0 Compare Match B */
+	vector	at90usb_t0ovf		/* 23: TIMER0 OVF Timer/Counter0 Overflow */
+	vector	at90usb_spi			/* 24: STC SPI Serial Transfer Complete */
+	vector	at90usb_u1rx		/* 25: USART1 Rx Complete */
+	vector	at90usb_u1dre		/* 26: USART1 Data Register Empty */
+	vector	at90usb_u1tx		/* 27: USART1 Tx Complete */
+	vector	at90usb_anacomp		/* 28: ANALOG COMP Analog Comparator */
+	vector	at90usb_adc			/* 29: ADC Conversion Complete */
+	vector	at90usb_ee			/* 30: EEPROM Ready */
+	vector	at90usb_t3capt		/* 31: TIMER3 CAPT Timer/Counter3 Capture Event */
+	vector	at90usb_t3compa		/* 32: TIMER3 COMPA Timer/Counter3 Compare Match A */
+	vector	at90usb_t3compb		/* 33: TIMER3 COMPB Timer/Counter3 Compare Match B */
+	vector	at90usb_t3compc		/* 34: TIMER3 COMPC Timer/Counter3 Compare Match C */
+	vector	at90usb_t3ovf		/* 35: TIMER3 OVF Timer/Counter3 Overflow */
+	vector	at90usb_twi			/* 36: TWI Two-wire Serial Interface */
+	vector	at90usb_spmrdy		/* 37: Store Program Memory Ready */
 	.endfunc
 
 /****************************************************************************
  * Reset Entry Point
  ****************************************************************************/
 
-	.section	.init, "ax", @progbits
-	.func		__start
+	.section .init, "ax", @progbits
+	.func	__start
 __start:
 
-	/* Initialize the IDLE thread stack */
+	/* Clear the zero register, clear the status register and initialize the
+	 * IDLE thread stack
+	 */
 
-	clr			r1
-	out			_SFR_IO_ADDR(SREG), r1
-	ldi			r28, lo8(STACKBASE)
-	ldi			r29, hi8(STACKBASE)
-	out			_SFR_IO_ADDR(SPH), r29
-	out			_SFR_IO_ADDR(SPL), r28
+	clr		r1
+	out		_SFR_IO_ADDR(SREG), r1
+	ldi		r28, lo8(STACKBASE)
+	ldi		r29, hi8(STACKBASE)
+	out		_SFR_IO_ADDR(SPH), r29
+	out		_SFR_IO_ADDR(SPL), r28
 
 	/* Copy initial global data values from FLASH into RAM */
 
-	ldi			r17, hi8(_edata)
-	ldi			r26, lo8(_sdata)
-	ldi			r27, hi8(_sdata)
-	ldi			r30, lo8(_eronly)
-	ldi			r31, hi8(_eronly)
-	ldi			r16, hh8(_eronly)
-	out			_SFR_IO_ADDR(RAMPZ), r16
-	rjmp		.Lcopystart
+	ldi		r17, hi8(_edata)
+	ldi		r26, lo8(_sdata)
+	ldi		r27, hi8(_sdata)
+	ldi		r30, lo8(_eronly)
+	ldi		r31, hi8(_eronly)
+	ldi		r16, hh8(_eronly)
+	out		_SFR_IO_ADDR(RAMPZ), r16
+	rjmp	.Lcopystart
 
 .Lcopyloop:
-	elpm		r0, Z+
-	st			X+, r0
+	elpm	r0, Z+
+	st		X+, r0
 
 .Lcopystart:
-	cpi			r26, lo8(__data_end)
-	cpc			r27, r17
-	brne		.Lcopyloop
+	cpi		r26, lo8(_edata)
+	cpc		r27, r17
+	brne	.Lcopyloop
+
+	/* Clear uninitialized data */
+
+	ldi		r17, hi8(_ebss)
+	ldi		r26, lo8(_sbss)
+	ldi		r27, hi8(_sbss)
+	rjmp	.Lclearstart
+
+.Lclearloop:
+	st		X+, r1
+.Lclearstart:
+	cpi		r26, lo8(_ebss)
+	cpc		r27, r17
+	brne	.Lclearloop
 
 	/* Now start NuttX */
 
-	call		os_start		/* Start NuttX */
-	jmp			exit
+	call	os_start		/* Start NuttX */
+	jmp		exit
 	.endfunc
 
 /****************************************************************************
diff --git a/arch/avr/src/atmega/Make.defs b/arch/avr/src/atmega/Make.defs
index 932f23a2d19c05597286f51acac783d5aa066344..fd01dfdb57375dfeffb6c8b887e4a63743b2c026 100644
--- a/arch/avr/src/atmega/Make.defs
+++ b/arch/avr/src/atmega/Make.defs
@@ -39,26 +39,21 @@ HEAD_ASRC	= atmega_head.S
 
 # Common AVR files
 
-CMN_ASRCS	= up_exceptions.S up_fullcontextrestore.S up_switchcontext.S
-CMN_CSRCS	= up_assert.c up_allocateheap.c up_blocktask.c up_copystate.c \
-		  up_createstack.c up_mdelay.c up_udelay.c up_exit.c up_idle.c \
-		  up_initialize.c up_initialstate.c up_interruptcontext.c \
-		  up_modifyreg8.c up_modifyreg16.c up_modifyreg32.c \
-		  up_releasepending.c up_releasestack.c up_reprioritizertr.c \
-		  up_schedulesigaction.c up_sigdeliver.c up_unblocktask.c \
-		  up_usestack.c up_doirq.c
+CMN_ASRCS	= 
+CMN_CSRCS	= up_allocateheap.c up_createstack.c up_exit.c up_idle.c \
+			  up_initialize.c up_interruptcontext.c up_lowputs.c up_mdelay.c \
+			  up_modifyreg8.c up_modifyreg16.c up_modifyreg32.c up_puts.c \
+			  up_releasestack.c up_udelay.c up_usestack.c
 
 # Required ATMEGA files
 
 CHIP_ASRCS	=
-CHIP_CSRCS	= atmega_clkinit.c atmega_gpio.c atmega_irq.c \
-		  atmega_lowconsole.c atmega_lowinit.c atmega_serial.c \
-		  atmega_timerisr.c
+CHIP_CSRCS	= 
 
 # Configuration-dependent ATMEGA files
 
 ifeq ($(CONFIG_AVR_GPIOIRQ),y)
-CHIP_CSRCS	+= atmega_gpioirq.c
+CHIP_CSRCS	+= 
 endif
 
 
diff --git a/arch/avr/src/atmega/atmega_config.h b/arch/avr/src/atmega/atmega_config.h
new file mode 100644
index 0000000000000000000000000000000000000000..09b1c11d939a5d7cb0921381a81d69dc5a47dcb2
--- /dev/null
+++ b/arch/avr/src/atmega/atmega_config.h
@@ -0,0 +1,62 @@
+/************************************************************************************
+ * arch/avr/src/atmega/atmega_config.h
+ *
+ *   Copyright (C) 2011 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.
+ *
+ ************************************************************************************/
+
+#ifndef __ARCH_AVR_SRC_AT90USB_AT90USB_CONFIG_H
+#define __ARCH_AVR_SRC_AT90USB_AT90USB_CONFIG_H
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+#include <nuttx/config.h>
+
+/************************************************************************************
+ * Pre-processor Definitions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Types
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Data
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Functions
+ ************************************************************************************/
+
+#endif /* __ARCH_AVR_SRC_AT90USB_AT90USB_CONFIG_H */
+
diff --git a/arch/avr/src/atmega/atmega_head.S b/arch/avr/src/atmega/atmega_head.S
index ec11e4f7f96573ddd3e81f52aa5235891c6b2eff..cf834bc70835d9f8a473767cffe387aceca59131 100755
--- a/arch/avr/src/atmega/atmega_head.S
+++ b/arch/avr/src/atmega/atmega_head.S
@@ -52,57 +52,57 @@
  * External Symbols
  ****************************************************************************/
 
-	.file		"up_nommuhead.S"
-	.global		_sbss			/* Start of .bss.  Defined by ld.script */
-	.global		_ebss			/* End of .bss.  Defined by ld.script */
-	.global		_sdata			/* Start of .data section in RAM */
-	.global		_edata			/* End of .data section in RAM */
-	.global		_eronly			/* Start of .data section in FLASH */
-	.global		up_lowinit		/* Perform low level initialization */
-	.global		os_start		/* NuttX entry point */
-
-	.global		vectortab
-	.global		atmega_int0		/* External interrupt request 0 */
-	.global		atmega_int1		/* External interrupt request 1 */
-	.global		atmega_int2		/* External interrupt request 2 */
-	.global		atmega_int3		/* External interrupt request 3 */
-	.global		atmega_int4		/* External interrupt request 4 */
-	.global		atmega_int5		/* External interrupt request 5 */
-	.global		atmega_int6		/* External interrupt request 6 */
-	.global		atmega_int7		/* External interrupt request 7 */
-	.global		atmega_t2comp	/* TIMER2 COMP timer/counter2 compare match */
-	.global		atmega_t2ovf	/* TIMER2 OVF timer/counter2 overflow */
-	.global		atmega_t1capt	/* TIMER1 CAPT timer/counter1 capture event */
-	.global		atmega_t1compa	/* TIMER1 COMPA timer/counter1 compare match a */
-	.global		atmega_t1compb	/* TIMER1 COMPB timer/counter1 compare match b */
-	.global		atmega_t1ovf	/* TIMER1 OVF timer/counter1 overflow */
-	.global		atmega_t0comp	/* TIMER0 COMP timer/counter0 compare match */
-	.global		atmega_t0ovf	/* TIMER0 OVF timer/counter0 overflow */
-	.global		atmega_spi		/* STC SPI serial transfer complete */
-	.global		atmega_u0rx		/* USART0 RX complete */
-	.global		atmega_u0dre	/* USART0 data register empty */
-	.global		atmega_u0tx		/* USART0 TX complete */
-	.global		atmega_adc		/* ADC conversion complete */
-	.global		atmega_ee		/* EEPROM ready */
-	.global		atmega_anacomp	/* ANALOG COMP analog comparator */
-	.global		atmega_t1compc	/* TIMER1 COMPC timer/countre1 compare match c */
-	.global		atmega_t3capt	/* TIMER3 CAPT timer/counter3 capture event */
-	.global		atmega_t3compa	/* TIMER3 COMPA timer/counter3 compare match a */
-	.global		atmega_t3compb	/* TIMER3 COMPB timer/counter3 compare match b */
-	.global		atmega_t3compc	/* TIMER3 COMPC timer/counter3 compare match c */
-	.global		atmega_t3ovf	/* TIMER3 OVF timer/counter3 overflow */
-	.global		atmega_u1rx		/* USART1 RX complete */
-	.global		atmega_u1dre	/* USART1 data register empty */
-	.global		atmega_u1tx		/* USART1 TX complete */
-	.global		atmega_twi		/* TWI two-wire serial interface */
-	.global		atmega_spmrdy	/* Store program memory ready */
+	.file	"up_nommuhead.S"
+	.global	_sbss			/* Start of .bss.  Defined by ld.script */
+	.global	_ebss			/* End of .bss.  Defined by ld.script */
+	.global	_sdata			/* Start of .data section in RAM */
+	.global	_edata			/* End of .data section in RAM */
+	.global	_eronly			/* Start of .data section in FLASH */
+	.global	up_lowinit		/* Perform low level initialization */
+	.global	os_start		/* NuttX entry point */
+
+	.global	vectortab
+	.global	atmega_int0		/* External interrupt request 0 */
+	.global	atmega_int1		/* External interrupt request 1 */
+	.global	atmega_int2		/* External interrupt request 2 */
+	.global	atmega_int3		/* External interrupt request 3 */
+	.global	atmega_int4		/* External interrupt request 4 */
+	.global	atmega_int5		/* External interrupt request 5 */
+	.global	atmega_int6		/* External interrupt request 6 */
+	.global	atmega_int7		/* External interrupt request 7 */
+	.global	atmega_t2comp	/* TIMER2 COMP timer/counter2 compare match */
+	.global	atmega_t2ovf	/* TIMER2 OVF timer/counter2 overflow */
+	.global	atmega_t1capt	/* TIMER1 CAPT timer/counter1 capture event */
+	.global	atmega_t1compa	/* TIMER1 COMPA timer/counter1 compare match a */
+	.global	atmega_t1compb	/* TIMER1 COMPB timer/counter1 compare match b */
+	.global	atmega_t1ovf	/* TIMER1 OVF timer/counter1 overflow */
+	.global	atmega_t0comp	/* TIMER0 COMP timer/counter0 compare match */
+	.global	atmega_t0ovf	/* TIMER0 OVF timer/counter0 overflow */
+	.global	atmega_spi		/* STC SPI serial transfer complete */
+	.global	atmega_u0rx		/* USART0 RX complete */
+	.global	atmega_u0dre	/* USART0 data register empty */
+	.global	atmega_u0tx		/* USART0 TX complete */
+	.global	atmega_adc		/* ADC conversion complete */
+	.global	atmega_ee		/* EEPROM ready */
+	.global	atmega_anacomp	/* ANALOG COMP analog comparator */
+	.global	atmega_t1compc	/* TIMER1 COMPC timer/countre1 compare match c */
+	.global	atmega_t3capt	/* TIMER3 CAPT timer/counter3 capture event */
+	.global	atmega_t3compa	/* TIMER3 COMPA timer/counter3 compare match a */
+	.global	atmega_t3compb	/* TIMER3 COMPB timer/counter3 compare match b */
+	.global	atmega_t3compc	/* TIMER3 COMPC timer/counter3 compare match c */
+	.global	atmega_t3ovf	/* TIMER3 OVF timer/counter3 overflow */
+	.global	atmega_u1rx		/* USART1 RX complete */
+	.global	atmega_u1dre	/* USART1 data register empty */
+	.global	atmega_u1tx		/* USART1 TX complete */
+	.global	atmega_twi		/* TWI two-wire serial interface */
+	.global	atmega_spmrdy	/* Store program memory ready */
 
 /****************************************************************************
  * Macros
  ****************************************************************************/
 
-	.macro		vector name
-	jmp			\name
+	.macro	vector name
+	jmp		\name
 	.endm
 
 /****************************************************************************
@@ -113,87 +113,103 @@
  * vector.
  */
 
-	.section	.vectors, "ax", @progbits
-	.func		vectortab
+	.section .vectors, "ax", @progbits
+	.func	vectortab
 vectortab:
-	jmp			__start			/*  0: Vector 0 is the reset vector */
-	vector		atmega_int0		/*  1: External interrupt request 0 */
-	vector		atmega_int1		/*  2: External interrupt request 1 */
-	vector		atmega_int2		/*  3: External interrupt request 2 */
-	vector		atmega_int3		/*  4: External interrupt request 3 */
-	vector		atmega_int4		/*  5: External interrupt request 4 */
-	vector		atmega_int5		/*  6 : External interrupt request 5 */
-	vector		atmega_int6		/*  7: External interrupt request 6 */
-	vector		atmega_int7		/*  8: External interrupt request 7 */
-	vector		atmega_t2comp	/*  9: TIMER2 COMP timer/counter2 compare match */
-	vector		atmega_t2ovf	/* 10: TIMER2 OVF timer/counter2 overflow */
-	vector		atmega_t1capt	/* 11: TIMER1 CAPT timer/counter1 capture event */
-	vector		atmega_t1compa	/* 12: TIMER1 COMPA timer/counter1 compare match a */
-	vector		atmega_t1compb	/* 13: TIMER1 COMPB timer/counter1 compare match b */
-	vector		atmega_t1ovf	/* 14: TIMER1 OVF timer/counter1 overflow */
-	vector		atmega_t0comp	/* 15: TIMER0 COMP timer/counter0 compare match */
-	vector		atmega_t0ovf	/* 16: TIMER0 OVF timer/counter0 overflow */
-	vector		atmega_spi		/* 17: STC SPI serial transfer complete */
-	vector		atmega_u0rx		/* 18: USART0 RX complete */
-	vector		atmega_u0dre	/* 19: USART0 data register empty */
-	vector		atmega_u0tx		/* 20: USART0 TX complete */
-	vector		atmega_adc		/* 21: ADC conversion complete */
-	vector		atmega_ee		/* 22: EEPROM ready */
-	vector		atmega_anacomp	/* 23: ANALOG COMP analog comparator */
-	vector		atmega_t1compc	/* 24: TIMER1 COMPC timer/countre1 compare match c */
-	vector		atmega_t3capt	/* 25: TIMER3 CAPT timer/counter3 capture event */
-	vector		atmega_t3compa	/* 26: TIMER3 COMPA timer/counter3 compare match a */
-	vector		atmega_t3compb	/* 27: TIMER3 COMPB timer/counter3 compare match b */
-	vector		atmega_t3compc	/* 28: TIMER3 COMPC timer/counter3 compare match c */
-	vector		atmega_t3ovf	/* 29: TIMER3 OVF timer/counter3 overflow */
-	vector		atmega_u1rx		/* 30: USART1 RX complete */
-	vector		atmega_u1dre	/* 31: USART1 data register empty */
-	vector		atmega_u1tx		/* 32: USART1 TX complete */
-	vector		atmega_twi		/* 33: TWI two-wire serial interface */
-	vector		atmega_spmrdy	/* 34: Store program memory ready */
+	jmp		__start			/*  0: Vector 0 is the reset vector */
+	vector	atmega_int0		/*  1: External interrupt request 0 */
+	vector	atmega_int1		/*  2: External interrupt request 1 */
+	vector	atmega_int2		/*  3: External interrupt request 2 */
+	vector	atmega_int3		/*  4: External interrupt request 3 */
+	vector	atmega_int4		/*  5: External interrupt request 4 */
+	vector	atmega_int5		/*  6 : External interrupt request 5 */
+	vector	atmega_int6		/*  7: External interrupt request 6 */
+	vector	atmega_int7		/*  8: External interrupt request 7 */
+	vector	atmega_t2comp	/*  9: TIMER2 COMP timer/counter2 compare match */
+	vector	atmega_t2ovf	/* 10: TIMER2 OVF timer/counter2 overflow */
+	vector	atmega_t1capt	/* 11: TIMER1 CAPT timer/counter1 capture event */
+	vector	atmega_t1compa	/* 12: TIMER1 COMPA timer/counter1 compare match a */
+	vector	atmega_t1compb	/* 13: TIMER1 COMPB timer/counter1 compare match b */
+	vector	atmega_t1ovf	/* 14: TIMER1 OVF timer/counter1 overflow */
+	vector	atmega_t0comp	/* 15: TIMER0 COMP timer/counter0 compare match */
+	vector	atmega_t0ovf	/* 16: TIMER0 OVF timer/counter0 overflow */
+	vector	atmega_spi		/* 17: STC SPI serial transfer complete */
+	vector	atmega_u0rx		/* 18: USART0 RX complete */
+	vector	atmega_u0dre	/* 19: USART0 data register empty */
+	vector	atmega_u0tx		/* 20: USART0 TX complete */
+	vector	atmega_adc		/* 21: ADC conversion complete */
+	vector	atmega_ee		/* 22: EEPROM ready */
+	vector	atmega_anacomp	/* 23: ANALOG COMP analog comparator */
+	vector	atmega_t1compc	/* 24: TIMER1 COMPC timer/countre1 compare match c */
+	vector	atmega_t3capt	/* 25: TIMER3 CAPT timer/counter3 capture event */
+	vector	atmega_t3compa	/* 26: TIMER3 COMPA timer/counter3 compare match a */
+	vector	atmega_t3compb	/* 27: TIMER3 COMPB timer/counter3 compare match b */
+	vector	atmega_t3compc	/* 28: TIMER3 COMPC timer/counter3 compare match c */
+	vector	atmega_t3ovf	/* 29: TIMER3 OVF timer/counter3 overflow */
+	vector	atmega_u1rx		/* 30: USART1 RX complete */
+	vector	atmega_u1dre	/* 31: USART1 data register empty */
+	vector	atmega_u1tx		/* 32: USART1 TX complete */
+	vector	atmega_twi		/* 33: TWI two-wire serial interface */
+	vector	atmega_spmrdy	/* 34: Store program memory ready */
 	.endfunc
 
 /****************************************************************************
  * Reset Entry Point
  ****************************************************************************/
 
-	.section	.init, "ax", @progbits
-	.func		__start
+	.section .init, "ax", @progbits
+	.func	__start
 __start:
 
-	/* Initialize the IDLE thread stack */
+	/* Clear the zero register, clear the status register and initialize the
+	 * IDLE thread stack
+	 */
 
-	clr			r1
-	out			_SFR_IO_ADDR(SREG), r1
-	ldi			r28, lo8(STACKBASE)
-	ldi			r29, hi8(STACKBASE)
-	out			_SFR_IO_ADDR(SPH), r29
-	out			_SFR_IO_ADDR(SPL), r28
+	clr		r1
+	out		_SFR_IO_ADDR(SREG), r1
+	ldi		r28, lo8(STACKBASE)
+	ldi		r29, hi8(STACKBASE)
+	out		_SFR_IO_ADDR(SPH), r29
+	out		_SFR_IO_ADDR(SPL), r28
 
 	/* Copy initial global data values from FLASH into RAM */
 
-	ldi			r17, hi8(_edata)
-	ldi			r26, lo8(_sdata)
-	ldi			r27, hi8(_sdata)
-	ldi			r30, lo8(_eronly)
-	ldi			r31, hi8(_eronly)
-	ldi			r16, hh8(_eronly)
-	out			_SFR_IO_ADDR(RAMPZ), r16
-	rjmp		.Lcopystart
+	ldi		r17, hi8(_edata)
+	ldi		r26, lo8(_sdata)
+	ldi		r27, hi8(_sdata)
+	ldi		r30, lo8(_eronly)
+	ldi		r31, hi8(_eronly)
+	ldi		r16, hh8(_eronly)
+	out		_SFR_IO_ADDR(RAMPZ), r16
+	rjmp	.Lcopystart
 
 .Lcopyloop:
-	elpm		r0, Z+
-	st			X+, r0
+	elpm	r0, Z+
+	st		X+, r0
 
 .Lcopystart:
-	cpi			r26, lo8(__data_end)
-	cpc			r27, r17
-	brne		.Lcopyloop
+	cpi		r26, lo8(_edata)
+	cpc		r27, r17
+	brne	.Lcopyloop
+
+	/* Clear uninitialized data */
+
+	ldi		r17, hi8(_ebss)
+	ldi		r26, lo8(_sbss)
+	ldi		r27, hi8(_sbss)
+	rjmp	.Lclearstart
+
+.Lclearloop:
+	st		X+, r1
+.Lclearstart:
+	cpi		r26, lo8(_ebss)
+	cpc		r27, r17
+	brne	.Lclearloop
 
 	/* Now start NuttX */
 
-	call		os_start		/* Start NuttX */
-	jmp			exit
+	call	os_start		/* Start NuttX */
+	jmp		exit
 	.endfunc
 
 /****************************************************************************
diff --git a/arch/avr/src/avr/avr_internal.h b/arch/avr/src/avr/avr_internal.h
new file mode 100644
index 0000000000000000000000000000000000000000..18265332ed13794d8e2aa8cbd556adeb38ea725a
--- /dev/null
+++ b/arch/avr/src/avr/avr_internal.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+ * arch/avr/src/avr/avr_internal.h
+ *
+ *   Copyright (C) 2011 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.
+ *
+ ****************************************************************************/
+
+#ifndef __ARCH_AVR_SRC_AVR_AVR_INTERNAL_H
+#define __ARCH_AVR_SRC_AVR_AVR_INTERNAL_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+#  include <stdint.h>
+#endif
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Macros to handle saving and restore interrupt state.  The state is copied
+ * from the stack to the TCB, but only a referenced is passed to get the 
+ * state from the TCB.
+ */
+
+#define up_savestate(regs)    up_copystate(regs, (uint8_t*)current_regs)
+#define up_restorestate(regs) (current_regs = regs)
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Variables
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+/* This holds a references to the current interrupt level register storage
+ * structure.  If is non-NULL only during interrupt processing.
+ */
+
+extern volatile uint8_t *current_regs;
+
+/* This is the beginning of heap as provided from up_head.S. This is the first
+ * address in DRAM after the loaded program+bss+idle stack.  The end of the
+ * heap is CONFIG_DRAM_END
+ */
+
+extern uint8_t g_heapbase;
+
+#endif /* __ASSEMBLY__ */
+
+/****************************************************************************
+ * Inline Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+extern void up_copystate(uint8_t *dest, uint8_t *src);
+extern int  up_saveusercontext(uint8_t *saveregs);
+extern void up_fullcontextrestore(uint8_t *restoreregs) __attribute__ ((noreturn));
+extern void up_switchcontext(uint8_t *saveregs, uint8_t *restoreregs);
+extern uint8_t *up_doirq(int irq, uint8_t *regs);
+
+#endif /* __ASSEMBLY__ */
+#endif  /* __ARCH_AVR_SRC_AVR_AVR_INTERNAL_H */
+
diff --git a/arch/avr/src/avr32/avr32_internal.h b/arch/avr/src/avr32/avr32_internal.h
new file mode 100644
index 0000000000000000000000000000000000000000..9cf714b01f5560e26c8fcbece18d5a0fc3fa0319
--- /dev/null
+++ b/arch/avr/src/avr32/avr32_internal.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+ * arch/avr/src/avr32/up_internal.h
+ *
+ *   Copyright (C) 2011 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.
+ *
+ ****************************************************************************/
+
+#ifndef __ARCH_AVR_SRC_AVR32_AVR32_INTERNAL_H
+#define __ARCH_AVR_SRC_AVR32_AVR32_INTERNAL_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+#  include <stdint.h>
+#endif
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Macros to handle saving and restore interrupt state.  The state is copied
+ * from the stack to the TCB, but only a referenced is passed to get the 
+ * state from the TCB.
+ */
+
+#define up_savestate(regs)    up_copystate(regs, (uint32_t*)current_regs)
+#define up_restorestate(regs) (current_regs = regs)
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Variables
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+/* This holds a references to the current interrupt level register storage
+ * structure.  If is non-NULL only during interrupt processing.
+ */
+
+extern volatile uint32_ *current_regs;
+
+/* This is the beginning of heap as provided from up_head.S. This is the first
+ * address in DRAM after the loaded program+bss+idle stack.  The end of the
+ * heap is CONFIG_DRAM_END
+ */
+
+extern uint32_t g_heapbase;
+
+#endif /* __ASSEMBLY__ */
+
+/****************************************************************************
+ * Inline Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+extern void up_copystate(uint32_t *dest, uint32_t *src);
+extern int  up_saveusercontext(uint32_t *saveregs);
+extern void up_fullcontextrestore(uint32_t *restoreregs) __attribute__ ((noreturn));
+extern void up_switchcontext(uint32_t *saveregs, uint32_t *restoreregs);
+extern uint32_t *up_doirq(int irq, uint32_t *regs);
+
+#endif /* __ASSEMBLY__ */
+#endif  /* __ARCH_AVR_SRC_AVR32_AVR32_INTERNAL_H */
+
diff --git a/arch/avr/src/common/up_internal.h b/arch/avr/src/common/up_internal.h
index 413e440785855686fd3ae837b788c83f1142ed0d..c388b615329e2b8cd107c31dd680538808f6b4de 100644
--- a/arch/avr/src/common/up_internal.h
+++ b/arch/avr/src/common/up_internal.h
@@ -40,10 +40,18 @@
  * Included Files
  ****************************************************************************/
 
+#include <nuttx/config.h>
+
 #ifndef __ASSEMBLY__
 #  include <stdint.h>
 #endif
 
+#ifdef CONFIG_ARCH_AVR32
+# include "avr32_internal.h"
+#else
+# include "avr_internal.h"
+#endif
+
 /****************************************************************************
  * Pre-processor Definitions
  ****************************************************************************/
@@ -65,14 +73,6 @@
 # define CONFIG_ARCH_INTERRUPTSTACK 0
 #endif
 
-/* Macros to handle saving and restore interrupt state.  The state is copied
- * from the stack to the TCB, but only a referenced is passed to get the 
- * state from the TCB.
- */
-
-#define up_savestate(regs)    up_copystate(regs, (uint32_t*)current_regs)
-#define up_restorestate(regs) (current_regs = regs)
-
 /****************************************************************************
  * Public Types
  ****************************************************************************/
@@ -86,21 +86,6 @@ typedef void (*up_vector_t)(void);
  ****************************************************************************/
 
 #ifndef __ASSEMBLY__
-/* This holds a references to the current interrupt level
- * register storage structure.  If is non-NULL only during
- * interrupt processing.
- */
-
-extern volatile uint32_t *current_regs;
-
-/* This is the beginning of heap as provided from up_head.S.
- * This is the first address in DRAM after the loaded
- * program+bss+idle stack.  The end of the heap is
- * CONFIG_DRAM_END
- */
-
-extern uint32_t g_heapbase;
-
 /* Address of the saved user stack pointer */
 
 #if CONFIG_ARCH_INTERRUPTSTACK > 3
@@ -126,7 +111,8 @@ extern uint32_t _sdata;           /* Start of .data */
 extern uint32_t _edata;           /* End+1 of .data */
 extern uint32_t _sbss;            /* Start of .bss */
 extern uint32_t _ebss;            /* End+1 of .bss */
-#endif
+
+#endif /* __ASSEMBLY__ */
 
 /****************************************************************************
  * Inline Functions
@@ -141,20 +127,15 @@ extern uint32_t _ebss;            /* End+1 of .bss */
 /* Defined in files with the same name as the function */
 
 extern void up_boot(void);
-extern void up_copystate(uint32_t *dest, uint32_t *src);
 extern void up_irqinitialize(void);
 #ifdef CONFIG_ARCH_DMA
 extern void weak_function up_dmainitialize(void);
 #endif
-extern int  up_saveusercontext(uint32_t *saveregs);
-extern void up_fullcontextrestore(uint32_t *restoreregs) __attribute__ ((noreturn));
-extern void up_switchcontext(uint32_t *saveregs, uint32_t *restoreregs);
 extern void up_sigdeliver(void);
 extern int  up_timerisr(int irq, uint32_t *regs);
 extern void up_lowputc(char ch);
 extern void up_puts(const char *str);
 extern void up_lowputs(const char *str);
-extern uint32_t *up_doirq(int irq, uint32_t *regs);
 
 /* Defined in common/up_allocateheap.c or chip/xxx_allocateheap.c */
 
diff --git a/configs/amber/README.txt b/configs/amber/README.txt
index 8227c45ebb28034752d6293fe79a8a36bbfc27b3..9de006872fe6c4b2593907b4382f9a98837e9ba8 100644
--- a/configs/amber/README.txt
+++ b/configs/amber/README.txt
@@ -120,6 +120,11 @@ NuttX buildroot Toolchain
      cd tools
      ./configure.sh amber/<sub-dir>
 
+	 NOTE: you also must copy avr-libc header files into the NuttX include
+	 directory with command perhaps like:
+
+	 cp -a /cygdrive/c/WinAVR/include/avr include/.
+
   2. Download the latest buildroot package into <some-dir>
 
   3. unpack the buildroot tarball.  The resulting directory may
@@ -144,17 +149,33 @@ NuttX buildroot Toolchain
 avr-libc
 ^^^^^^^^
 
-Build Notes:
+Header Files
 
-  In any case, avr-libc is required.  http://www.nongnu.org/avr-libc/.
-  An snapshot of avr-lib is included in the WinAVR installation. For Linux
+  In any case, header files from avr-libc are required:  http://www.nongnu.org/avr-libc/.
+  A snapshot of avr-lib is included in the WinAVR installation. For Linux
   development platforms, avr-libc package is readily available (and would
   be installed in the apt-get command shown above).  But if you are using
   the NuttX buildroot configuration on Cygwin, then you will have to build
-  avr-libc from binaries.
+  get avr-libc from binaries.
+
+Header File Installation
 
-  Below are instructions for building avr-lib from fresh sources (I started
-  this before I realized at tha avr-lib is included in the WinAVR install):
+  The NuttX build will required that the AVR header files be available via
+  the NuttX include directory.  This can be accomplished by either copying
+  the avr-libc header files into the NuttX include directory:
+
+  cp -a <avr-libc-path>/include/avr <nuttx-path>/include/.
+
+  Or simply using a symbolic link:
+
+  ln -s <avr-libc-path>/include/avr <nuttx-path>/include/.
+
+Build Notes:
+
+  It may not necessary to have a built version of avr-lib; only header files
+  are required.  Bu if you choose to use the optimized libraru functions of
+  the flowing point library, then you may have to build avr-lib from sources.
+  Below are instructions for building avr-lib from fresh sources:
 
   1. Download the avr-libc package from: 
 
@@ -167,7 +188,7 @@ Build Notes:
      tar jxf avr-lib-1.7.1.tar.bz2
      cd avr-lib-1.7.1
 
-  3. Configure avr-lib.  Assuming that WinAVR is installed at
+  3. Configure avr-lib.  Assuming that WinAVR is installed at the following
 
      export PATH=/cygdrive/c/WinAVR/bin:$PATH
      ./configure --build=`./config.guess` --host=avr
@@ -185,16 +206,6 @@ Build Notes:
 
      make install
 
-Include Path:
-
-  After configuration, the Make.def file installed in the top-level NuttX
-  directory will need to be modified to include the path to the where ever
-  the include/avr directory was installed (no other avr-libc header files
-  are needed).  For, for example, if WinAVR is installed at C:/WinAVR, the
-  AVR header files will be at C:/WinAVR/avr/include/avr
-
-  AVRLIBC_INCPATH=${cygpath -u "C:/WinAVR/avr/include/avr"}
-
 Amber Web Server Configuration Options
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -314,6 +325,10 @@ be selected as follow:
 	cd -
 	. ./setenv.sh
 
+NOTE: You must also copy avr-libc header files, perhaps like:
+
+	 cp -a /cygdrive/c/WinAVR/include/avr include/.
+
 Where <subdir> is one of the following:
 
   ostest:
diff --git a/configs/micropendous3/README.txt b/configs/micropendous3/README.txt
index 562cf1187fff2dce530419660f01106d389428e2..89041a90ffe8efe461d60860b91b71212e9f9098 100644
--- a/configs/micropendous3/README.txt
+++ b/configs/micropendous3/README.txt
@@ -139,6 +139,11 @@ NuttX buildroot Toolchain
      cd tools
      ./configure.sh micropendous3/<sub-dir>
 
+	 NOTE: you also must copy avr-libc header files into the NuttX include
+	 directory with command perhaps like:
+
+	 cp -a /cygdrive/c/WinAVR/include/avr include/.
+
   2. Download the latest buildroot package into <some-dir>
 
   3. unpack the buildroot tarball.  The resulting directory may
@@ -163,17 +168,33 @@ NuttX buildroot Toolchain
 avr-libc
 ^^^^^^^^
 
-Build Notes:
+Header Files
 
-  In any case, avr-libc is required.  http://www.nongnu.org/avr-libc/.
-  An snapshot of avr-lib is included in the WinAVR installation. For Linux
+  In any case, header files from avr-libc are required:  http://www.nongnu.org/avr-libc/.
+  A snapshot of avr-lib is included in the WinAVR installation. For Linux
   development platforms, avr-libc package is readily available (and would
   be installed in the apt-get command shown above).  But if you are using
   the NuttX buildroot configuration on Cygwin, then you will have to build
-  avr-libc from binaries.
+  get avr-libc from binaries.
+
+Header File Installation
 
-  Below are instructions for building avr-lib from fresh sources (I started
-  this before I realized at tha avr-lib is included in the WinAVR install):
+  The NuttX build will required that the AVR header files be available via
+  the NuttX include directory.  This can be accomplished by either copying
+  the avr-libc header files into the NuttX include directory:
+
+  cp -a <avr-libc-path>/include/avr <nuttx-path>/include/.
+
+  Or simply using a symbolic link:
+
+  ln -s <avr-libc-path>/include/avr <nuttx-path>/include/.
+
+Build Notes:
+
+  It may not necessary to have a built version of avr-lib; only header files
+  are required.  Bu if you choose to use the optimized libraru functions of
+  the flowing point library, then you may have to build avr-lib from sources.
+  Below are instructions for building avr-lib from fresh sources:
 
   1. Download the avr-libc package from: 
 
@@ -186,7 +207,8 @@ Build Notes:
      tar jxf avr-lib-1.7.1.tar.bz2
      cd avr-lib-1.7.1
 
-  3. Configure avr-lib.  Assuming that WinAVR is installed at
+  3. Configure avr-lib.  Assuming that WinAVR is installed at the following
+     location:
 
      export PATH=/cygdrive/c/WinAVR/bin:$PATH
      ./configure --build=`./config.guess` --host=avr
@@ -204,16 +226,6 @@ Build Notes:
 
      make install
 
-Include Path:
-
-  After configuration, the Make.def file installed in the top-level NuttX
-  directory will need to be modified to include the path to the where ever
-  the include/avr directory was installed (no other avr-libc header files
-  are needed).  For, for example, if WinAVR is installed at C:/WinAVR, the
-  AVR header files will be at C:/WinAVR/avr/include/avr
-
-  AVRLIBC_INCPATH=${cygpath -u "C:/WinAVR/avr/include/avr"}
-
 Micropendous3 Configuration Options
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -338,6 +350,10 @@ be selected as follow:
 	cd -
 	. ./setenv.sh
 
+NOTE: You must also copy avr-libc header files, perhaps like:
+
+	 cp -a /cygdrive/c/WinAVR/include/avr include/.
+
 Where <subdir> is one of the following:
 
   ostest:
diff --git a/configs/micropendous3/ostest/Make.defs b/configs/micropendous3/ostest/Make.defs
index 198cfaaefec276b6b4d4ef34a3dcef5964a47247..8a5a1b0e3ff571f63dfc234453927f7aa445d8af 100644
--- a/configs/micropendous3/ostest/Make.defs
+++ b/configs/micropendous3/ostest/Make.defs
@@ -44,7 +44,6 @@ ifeq ($(CONFIG_AVR_WINAVR),y)
   MAXOPTIMIZATION = -O2
   ARCHCPUFLAGS = -mmcu=at90usb647
   LDFLAGS += -nostartfiles -nodefaultlibs
-  AVRLIBC_INCPATH=${cygpath -u "C:/WinAVR/avr/include/avr"}
 endif
 
 ifeq ($(CONFIG_AVR_LINUXGCC),y)
@@ -53,7 +52,6 @@ ifeq ($(CONFIG_AVR_LINUXGCC),y)
   MAXOPTIMIZATION = -O2
   ARCHCPUFLAGS = -mmcu=at90usb647
   LDFLAGS += -nostartfiles -nodefaultlibs
-  AVRLIBC_INCPATH= #Where?
 endif
 
 ifeq ($(CONFIG_AVR_BUILDROOT),y)
@@ -62,7 +60,6 @@ ifeq ($(CONFIG_AVR_BUILDROOT),y)
   MAXOPTIMIZATION = -O2
   ARCHCPUFLAGS = -mmcu=at90usb647
   LDFLAGS += -nostartfiles -nodefaultlibs
-  AVRLIBC_INCPATH= #Where?
 endif
 
 ifeq ($(WINTOOL),y)
@@ -70,13 +67,13 @@ ifeq ($(WINTOOL),y)
   DIRLINK = $(TOPDIR)/tools/winlink.sh
   DIRUNLINK = $(TOPDIR)/tools/unlink.sh
   MKDEP = $(TOPDIR)/tools/mknulldeps.sh
-  ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -I "${shell cygpath -w $(AVRLIBC_INCPATH)}"
+  ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
   ARCHXXINCLUDES = $(ARCHINCLUDES) -w $(TOPDIR)/include/cxx}"
   ARCHSCRIPT = -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/ostest/ld.script}"
 else
   # Linux/Cygwin-native toolchain 
   MKDEP = $(TOPDIR)/tools/mkdeps.sh
-  ARCHINCLUDES = -I. -isystem "$(TOPDIR)/include" -I "$(AVRLIBC_INCPATH)"
+  ARCHINCLUDES = -I. -isystem "$(TOPDIR)/include"
   ARCHXXINCLUDES =  $(ARCHINCLUDES) -isystem "$(TOPDIR)/include/cxx"
   ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/ostest/ld.script
 endif
diff --git a/configs/micropendous3/src/Makefile b/configs/micropendous3/src/Makefile
index 005e4767f7b6baedda3f5a345f8dd7a038c397fb..b027183c483cc6d79b1bbcd710b521e29b9e19aa 100755
--- a/configs/micropendous3/src/Makefile
+++ b/configs/micropendous3/src/Makefile
@@ -35,8 +35,6 @@
 
 -include $(TOPDIR)/Make.defs
 
-CFLAGS		+= -I$(TOPDIR)/sched
-
 ASRCS		= 
 CSRCS		= up_boot.c
 
@@ -51,12 +49,23 @@ SRCS		= $(ASRCS) $(CSRCS)
 OBJS		= $(AOBJS) $(COBJS)
 
 ARCH_SRCDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src
+ifeq ($(CONFIG_ARCH_AVR32),y)
+ARCH_SUBDIR	= avr32
+endif
+ifeq ($(CONFIG_ARCH_AVR),y)
+ARCH_SUBDIR	= avr
+endif
+
 ifeq ($(WINTOOL),y)
-  CFLAGS	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
-  		   -I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
-  		   -I "${shell cygpath -w $(ARCH_SRCDIR)/mips32}"
+  CFLAGS	+= -I "${shell cygpath -w $(TOPDIR)/sched}"
+  CFLAGS	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" 
+  CFLAGS	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/common}" 
+  CFLAGS	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/$(ARCH_SUBDIR)}"
 else
-  CFLAGS	+= -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(ARCH_SRCDIR)/mips32
+  CFLAGS	+= -I "$(TOPDIR)/sched"
+  CFLAGS	+= -I "$(ARCH_SRCDIR)/chip"
+  CFLAGS	+= -I "$(ARCH_SRCDIR)/common" 
+  CFLAGS	+= -I "$(ARCH_SRCDIR)/$(ARCH_SUBDIR)"
 endif
 
 all: libboard$(LIBEXT)
diff --git a/configs/micropendous3/src/up_boot.c b/configs/micropendous3/src/up_boot.c
index 67838097a9b2b23250ed456913dbd8ede48c876d..c6e261a45213a53d007f125c297ad7313d4f9e3c 100755
--- a/configs/micropendous3/src/up_boot.c
+++ b/configs/micropendous3/src/up_boot.c
@@ -47,8 +47,8 @@
 #include "up_arch.h"
 #include "up_internal.h"
 
-#include "at90usb-internal.h"
-#include "micropendous3-internal.h"
+#include "at90usb_internal.h"
+#include "micropendous3_internal.h"
 
 /************************************************************************************
  * Definitions