diff --git a/board/dnp1110/Makefile b/board/dnp1110/Makefile
index 2437b22..31ef695 100644
--- a/board/dnp1110/Makefile
+++ b/board/dnp1110/Makefile
@@ -29,7 +29,7 @@
 SOBJS	:= memsetup.o
 
 $(LIB):	$(OBJS) $(SOBJS)
-	$(AR) crv $@ $^
+	$(AR) crv $@ $(OBJS) $(SOBJS)
 
 clean:
 	rm -f $(SOBJS) $(OBJS)
diff --git a/board/dnp1110/flash.c b/board/dnp1110/flash.c
index f4a8b99..4416393 100644
--- a/board/dnp1110/flash.c
+++ b/board/dnp1110/flash.c
@@ -67,16 +67,16 @@
 
     for (i = 0; i < CFG_MAX_FLASH_BANKS; i++)
     {
-        switch (i)
-        {
-           case 0:
-            flash_get_size((FPW *)PHYS_FLASH_1, &flash_info[i]);
-	         flash_get_offsets(PHYS_FLASH_1, &flash_info[i]);
-                break;
-           default:
-	        panic("configured to many flash banks!\n");
-                break;
-        }
+	switch (i)
+	{
+	   case 0:
+	    flash_get_size((FPW *)PHYS_FLASH_1, &flash_info[i]);
+		 flash_get_offsets(PHYS_FLASH_1, &flash_info[i]);
+		break;
+	   default:
+		panic("configured to many flash banks!\n");
+		break;
+	}
 	size += flash_info[i].size;
     }
 
@@ -122,7 +122,7 @@
 	if (info->flash_id == FLASH_UNKNOWN) {
 		printf ("missing or unknown FLASH type\n");
 		return;
-        }
+	}
 
 	switch (info->flash_id & FLASH_VENDMASK) {
 		case FLASH_MAN_INTEL:	printf ("INTEL ");		break;
@@ -133,21 +133,21 @@
    case FLASH_28F128J3A:
 				printf ("28F128J3A\n"); break;
 	default:		printf ("Unknown Chip Type\n"); break;
-        }
+	}
 
 	printf ("  Size: %ld MB in %d Sectors\n",
-	        info->size >> 20, info->sector_count);
+		info->size >> 20, info->sector_count);
 
 	printf ("  Sector Start Addresses:");
 	for (i=0; i<info->sector_count; ++i) {
-	        if ((i % 5) == 0)
-	        printf ("\n   ");
+		if ((i % 5) == 0)
+		printf ("\n   ");
 		printf (" %08lX%s",
 			info->start[i],
 			info->protect[i] ? " (RO)" : "     "
 		);
-        }
-        printf ("\n");
+	}
+	printf ("\n");
 	return;
 }
 
@@ -164,7 +164,7 @@
 
    mb();
 	value = addr[0];
-	
+
    switch (value) {
 
    case (FPW)INTEL_MANUFACT:
@@ -280,8 +280,8 @@
 			*addr = (FPW)0x00FF00FF; /* resest to read mode          */
 
 			printf (" done\n");
-        }
-        }
+	}
+	}
 	return rcode;
 }
 
@@ -350,7 +350,7 @@
 		cnt -= port_width;
 		if (count++ > 0x800)
 		{
-         spin_wheel();
+	 spin_wheel();
 			count = 0;
 		}
     }
@@ -422,4 +422,3 @@
    printf("\010%c", w[p]);
    (++p == 3) ? (p = 0) : 0;
 }
-
diff --git a/board/dnp1110/memsetup.S b/board/dnp1110/memsetup.S
index 6539c20..1622aea 100644
--- a/board/dnp1110/memsetup.S
+++ b/board/dnp1110/memsetup.S
@@ -24,7 +24,6 @@
  */
 
 
-
 #include "config.h"
 #include "version.h"
 
@@ -39,7 +38,7 @@
 #define MDCAS01		0x08		/* CAS waveform rotate reg 1 bank  */
 #define MDCAS02		0x0C		/* CAS waveform rotate reg 2 bank  */
 #define MDREFR		0x1C		/* DRAM refresh control reg        */
-#define MDCAS20		0x20		/* CAS waveform rotate reg 0 bank  */ 
+#define MDCAS20		0x20		/* CAS waveform rotate reg 0 bank  */
 #define MDCAS21		0x24		/* CAS waveform rotate reg 1 bank  */
 #define MDCAS22		0x28		/* CAS waveform rotate reg 2 bank  */
 #define MECR		0x18		/* Expansion memory (PCMCIA) bus configuration  register */
diff --git a/board/dnp1110/u-boot.lds b/board/dnp1110/u-boot.lds
index f4b0ade..7ac165e 100644
--- a/board/dnp1110/u-boot.lds
+++ b/board/dnp1110/u-boot.lds
@@ -26,28 +26,34 @@
 ENTRY(_start)
 SECTIONS
 {
-        . = 0x00000000;
+	. = 0x00000000;
 
-        . = ALIGN(4);
+	. = ALIGN(4);
 	.text      :
 	{
 	  cpu/sa1100/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 = .;
 }
