diff --git a/board/mpl/common/common_util.c b/board/mpl/common/common_util.c
index 503654e..e2672f7 100644
--- a/board/mpl/common/common_util.c
+++ b/board/mpl/common/common_util.c
@@ -56,7 +56,6 @@
 static image_header_t header;
 
 
-
 int mpl_prg(unsigned long src,unsigned long size)
 {
 	unsigned long start;
@@ -348,7 +347,6 @@
 }
 
 
-
 extern device_t *stdio_devices[];
 extern char *stdio_names[];
 
@@ -454,10 +452,10 @@
 	unsigned long pbcr;
 	int res = 0;
 	pbcr = mfdcr (strap);
-	if ((pbcr & PSR_ROM_WIDTH_MASK) == 0) 
+	if ((pbcr & PSR_ROM_WIDTH_MASK) == 0)
 		/* boot via MPS or MPS mapping */
 		res = BOOT_MPS;
-	if(pbcr & PSR_ROM_LOC) 
+	if(pbcr & PSR_ROM_LOC)
 		/* boot via PCI.. */
 		res |= BOOT_PCI;
 	 return res;
diff --git a/board/mpl/common/common_util.h b/board/mpl/common/common_util.h
index caf7f9b..bcc7922 100644
--- a/board/mpl/common/common_util.h
+++ b/board/mpl/common/common_util.h
@@ -46,4 +46,3 @@
 #endif
 
 #endif /* _COMMON_UTIL_H_ */
-
diff --git a/board/mpl/common/flash.c b/board/mpl/common/flash.c
index 563039b..28f6f0a 100644
--- a/board/mpl/common/flash.c
+++ b/board/mpl/common/flash.c
@@ -251,7 +251,7 @@
 	/*	printf("Device value %x\n",value); */
 	switch (value) {
 	case (FLASH_WORD_SIZE)AMD_ID_F040B:
-	        info->flash_id += FLASH_AM040;
+		info->flash_id += FLASH_AM040;
 		info->sector_count = 8;
 		info->size = 0x0080000; /* => 512 ko */
 		break;
@@ -494,7 +494,7 @@
 				wait_for_DQ7(info, sect);
 			}
 			else {
-		  		if((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL){
+				if((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL){
 					addr2[0] = (FLASH_WORD_SIZE)0x00600060;  /* unlock sector */
 					addr2[0] = (FLASH_WORD_SIZE)0x00D000D0;  /* sector erase */
 					intel_wait_for_DQ7(info, sect);
@@ -659,7 +659,7 @@
 {
 	volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)(info->start[0]);
 	volatile FLASH_WORD_SIZE *dest2 = (FLASH_WORD_SIZE *)dest;
- 	volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *)&data;
+	volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *)&data;
 	ulong start;
 	int flag;
 	int i;
@@ -708,7 +708,7 @@
 			while ((dest2[i] & (FLASH_WORD_SIZE)0x00800080) !=
 				(data2[i] & (FLASH_WORD_SIZE)0x00800080)) {
 				if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
-        				return (1);
+					return (1);
 				}
 			}
 		}
diff --git a/board/mpl/common/isa.c b/board/mpl/common/isa.c
index 40731fc..1788d51 100644
--- a/board/mpl/common/isa.c
+++ b/board/mpl/common/isa.c
@@ -50,7 +50,6 @@
 #endif
 
 
-
 /* fdc (logical device 0) */
 const SIO_LOGDEV_TABLE sio_fdc[] = {
 	{0x60, 3},			/* set IO to FDPort (3F0) */
@@ -186,7 +185,6 @@
 }
 
 
-
 /******************************************************************************
  * IRQ Controller
  * we use the Vector mode
@@ -396,12 +394,12 @@
 		/* we should handle cascaded interrupts here also */
 		/* printf("ISA Irq %d\n",irq); */
 		isa_irqs[irq].count++;
-  	if (isa_irqs[irq].handler != NULL)
-  		(*isa_irqs[irq].handler)(isa_irqs[irq].arg);      /* call isr */
-  	else
-  	{
-     	PRINTF ("bogus interrupt vector 0x%x\n", irq);
-  	}
+	if (isa_irqs[irq].handler != NULL)
+		(*isa_irqs[irq].handler)(isa_irqs[irq].arg);      /* call isr */
+	else
+	{
+	PRINTF ("bogus interrupt vector 0x%x\n", irq);
+	}
 	}
 	/* issue EOI instruction to clear the IRQ */
 	mask_and_ack_8259A(irq);
