[U-Boot] [PATCH] Gracefully handle 64-bit Load Address and Entry Point Address mkimage parameters

William Cohen wcohen at redhat.com
Mon Feb 15 04:25:32 CET 2016

From: no one <noone at example.com>

Recent MIPS Linux kernels are using a 64-bit value for the load
address (0xffffffff80010000) for the Creator CI20 board kernel.  When
this argument was passed to the mkimage program running on a 32-bit
machine such as the Creator CI20 board the load address was
incorrectly obtained from the first half of the argument, 0xffffffff
by the strtoul.  The mkimage should be able to tolerate the longer,
64-bit signed version of the arguments with the use of strtoull.
 tools/mkimage.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/mkimage.c b/tools/mkimage.c
index 8f8b6df..b6c2958 100644
--- a/tools/mkimage.c
+++ b/tools/mkimage.c
@@ -129,7 +129,7 @@ int main(int argc, char **argv)
 			case 'a':
 				if (--argc <= 0)
 					usage ();
-				params.addr = strtoul (*++argv, &ptr, 16);
+				params.addr = strtoull (*++argv, &ptr, 16);
 				if (*ptr) {
 					fprintf (stderr,
 						"%s: invalid load address %s\n",
@@ -146,7 +146,7 @@ int main(int argc, char **argv)
 			case 'e':
 				if (--argc <= 0)
 					usage ();
-				params.ep = strtoul (*++argv, &ptr, 16);
+				params.ep = strtoull (*++argv, &ptr, 16);
 				if (*ptr) {
 					fprintf (stderr,
 						"%s: invalid entry point %s\n",

More information about the U-Boot mailing list