On 9 September 2016 at 02:18, Zubair Lutfullah Kakakhel <zubair.kakak...@imgtec.com> wrote: > This bug appears in b6396403 which makes u-boot unable to pass > arguments via bootm to a standalone application without this patch. > > Steps to reproduce. > > Compile a u-boot. Use mkimage to package the standalone hello_world.bin > file. > > e.g. For the MIPS Boston platform > > mkimage -n "hello" -A mips -O u-boot -C none -T standalone \ > -a 0xffffffff80200000 -d hello_world.bin \ > -ep 0xffffffff80200000 hello_out > > Then tftp hello_out and run it using > > boston # dhcp 192.168.154.45:hello_out > ... > boston # bootm $loadaddr 123 321 > > Without the patch the following output is observed. > > boston # bootm $loadaddr 123 321 > Image Name: hello > Image Type: MIPS U-Boot Standalone Program (uncompressed) > Data Size: 1240 Bytes = 1.2 KiB > Load Address: 80200000 > Entry Point: 80200000 > Verifying Checksum ... OK > Loading Standalone Program ... OK > Example expects ABI version 8 > Actual U-Boot ABI version 8 > Hello World > argc = 0 > argv[0] = "0xffffffff88000000" > > With the patch, you see the following. > > boston # bootm $loadaddr 123 321 > Image Name: hello > Image Type: MIPS U-Boot Standalone Program (uncompressed) > Data Size: 1240 Bytes = 1.2 KiB > Load Address: 80200000 > Entry Point: 80200000 > Verifying Checksum ... OK > Loading Standalone Program ... OK > Example expects ABI version 8 > Actual U-Boot ABI version 8 > Hello World > argc = 3 > argv[0] = "0xffffffff88000000" > argv[1] = "123" > argv[2] = "321" > argv[3] = "<NULL>" > > Without the patch, the go command at the entry point seems to work. > > boston # go 0xffffffff80200000 123 321 > Example expects ABI version 8 > Actual U-Boot ABI version 8 > Hello World > argc = 3 > argv[0] = "0xffffffff80200000" > argv[1] = "123" > argv[2] = "321" > argv[3] = "<NULL>" > Hit any key to exit ... > > Signed-off-by: Zubair Lutfullah Kakakhel <zubair.kakak...@imgtec.com> > > --- > > Tested on the MIPS Boston platform. > --- > common/bootm.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/common/bootm.c b/common/bootm.c > index e6da551..a26ada4 100644 > --- a/common/bootm.c > +++ b/common/bootm.c > @@ -602,10 +602,8 @@ int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int > argc, char * const argv[], > if (!ret && (states & BOOTM_STATE_FINDOS)) > ret = bootm_find_os(cmdtp, flag, argc, argv); > > - if (!ret && (states & BOOTM_STATE_FINDOTHER)) { > + if (!ret && (states & BOOTM_STATE_FINDOTHER)) > ret = bootm_find_other(cmdtp, flag, argc, argv); > - argc = 0; /* consume the args */ > - } > > /* Load the OS */ > if (!ret && (states & BOOTM_STATE_LOADOS)) { > -- > 1.9.1 >
Reviewed-by: Simon Glass <s...@chromium.org> _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot