1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- =================================
- Boot image header in RISC-V Linux
- =================================
- :Author: Atish Patra <[email protected]>
- :Date: 20 May 2019
- This document only describes the boot image header details for RISC-V Linux.
- TODO:
- Write a complete booting guide.
- The following 64-byte header is present in decompressed Linux kernel image::
- u32 code0; /* Executable code */
- u32 code1; /* Executable code */
- u64 text_offset; /* Image load offset, little endian */
- u64 image_size; /* Effective Image size, little endian */
- u64 flags; /* kernel flags, little endian */
- u32 version; /* Version of this header */
- u32 res1 = 0; /* Reserved */
- u64 res2 = 0; /* Reserved */
- u64 magic = 0x5643534952; /* Magic number, little endian, "RISCV" */
- u32 magic2 = 0x05435352; /* Magic number 2, little endian, "RSC\x05" */
- u32 res3; /* Reserved for PE COFF offset */
- This header format is compliant with PE/COFF header and largely inspired from
- ARM64 header. Thus, both ARM64 & RISC-V header can be combined into one common
- header in future.
- Notes
- =====
- - This header can also be reused to support EFI stub 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 res3(at offset 0x3c) should
- point to the rest of the PE/COFF header.
- - version field indicate header version number
- ========== =============
- Bits 0:15 Minor version
- Bits 16:31 Major version
- ========== =============
- This preserves compatibility across newer and older version of the header.
- The current version is defined as 0.2.
- - The "magic" field is deprecated as of version 0.2. In a future
- release, it may be removed. This originally should have matched up
- with the ARM64 header "magic" field, but unfortunately does not.
- The "magic2" field replaces it, matching up with the ARM64 header.
- - In current header, the flags field has only one field.
- ===== ====================================
- Bit 0 Kernel endianness. 1 if BE, 0 if LE.
- ===== ====================================
- - Image size is mandatory for boot loader to load kernel image. Booting will
- fail otherwise.
|