diff --git a/board/ebony/Makefile b/board/ebony/Makefile
index 61aee68..4a3927b 100644
--- a/board/ebony/Makefile
+++ b/board/ebony/Makefile
@@ -29,7 +29,7 @@
 SOBJS	= init.o
 
 $(LIB):	$(OBJS) $(SOBJS)
-	$(AR) crv $@ $^
+	$(AR) crv $@ $(OBJS)
 
 clean:
 	rm -f $(SOBJS) $(OBJS)
diff --git a/board/ebony/ebony.c b/board/ebony/ebony.c
index b36d542..bb284ae 100644
--- a/board/ebony/ebony.c
+++ b/board/ebony/ebony.c
@@ -92,7 +92,6 @@
 }
 
 
-
 int checkboard (void)
 {
 	sys_info_t sysinfo;
@@ -225,8 +224,8 @@
 	 *--------------------------------------------------------------------------*/
     strap = mfdcr(cpc0_strp1);
     if( (strap & 0x00100000) == 0 ){
-        printf("PCI: CPC0_STRP1[PAE] not set.\n");
-        return 0;
+	printf("PCI: CPC0_STRP1[PAE] not set.\n");
+	return 0;
     }
 
     return 1;
diff --git a/board/ebony/flash.c b/board/ebony/flash.c
index 961c616..d8b4757 100644
--- a/board/ebony/flash.c
+++ b/board/ebony/flash.c
@@ -55,14 +55,14 @@
 flash_info_t	flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips	*/
 
 static  unsigned    long    flash_addr_table[8][CFG_MAX_FLASH_BANKS] = {
-        {0xffc00000, 0xffe00000, 0xff880000},   /* 0:000: configuraton 3 */
-        {0xffc00000, 0xffe00000, 0xff800000},   /* 1:001: configuraton 4 */
-        {0xffc00000, 0xffe00000, 0x00000000},   /* 2:010: configuraton 7 */
-        {0xffc00000, 0xffe00000, 0x00000000},   /* 3:011: configuraton 8 */
-        {0xff800000, 0xffa00000, 0xfff80000},   /* 4:100: configuraton 1 */
-        {0xff800000, 0xffa00000, 0xfff00000},   /* 5:101: configuraton 2 */
-        {0xffc00000, 0xffe00000, 0x00000000},   /* 6:110: configuraton 5 */
-        {0xffc00000, 0xffe00000, 0x00000000}    /* 7:111: configuraton 6 */
+	{0xffc00000, 0xffe00000, 0xff880000},   /* 0:000: configuraton 3 */
+	{0xffc00000, 0xffe00000, 0xff800000},   /* 1:001: configuraton 4 */
+	{0xffc00000, 0xffe00000, 0x00000000},   /* 2:010: configuraton 7 */
+	{0xffc00000, 0xffe00000, 0x00000000},   /* 3:011: configuraton 8 */
+	{0xff800000, 0xffa00000, 0xfff80000},   /* 4:100: configuraton 1 */
+	{0xff800000, 0xffa00000, 0xfff00000},   /* 5:101: configuraton 2 */
+	{0xffc00000, 0xffe00000, 0x00000000},   /* 6:110: configuraton 5 */
+	{0xffc00000, 0xffe00000, 0x00000000}    /* 7:111: configuraton 6 */
 };
 
 /*-----------------------------------------------------------------------
@@ -156,7 +156,6 @@
 }
 
 
-
 /*-----------------------------------------------------------------------
  */
 #if 0
@@ -199,10 +198,10 @@
 void flash_print_info  (flash_info_t *info)
 {
 	int i;
-        int k;
-        int size;
-        int erased;
-        volatile unsigned long *flash;
+	int k;
+	int size;
+	int erased;
+	volatile unsigned long *flash;
 
 	if (info->flash_id == FLASH_UNKNOWN) {
 		printf ("missing or unknown FLASH type\n");
@@ -250,17 +249,17 @@
 
 	printf ("  Sector Start Addresses:");
 	for (i=0; i<info->sector_count; ++i) {
-                /*
-                 * Check if whole sector is erased
-                 */
-                if (i != (info->sector_count-1))
+		/*
+		 * Check if whole sector is erased
+		 */
+		if (i != (info->sector_count-1))
 			size = info->start[i+1] - info->start[i];
-                else
+		else
 			size = info->start[0] + info->size - info->start[i];
-                erased = 1;
-                flash = (volatile unsigned long *)info->start[i];
-                size = size >> 2;        /* divide by 4 for longword access */
-                for (k=0; k<size; k++)
+		erased = 1;
+		flash = (volatile unsigned long *)info->start[i];
+		size = size >> 2;        /* divide by 4 for longword access */
+		for (k=0; k<size; k++)
 		{
 			if (*flash++ != 0xffffffff)
 			{
@@ -298,16 +297,16 @@
 			ulong base = (ulong)addr;
 			volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)addr;
 
-            DEBUGF("FLASH ADDR: %08x\n", (unsigned)addr );
+	    DEBUGF("FLASH ADDR: %08x\n", (unsigned)addr );
 
 			/* Write auto select command: read Manufacturer ID */
-            udelay(10000);
+	    udelay(10000);
 			addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
-            udelay(1000);
+	    udelay(1000);
 			addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
-            udelay(1000);
+	    udelay(1000);
 			addr2[ADDR0] = (FLASH_WORD_SIZE)0x00900090;
-            udelay(1000);
+	    udelay(1000);
 
 #ifdef CONFIG_ADCIOP
 			value = addr2[2];
@@ -352,11 +351,11 @@
 				info->sector_count = 32;
 				info->size = 0x00200000;
 				break;				/* => 2 MB		*/
-                        case (FLASH_WORD_SIZE)STM_ID_F040B:
-                                info->flash_id += FLASH_AM040;
-                                info->sector_count = 8;
-                                info->size = 0x0080000; /* => 512 ko */
-                                break;				
+			case (FLASH_WORD_SIZE)STM_ID_F040B:
+				info->flash_id += FLASH_AM040;
+				info->sector_count = 8;
+				info->size = 0x0080000; /* => 512 ko */
+				break;
 			case (FLASH_WORD_SIZE)AMD_ID_F040B:
 				info->flash_id += FLASH_AM040;
 				info->sector_count = 8;
diff --git a/board/ebony/init.S b/board/ebony/init.S
index 3ae93d6..cc8f8b4 100644
--- a/board/ebony/init.S
+++ b/board/ebony/init.S
@@ -94,5 +94,3 @@
     tlbentry( CFG_PCI_BASE, SZ_256M, 0x00000000, 2, AC_R|AC_W|SA_G|SA_I )
     tlbentry( CFG_PCI_MEMBASE, SZ_256M, 0x00000000, 3, AC_R|AC_W|SA_G|SA_I )
     tlbtab_end
-
-
diff --git a/board/ebony/u-boot.lds b/board/ebony/u-boot.lds
index ab8af7d..7ea7caf 100644
--- a/board/ebony/u-boot.lds
+++ b/board/ebony/u-boot.lds
@@ -126,6 +126,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/ebony/u-boot.lds.debug b/board/ebony/u-boot.lds.debug
index c290a43..af497b1 100644
--- a/board/ebony/u-boot.lds.debug
+++ b/board/ebony/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 = .);
 }
-