@@ -409,7 +407,6 @@
 }
 
 
-
 /******************************************************************
  * Install and free an ISA interrupt handler.
  */
@@ -418,12 +415,12 @@
 {
   if (isa_irqs[vec].handler != NULL) {
    printf ("ISA Interrupt vector %d: handler 0x%x replacing 0x%x\n",
-           vec, (uint)handler, (uint)isa_irqs[vec].handler);
+	   vec, (uint)handler, (uint)isa_irqs[vec].handler);
   }
   isa_irqs[vec].handler = handler;
   isa_irqs[vec].arg     = arg;
   enable_8259A_irq(vec);
- 	PRINTF ("Install ISA IRQ %d ==> %p, @ %p mask=%04x\n", vec, handler, &isa_irqs[vec].handler,cached_irq_mask);
+	PRINTF ("Install ISA IRQ %d ==> %p, @ %p mask=%04x\n", vec, handler, &isa_irqs[vec].handler,cached_irq_mask);
 
 }
 
@@ -432,7 +429,7 @@
 	disable_8259A_irq(vec);
   isa_irqs[vec].handler = NULL;
   isa_irqs[vec].arg     = NULL;
- 	printf ("Free ISA IRQ %d mask=%04x\n", vec, cached_irq_mask);
+	printf ("Free ISA IRQ %d mask=%04x\n", vec, cached_irq_mask);
 
 }
 
@@ -464,6 +461,3 @@
 	drv_isa_kbd_init();
 	return 0;
 }
-
-
-
diff --git a/board/mpl/common/isa.h b/board/mpl/common/isa.h
index 66dd2c9..578222d 100644
--- a/board/mpl/common/isa.h
+++ b/board/mpl/common/isa.h
@@ -27,7 +27,6 @@
 #define SIO_CFG_PORT	0x3F0	/* Config Port Address */
 
 
-
 /* table fore SIO initialization */
 typedef struct {
 	const uchar index;
@@ -40,8 +39,6 @@
 } SIO_TABLE;
 
 
-
-
 unsigned char open_cfg_super_IO(int address);
 unsigned char read_cfg_super_IO(int address, unsigned char function, unsigned char regaddr);
 void write_cfg_super_IO(int address, unsigned char function, unsigned char regaddr, unsigned char data);
diff --git a/board/mpl/common/kbd.c b/board/mpl/common/kbd.c
index 5b87cdb..9bd1ff9 100644
--- a/board/mpl/common/kbd.c
+++ b/board/mpl/common/kbd.c
@@ -137,8 +137,6 @@
 #define 	KBD_BUFFER_LEN 0x20  /* size of the keyboardbuffer */
 
 
-
-
 static volatile char kbd_buffer[KBD_BUFFER_LEN];
 static volatile int in_pointer = 0;
 static volatile int out_pointer = 0;
@@ -450,7 +448,6 @@
 }
 
 
-
 /******************************************************************************
  * Lowlevel Part of keyboard section
  */
@@ -648,8 +645,3 @@
 {
 	handle_kbd_event();
 }
-
-
-
-/* eof */
-
diff --git a/board/mpl/common/memtst.c b/board/mpl/common/memtst.c
index 122ba2e..c994a8b 100644
--- a/board/mpl/common/memtst.c
+++ b/board/mpl/common/memtst.c
@@ -65,9 +65,6 @@
 #define MEGABYTE (1024*1024)
 
 
