--- a/tools/mkimage.c +++ b/tools/mkimage.c @@ -24,6 +24,7 @@ struct image_tool_params params = { .arch = IH_ARCH_PPC, .type = IH_TYPE_KERNEL, .comp = IH_COMP_GZIP, + .magic = IH_MAGIC, .dtc = MKIMAGE_DEFAULT_DTC_OPTIONS, .imagename = "", .imagename2 = "", @@ -168,6 +169,16 @@ main (int argc, char **argv) genimg_get_comp_id (*++argv)) < 0) usage (); goto NXTARG; + case 'M': + if (--argc <=0) + usage (); + params.magic = strtoul (*++argv, &ptr, 16); + if (*ptr) { + fprintf (stderr, + "%s: invalid magic %s\n", + params.cmdname, *argv); + } + goto NXTARG; case 'D': if (--argc <= 0) usage (); @@ -623,12 +634,13 @@ static void usage(void) fprintf (stderr, "Usage: %s -l image\n" " -l ==> list image header information\n", params.cmdname); - fprintf (stderr, " %s [-x] -A arch -O os -T type -C comp " + fprintf (stderr, " %s [-x] -A arch -O os -T type -C comp -M magic " "-a addr -e ep -n name -d data_file[:data_file...] image\n" " -A ==> set architecture to 'arch'\n" " -O ==> set operating system to 'os'\n" " -T ==> set image type to 'type'\n" " -C ==> set compression type 'comp'\n" + " -M ==> set image magic to 'magic'\n" " -a ==> set load address to 'addr' (hex)\n" " -e ==> set entry point to 'ep' (hex)\n" " -n ==> set image name to 'name'\n" --- a/tools/default_image.c +++ b/tools/default_image.c @@ -98,7 +98,7 @@ static void image_set_header(void *ptr, sbuf->st_size - sizeof(image_header_t)); /* Build new header */ - image_set_magic(hdr, IH_MAGIC); + image_set_magic(hdr, params->magic); image_set_time(hdr, sbuf->st_mtime); image_set_size(hdr, sbuf->st_size - sizeof(image_header_t)); image_set_load(hdr, params->addr); --- a/tools/imagetool.h +++ b/tools/imagetool.h @@ -44,6 +44,7 @@ struct image_tool_params { int arch; int type; int comp; + unsigned int magic; char *dtc; unsigned int addr; unsigned int ep;