Documentation/arch/riscv/boot-image-header.rst
Source file repositories/reference/linux-study-clean/Documentation/arch/riscv/boot-image-header.rst
File Facts
- System
- Linux kernel
- Corpus path
Documentation/arch/riscv/boot-image-header.rst- Extension
.rst- Size
- 2233 bytes
- Lines
- 60
- Domain
- Support Tooling And Documentation
- Bucket
- Documentation
- Inferred role
- Support Tooling And Documentation: documentation
- Status
- atlas-only
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
Dependency Surface
- No C-style include directives detected by the generator.
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
=================================
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.
Annotation
- Atlas domain: Support Tooling And Documentation / Documentation.
- Implementation status: atlas-only.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.