-
-
-
 typedef struct {
 	volatile unsigned long pat1;
 	volatile unsigned long pat2;
@@ -444,7 +441,6 @@
 }
 
 
-
 typedef struct {
 	void (*test_write) (unsigned long startaddr, unsigned long size,
 						unsigned long *pat);
diff --git a/board/mpl/common/pci_parts.h b/board/mpl/common/pci_parts.h
index a8e3232..82426f3 100644
--- a/board/mpl/common/pci_parts.h
+++ b/board/mpl/common/pci_parts.h
@@ -59,7 +59,6 @@
 #define PCI_IRQ_VECTOR(x)	((PCI_DEV(x) + 10) % 4) + 28
 
 
-
 /* PCI Device List for PIP405 */
 
 /* Mapping:
@@ -191,8 +190,3 @@
 	{ }
 };
 #endif /* _PCI_PARTS_H_ */
-
-
-
-
-
diff --git a/board/mpl/common/piix4_pci.h b/board/mpl/common/piix4_pci.h
index 5a0fd5e..3c0523f 100644
--- a/board/mpl/common/piix4_pci.h
+++ b/board/mpl/common/piix4_pci.h
@@ -22,7 +22,6 @@
  */
 
 
-
 #ifndef _PIIX4_PCI_H
 #define _PIIX4_PCI_H
 
@@ -163,5 +162,4 @@
 #define	PCI_CFG_PIIX4_SMBBA	0x90
 
 
-
 #endif
diff --git a/board/mpl/common/usb_uhci.c b/board/mpl/common/usb_uhci.c
index 83624a9..4a10b79 100644
--- a/board/mpl/common/usb_uhci.c
+++ b/board/mpl/common/usb_uhci.c
@@ -1088,7 +1088,6 @@
 #endif
 
 
-
 #ifdef	USB_UHCI_DEBUG
 
 static int usb_display_td(uhci_td_t *td)
diff --git a/board/mpl/common/usb_uhci.h b/board/mpl/common/usb_uhci.h
index 8c8f161..af80837 100644
--- a/board/mpl/common/usb_uhci.h
+++ b/board/mpl/common/usb_uhci.h
@@ -186,5 +186,3 @@
 
 
 #endif /* _USB_UHCI_H_ */
-
-
diff --git a/board/mpl/mip405/Makefile b/board/mpl/mip405/Makefile
index 839cafe..9276f64 100644
--- a/board/mpl/mip405/Makefile
+++ b/board/mpl/mip405/Makefile
@@ -31,7 +31,7 @@
 SOBJS	= init.o
 
 $(LIB):	$(OBJS) $(SOBJS)
-	$(AR) crv $@ $^
+	$(AR) crv $@ $(OBJS)
 
 clean:
 	rm -f $(SOBJS) $(OBJS)
diff --git a/board/mpl/mip405/cmd_mip405.c b/board/mpl/mip405/cmd_mip405.c
index 6ec128f..2075fbd 100644
--- a/board/mpl/mip405/cmd_mip405.c
+++ b/board/mpl/mip405/cmd_mip405.c
@@ -53,5 +53,11 @@
    	}
 	return (do_mplcommon(cmdtp, flag, argc, argv));
 }
+cmd_tbl_t U_BOOT_CMD(mip405) = MK_CMD_ENTRY(
+	"mip405",	6,	1,	do_mip405,
+	"mip405  - MIP405 specific Cmds\n",
+	"flash mem [SrcAddr] - updates U-Boot with image in memory\n"
+	"mip405 flash mps - updates U-Boot with image from MPS\n"
+);
 
 /* ------------------------------------------------------------------------- */
diff --git a/board/mpl/mip405/init.S b/board/mpl/mip405/init.S
index ad3f78d..00bf739 100644
--- a/board/mpl/mip405/init.S
+++ b/board/mpl/mip405/init.S
@@ -63,7 +63,7 @@
   mtlr    r4                      /* restore link register */
   addi    r4,0,14                 /* set ctr to 14; used to prefetch */
   mtctr   r4                      /* 14 cache lines to fit this function */
