[U-Boot-Users] Bug in cmd_bootm.c (byteorder)

Steven Scholz steven.scholz at imc-berlin.de
Fri Jun 10 13:43:53 CEST 2005


Hi there,

IIUC then numbers in image headers (image_header_t) are stored in network 
byteorder. So when manipulating image headers on the target (i.e. 
overwriting ih_load) this has to be done in network byteorder.

I noticed a problem when passing a second argument to bootm

#> bootm 20500000 20400000

on an ARM platform.

The data from the my "ARM U-Boot Standalone Program (uncompressed)" was 
wrongly copied to 0x00004020!

So I suggest the following buxfix:

Index: common/cmd_bootm.c
===================================================================
RCS file: /cvsroot/u-boot/u-boot/common/cmd_bootm.c,v
retrieving revision 1.42
diff -u -r1.42 cmd_bootm.c
--- common/cmd_bootm.c  3 Apr 2005 21:11:18 -0000       1.42
+++ common/cmd_bootm.c  10 Jun 2005 11:43:11 -0000
@@ -261,7 +261,7 @@
                 name = "Standalone Application";
                 /* A second argument overwrites the load address */
                 if (argc > 2) {
-                       hdr->ih_load = simple_strtoul(argv[2], NULL, 16);
+                       hdr->ih_load = htonl(simple_strtoul(argv[2], NULL, 16));
                 }
                 break;
         case IH_TYPE_KERNEL:

--
Steven





More information about the U-Boot mailing list