Skip to content
  • Zubair Lutfullah Kakakhel's avatar
    bootm: fix passing argc to standalone apps · ba079840
    Zubair Lutfullah Kakakhel authored
    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: default avatarZubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
    Reviewed-by: default avatarSimon Glass <sjg@chromium.org>
    ba079840