-                                   /* in cache (gives us 8x14=112 instrctns) */
+				   /* in cache (gives us 8x14=112 instrctns) */
 ..ebcloop:
   icbt    r0,r3                   /* prefetch cache line for addr in r3 */
   addi    r3,r3,32								/* move to next cache line */
@@ -116,10 +116,10 @@
 
 0:
 
-  	/* 8Bit boot mode: */
+	/* 8Bit boot mode: */
 	/*-----------------------------------------------------------------------
-   	* Memory Bank 0 Multi Purpose Socket initialization
-   	*----------------------------------------------------------------------- */
+	* Memory Bank 0 Multi Purpose Socket initialization
+	*----------------------------------------------------------------------- */
 	/* 0x7F8FFE80 slowest boot */
 	addi    r4,0,pb0ap
 	mtdcr   ebccfga,r4
@@ -133,7 +133,7 @@
 	mtdcr   ebccfgd,r4
 
 	addi    r4,0,pb0cr
- 	mtdcr   ebccfga,r4
+	mtdcr   ebccfga,r4
 	/* BS=0x010(4MB),BU=0x3(R/W), */
 /*	addis   r4,0,((FLASH_BASE0_PRELIM & 0xFFF00000) | 0x00050000)@h */
 /*	ori     r4,r4,0x8000          / * BW=0x0( 8 bits) */
@@ -197,7 +197,7 @@
  * Description:  Configures the internal SRAM memory. and setup the
  *               Stackpointer in it.
  *----------------------------------------------------------------------------- */
-        .globl  sdram_init
+	.globl  sdram_init
 
 sdram_init:
 
@@ -245,4 +245,3 @@
   nop
   b	_start		/* normal start */
 #endif
-
diff --git a/board/mpl/mip405/mip405.c b/board/mpl/mip405/mip405.c
index 93d8679..07922bc 100644
--- a/board/mpl/mip405/mip405.c
+++ b/board/mpl/mip405/mip405.c
@@ -511,7 +511,6 @@
 }
 
 
-
 void user_led0 (unsigned char on)
 {
 	if (on)
@@ -762,5 +761,3 @@
 	printf ("  PIIX INIT: %s\n", (irq_reg & 0x8) ? "inactive" : "active");
 	printf ("  PIIX NMI:  %s\n", (irq_reg & 0x4) ? "inactive" : "active");
 }
-
-
diff --git a/board/mpl/mip405/mip405.h b/board/mpl/mip405/mip405.h
index 101b173..f1e37ff 100644
--- a/board/mpl/mip405/mip405.h
+++ b/board/mpl/mip405/mip405.h
@@ -32,7 +32,6 @@
 void user_led0(unsigned char on);
 
 
-
 #endif
 /* timings */
 /* PLD (CS7) */
@@ -114,7 +113,6 @@
 #define UART1_CR	((PER_UART1_ADDR & 0xfff00000) + (UART0_BS << 17) + (UART0_BU << 15) + (UART0_BW << 13))
 
 
-
 /* Flash CS0 or CS 1 */
 /* 0x7F8FFE80 slowest timing at all... */
 #define FLASH_BME_B	1 	/* Burst enable */
@@ -182,6 +180,3 @@
 #define MPS_CR_B	((FLASH_BASE0_PRELIM & 0xfff00000) + (MPS_BS << 17) + (MPS_BU << 15) + (MPS_BW << 13))
 /* CR register for non Boot */
 #define MPS_CR		((MULTI_PURPOSE_SOCKET_ADDR & 0xfff00000) + (MPS_BS << 17) + (MPS_BU << 15) + (MPS_BW << 13))
-
-
-
diff --git a/board/mpl/mip405/u-boot.lds b/board/mpl/mip405/u-boot.lds
index 710a139..bb0f122 100644
--- a/board/mpl/mip405/u-boot.lds
+++ b/board/mpl/mip405/u-boot.lds
@@ -125,6 +125,11 @@
   _edata  =  .;
   PROVIDE (edata = .);
 
+  __u_boot_cmd_start = .;
+  .u_boot_cmd : { *(.u_boot_cmd) }
+  __u_boot_cmd_end = .;
+
+
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __stop___ex_table = .;
diff --git a/board/mpl/pip405/Makefile b/board/mpl/pip405/Makefile
index b6cc531..a818d08 100644
--- a/board/mpl/pip405/Makefile
+++ b/board/mpl/pip405/Makefile
@@ -34,7 +34,7 @@
 SOBJS	= init.o
 
 $(LIB):	$(OBJS) $(SOBJS)
-	$(AR) crv $@ $^
+	$(AR) crv $@ $(OBJS)
 
 clean:
 	rm -f $(SOBJS) $(OBJS)
diff --git a/board/mpl/pip405/cmd_pip405.c b/board/mpl/pip405/cmd_pip405.c
index 0d1ce11..4cc3776 100644
--- a/board/mpl/pip405/cmd_pip405.c
+++ b/board/mpl/pip405/cmd_pip405.c
@@ -33,7 +33,6 @@
 extern int do_mplcommon(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 
-
 /* ------------------------------------------------------------------------- */
 
 int do_pip405(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
@@ -59,5 +58,12 @@
 
 	return (do_mplcommon(cmdtp, flag, argc, argv));
 }
+cmd_tbl_t U_BOOT_CMD(pip405) = MK_CMD_ENTRY(
+	"pip405",	6,	1,	do_pip405,
+	"pip405  - PIP405 specific Cmds\n",
+	"flash mem [SrcAddr] - updates U-Boot with image in memory\n"
+	"pip405 flash floppy [SrcAddr] - updates U-Boot with image from floppy\n"
+	"pip405 flash mps - updates U-Boot with image from MPS\n"
+);
 
 /* ------------------------------------------------------------------------- */
diff --git a/board/mpl/pip405/init.S b/board/mpl/pip405/init.S
index 4a70ec9..a0c76dd 100644
--- a/board/mpl/pip405/init.S
+++ b/board/mpl/pip405/init.S
@@ -49,7 +49,7 @@
 #include <asm/mmu.h>
 
 
- 	.globl	ext_bus_cntlr_init
+	.globl	ext_bus_cntlr_init
 ext_bus_cntlr_init:
   mflr    r4                      /* save link register */
   bl      ..getAddr
@@ -58,7 +58,7 @@
   mtlr    r4                      /* restore link register */
   addi    r4,0,14                 /* set ctr to 14; used to prefetch */
   mtctr   r4                      /* 14 cache lines to fit this function */
-                                   /* in cache (gives us 8x14=112 instrctns) */
+				   /* in cache (gives us 8x14=112 instrctns) */
 ..ebcloop:
   icbt    r0,r3                   /* prefetch cache line for addr in r3 */
   addi    r3,r3,32								/* move to next cache line */
@@ -211,10 +211,9 @@
  * Description:  Configures the internal SRAM memory. and setup the
  *               Stackpointer in it.
  *----------------------------------------------------------------------------- */
-        .globl  sdram_init
+	.globl  sdram_init
 
 sdram_init:
 
 
   blr
-
diff --git a/board/mpl/pip405/pip405.c b/board/mpl/pip405/pip405.c
index 87ca6ef..a77e2c9 100644
--- a/board/mpl/pip405/pip405.c
+++ b/board/mpl/pip405/pip405.c
@@ -530,7 +530,6 @@
 	mtdcr (memcfgd, tmp);
 
 
-
    /*-------------------------------------------------------------------------+
    | Interrupt controller setup for the PIP405 board.
    | Note: IRQ 0-15  405GP internally generated; active high; level sensitive
@@ -673,7 +672,6 @@
 }
 
 
-
 extern int isa_init (void);
 
 
@@ -943,5 +941,3 @@
 	}
 	out8 (PLD_SCSI_RST_REG, resreg);
 }
-
-
diff --git a/board/mpl/pip405/pip405.h b/board/mpl/pip405/pip405.h
index 10f6479..c2411a3 100644
--- a/board/mpl/pip405/pip405.h
+++ b/board/mpl/pip405/pip405.h
@@ -131,7 +131,6 @@
 #define UART1_CR	((PER_UART1_ADDR & 0xfff00000) + (UART0_BS << 17) + (UART0_BU << 15) + (UART0_BW << 13))
 
 
-
 /* Flash CS0 or CS 1 */
 /* 0x7F8FFE80 slowest timing at all... */
 #define FLASH_BME_B	1 	/* Burst enable */
@@ -199,14 +198,3 @@
 #define MPS_CR_B	((FLASH_BASE0_PRELIM & 0xfff00000) + (MPS_BS << 17) + (MPS_BU << 15) + (MPS_BW << 13))
 /* CR register for non Boot */
 #define MPS_CR		((MULTI_PURPOSE_SOCKET_ADDR & 0xfff00000) + (MPS_BS << 17) + (MPS_BU << 15) + (MPS_BW << 13))
-
-
-
-
-
-
-
-
-
-
-
diff --git a/board/mpl/pip405/u-boot.lds b/board/mpl/pip405/u-boot.lds
index f221343..9b83ded 100644
--- a/board/mpl/pip405/u-boot.lds
+++ b/board/mpl/pip405/u-boot.lds
@@ -121,6 +121,11 @@
   _edata  =  .;
   PROVIDE (edata = .);
 
+  __u_boot_cmd_start = .;
+  .u_boot_cmd : { *(.u_boot_cmd) }
+  __u_boot_cmd_end = .;
+
+
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __stop___ex_table = .;
diff --git a/board/mpl/pip405/u-boot.lds.debug b/board/mpl/pip405/u-boot.lds.debug
index f4f9743..d483424 100644
--- a/board/mpl/pip405/u-boot.lds.debug
+++ b/board/mpl/pip405/u-boot.lds.debug
@@ -106,6 +106,11 @@
   _edata  =  .;
   PROVIDE (edata = .);
 
+  __u_boot_cmd_start = .;
+  .u_boot_cmd : { *(.u_boot_cmd) }
+  __u_boot_cmd_end = .;
+
+
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __stop___ex_table = .;
@@ -128,4 +133,3 @@
   _end = . ;
   PROVIDE (end = .);
 }
