COBJS  = clock.o mx28.o iomux.o timer.o
 
 ifdef  CONFIG_SPL_BUILD
-COBJS  += memsize.o spl_boot.o spl_mem_init.o spl_power_init.o
+COBJS  += spl_boot.o spl_mem_init.o spl_power_init.o
 endif
 
 SRCS   := $(START:.o=.S) $(COBJS:.o=.c)
 $(LIB):        $(OBJS)
        $(call cmd_link_o_target, $(OBJS))
 
-ifdef  CONFIG_SPL_BUILD
-memsize.c:
-       ln -sf $(TOPDIR)/common/memsize.c $@
-endif
-
 #########################################################################
 
 # defines $(obj).depend target
 
                ;
 }
 
-inline int printf(const char *fmt, ...)
-{
-       return 0;
-}
-
-inline void __coloured_LED_init(void) {}
-inline void __red_LED_on(void) {}
-void coloured_LED_init(void)
-       __attribute__((weak, alias("__coloured_LED_init")));
-void red_LED_on(void)
-       __attribute__((weak, alias("__red_LED_on")));
+void serial_putc(const char c) {}
+void serial_puts(const char *s) {}
 void hang(void) __attribute__ ((noreturn));
 void hang(void)
 {
 
                *(.dynsym)
        }
 
-       _end = .;
-
-       .bss __rel_dyn_start (OVERLAY) : {
+       .bss : {
+               . = ALIGN(4);
                __bss_start = .;
-               *(.bss)
-                . = ALIGN(4);
+               *(.bss*)
+               . = ALIGN(4);
                __bss_end__ = .;
        }
 
-       /DISCARD/ : { *(.bss*) }
+       _end = .;
+
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynsym*) }
        /DISCARD/ : { *(.dynamic*) }
 
 #define        CONFIG_SPL_NO_CPU_SUPPORT_CODE
 #define        CONFIG_SPL_START_S_PATH         "arch/arm/cpu/arm926ejs/mx28"
 #define        CONFIG_SPL_LDSCRIPT     "arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds"
+#define        CONFIG_SPL_LIBCOMMON_SUPPORT
+#define        CONFIG_SPL_LIBGENERIC_SUPPORT
 
 /*
  * U-Boot Commands