• Atish Patra's avatar
    RISC-V: Add an Image header that boot loader can parse. · 0f327f2a
    Atish Patra authored
    Currently, the last stage boot loaders such as U-Boot can accept only
    uImage which is an unnecessary additional step in automating boot
    process.
    
    Add an image header that boot loader understands and boot Linux from
    flat Image directly.
    
    This header is based on ARM64 boot image header and provides an
    opportunity to combine both ARM64 & RISC-V image headers in future.
    
    Also make sure that PE/COFF header can co-exist in the same image so
    that EFI stub can be supported for RISC-V in future. EFI specification
    needs PE/COFF image header in the beginning of the kernel image in order
    to load it as an EFI application. In order to support EFI stub, code0
    should be replaced with "MZ" magic string and res4(at offset 0x3c)
    should point to the rest of the PE/COFF header (which will be added
    during EFI support).
    
    Tested on both QEMU and HiFive Unleashed using OpenSBI + U-Boot + Linux.
    Signed-off-by: default avatarAtish Patra <atish.patra@wdc.com>
    Reviewed-by: default avatarKarsten Merker <merker@debian.org>
    Tested-by: Karsten Merker <merker@debian.org> (QEMU+OpenSBI+U-Boot)
    Tested-by: Kevin Hilman <khilman@baylibre.com> (OpenSBI + U-Boot + Linux)
    [paul.walmsley@sifive.com: fixed whitespace in boot-image-header.txt;
     converted structure comment to kernel-doc format and added some detail]
    Signed-off-by: default avatarPaul Walmsley <paul.walmsley@sifive.com>
    0f327f2a
head.S 4.22 KB