-
diff --git a/board/mpl/vcma9/Makefile b/board/mpl/vcma9/Makefile
index 428eea2..f9b78f9 100644
--- a/board/mpl/vcma9/Makefile
+++ b/board/mpl/vcma9/Makefile
@@ -31,7 +31,7 @@
 SOBJS	:= memsetup.o
 
 $(LIB):	$(OBJS) $(SOBJS)
-	$(AR) crv $@ $^
+	$(AR) crv $@ $(OBJS) $(SOBJS)
 
 clean:
 	rm -f $(SOBJS) $(OBJS)
diff --git a/board/mpl/vcma9/cmd_vcma9.c b/board/mpl/vcma9/cmd_vcma9.c
index 80bb61b2b..32fa334 100644
--- a/board/mpl/vcma9/cmd_vcma9.c
+++ b/board/mpl/vcma9/cmd_vcma9.c
@@ -141,4 +141,3 @@
 
 	return (do_mplcommon(cmdtp, flag, argc, argv));
 }
-
diff --git a/board/mpl/vcma9/flash.c b/board/mpl/vcma9/flash.c
index b442c9d..91517c4 100644
--- a/board/mpl/vcma9/flash.c
+++ b/board/mpl/vcma9/flash.c
@@ -313,7 +313,7 @@
      */
     result = *addr;
     if ((result & data) != data)
