mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.2 KiB
62 lines
2.2 KiB
================================= |
|
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.
|
|
|