--- ecos-2.0-orig/packages/hal/i386/pc/v2_0/include/platform.inc	2008-07-02 05:21:19.000000000 +0200
+++ ecos-2.0/packages/hal/i386/pc/v2_0/include/platform.inc	2008-07-02 05:22:26.000000000 +0200
@@ -80,6 +80,23 @@
 
 hal_cpu_init_start:
 
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+
 	# Disable interrupt handling.
 	cli
 
--- ecos-2.0-orig/packages/hal/i386/pc/v2_0/src/romboot.S	2008-07-02 05:21:19.000000000 +0200
+++ ecos-2.0/packages/hal/i386/pc/v2_0/src/romboot.S	2008-07-02 05:22:26.000000000 +0200
@@ -386,8 +386,8 @@
 	# jump to start of ROM, where the PM code starts	
 #	ljmp	$8,$0xF0000
 	.byte	0x66,0xea	# opsize + ljmp opcode
-	.long	0x000e0000	# destination address for 128K ROM
-#	.long	0x000F0000	# destination address for 64K ROM
+	.long	0x000e0010	# destination address for 128K ROM
+#	.long	0x000F0010	# destination address for 64K ROM
 	.word	0x0008		# code selector
 
 	.code16
--- ecos-2.0-orig/packages/redboot/v2_0/src/main.c	2008-07-02 05:21:36.000000000 +0200
+++ ecos-2.0/packages/redboot/v2_0/src/main.c	2008-07-04 20:57:55.000000000 +0200
@@ -212,6 +212,7 @@
     unsigned long reg;
     int backup_key = 0;
     int shutdown_key = 0;
+    char *ptr;
 
     //RDC
     RDC_PCI_INIT();
@@ -346,8 +347,22 @@
             HAL_WRITE_UINT32(0xCF8,0x8000384C);
             HAL_WRITE_UINT32(0xCFC,0xFFFFFFCF);
           }
-	  memcpy((char *)KERNEL_RAM_BASE,(char *)KERNEL_FLASH_BASE,KERNEL_LEN);
-	  memcpy((char *)INITRD_RAM_BASE,(char *)INITRD_FLASH_BASE,INITRD_LEN); 
+/*
+Li Header:                                                                      
+00..03: unknown (-> makeamitbin)                                                
+04..07: always ffff ffff                                                        
+08..0b: length payload                                                          
+0c..0d: checksum of payload                                                     
+0e..0f: 'Li'
+*/
+	  ptr = (char *)KERNEL_FLASH_BASE;
+	  if (ptr[14] == 'L' && ptr[15] == 'i' && ptr[4] == '\xff')
+	    ptr += 16;
+	  memcpy((char *)KERNEL_RAM_BASE,ptr,KERNEL_LEN);
+	  ptr = (char *)INITRD_FLASH_BASE;
+	  if (ptr[14] == 'L' && ptr[15] == 'i' && ptr[4] == '\xff')
+	    ptr += 16;
+	  memcpy((char *)INITRD_RAM_BASE,ptr,INITRD_LEN); 
 	  res = _GETS_OK ;
 	  //strcpy( line,"linux -b 0x400000 -l 0x200000 -s 0x1e0000 -c \"console=ttyS0,38400\"" ) ;
 	  strcpy( line, LINUX_CMD_S);