-        return ERR_NOT_ERASED;
+	return ERR_NOT_ERASED;
 
 
     /*
@@ -365,7 +365,7 @@
     *addr = CMD_READ_ARRAY;
 
     if (chip == ERR || *addr != data)
-        rc = ERR_PROG_ERROR;
+	rc = ERR_PROG_ERROR;
 
     if (iflag)
       enable_interrupts();
diff --git a/board/mpl/vcma9/memsetup.S b/board/mpl/vcma9/memsetup.S
index 557e554..7b4193d 100644
--- a/board/mpl/vcma9/memsetup.S
+++ b/board/mpl/vcma9/memsetup.S
@@ -28,7 +28,6 @@
  */
 
 
-
 #include <config.h>
 #include <version.h>
 
diff --git a/board/mpl/vcma9/u-boot.lds b/board/mpl/vcma9/u-boot.lds
index 8c9c218..3a7c4d4 100644
--- a/board/mpl/vcma9/u-boot.lds
+++ b/board/mpl/vcma9/u-boot.lds
@@ -27,28 +27,32 @@
 ENTRY(_start)
 SECTIONS
 {
-        . = 0x00000000;
+	. = 0x00000000;
 
-        . = ALIGN(4);
+	. = ALIGN(4);
 	.text      :
 	{
 	  cpu/arm920t/start.o	(.text)
 	  *(.text)
 	}
 
-        . = ALIGN(4);
-        .rodata : { *(.rodata) }
+	. = ALIGN(4);
+	.rodata : { *(.rodata) }
 
-        . = ALIGN(4);
-        .data : { *(.data) }
+	. = ALIGN(4);
+	.data : { *(.data) }
 
-        . = ALIGN(4);
-        .got : { *(.got) }
+	. = ALIGN(4);
+	.got : { *(.got) }
+
+  __u_boot_cmd_start = .;
+  .u_boot_cmd : { *(.u_boot_cmd) }
+  __u_boot_cmd_end = .;
 
 	armboot_end_data = .;
 
-        . = ALIGN(4);
-        .bss : { *(.bss) }
+	. = ALIGN(4);
+	.bss : { *(.bss) }
 
 	armboot_end = .;
 }
diff --git a/board/mpl/vcma9/vcma9.c b/board/mpl/vcma9/vcma9.c
index b051bfe..1df5c38 100644
--- a/board/mpl/vcma9/vcma9.c
+++ b/board/mpl/vcma9/vcma9.c
@@ -166,9 +166,9 @@
 #define TWRPH0  3
 #define TWRPH1  0
     NF_Conf((1<<15)|(0<<14)|(0<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0));
-    //nand->NFCONF = (1<<15)|(1<<14)|(1<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0);
-    // 1  1    1     1,   1      xxx,  r xxx,   r xxx
-    // En 512B 4step ECCR nFCE=H tACLS   tWRPH0   tWRPH1
+    /*nand->NFCONF = (1<<15)|(1<<14)|(1<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0); */
+    /* 1  1    1     1,   1      xxx,  r xxx,   r xxx */
+    /* En 512B 4step ECCR nFCE=H tACLS   tWRPH0   tWRPH1 */
 
     NF_Reset();
 }
@@ -257,7 +257,6 @@
 }
 
 
-
 void print_vcma9_rev(void)
 {
 	printf("Board: VCMA9-%d PCB Rev: %c (PLD Ver: %d, Rev: %d)\n",
diff --git a/board/mpl/vcma9/vcma9.h b/board/mpl/vcma9/vcma9.h
index 4299d4e..068eb21 100644
--- a/board/mpl/vcma9/vcma9.h
+++ b/board/mpl/vcma9/vcma9.h
@@ -124,4 +124,3 @@
 #define PLD_MISC_REG			(PLD_BASE_ADDRESS + 3)
 #define PLD_GPCD_REG			(PLD_BASE_ADDRESS + 4)
 #define PLD_BOARD_REG			(PLD_BASE_ADDRESS + 5)
-
