ed843ae947
and fix all in-tree references. Architecture-specific documentation is being moved into Documentation/arch/ as a way of cleaning up the top-level documentation directory and making the docs hierarchy more closely match the source hierarchy. Signed-off-by: Costa Shulyupin <costa.shul@redhat.com> Reviewed-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Link: https://lore.kernel.org/r/20230930185354.3034118-1-costa.shul@redhat.com
60 lines
2.2 KiB
ReStructuredText
60 lines
2.2 KiB
ReStructuredText
=================================
|
|
Boot image header in RISC-V Linux
|
|
=================================
|
|
|
|
:Author: Atish Patra <atish.patra@wdc.com>
|
|
:Date: 20 May 2019
|
|
|
|
This document only describes the boot image header details for RISC-V Linux.
|
|
|
|
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 is also reused to support EFI stub for RISC-V. 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 is replaced
|
|
with "MZ" magic string and res3(at offset 0x3c) points 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.
|