diff options
| author | Nathan Lee <me@nwlee.tech> | 2026-09-13 17:46:26 -0500 |
|---|---|---|
| committer | Nathan Lee <me@nwlee.tech> | 2026-09-13 17:46:26 -0500 |
| commit | 09be8ace254a7f8bb69542d09a6b2013636123a2 (patch) | |
| tree | 928011aa958624369cefeb46f9e206093a55e0a2 /kernel | |
| parent | 11501f6f0c82712ea5f172f9177f2375c87d06e9 (diff) | |
EFI boot header support
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/riscv/header.S | 23 | ||||
| -rw-r--r-- | kernel/riscv/linker.ld | 13 |
2 files changed, 36 insertions, 0 deletions
diff --git a/kernel/riscv/header.S b/kernel/riscv/header.S new file mode 100644 index 0000000..cca2594 --- /dev/null +++ b/kernel/riscv/header.S @@ -0,0 +1,23 @@ +.section .header, "a", @progbits +.extern _start +#define CODE0 0x4d, 0x5a, 0, 0 +#define FLAGS 0 +#define TEXT_OFFSET 0 +#define HEADER_VERSION 0x00000002 +#define RES1 0 +#define RES2 0 +#define RES3 0 +#define MAGIC 0x5643534952 +#define MAGIC2 0x05435352 +header: + .byte CODE0 + j _start + .quad TEXT_OFFSET + .quad 0 # image_size + .quad FLAGS + .int HEADER_VERSION + .int RES1 + .quad RES2 + .quad MAGIC + .int MAGIC2 + .int RES3 diff --git a/kernel/riscv/linker.ld b/kernel/riscv/linker.ld index ec51176..6689dce 100644 --- a/kernel/riscv/linker.ld +++ b/kernel/riscv/linker.ld @@ -10,6 +10,11 @@ MEMORY SECTIONS { + .header : { + KEEP(*(.header)) + *(.header) + } > ROM + .text : { KEEP(*(.text._start)) KEEP(*(.text.start)) @@ -60,6 +65,11 @@ SECTIONS __ringbuf_end = .; } > LOGRAM + .image_end (NOLOAD) : { + . = ALIGN(4); + __image_end = .; + } > ROM + /DISCARD/ : { *(.eh_frame) *(.eh_frame.*) @@ -71,4 +81,7 @@ SECTIONS *(.llvm_*) *(.rela.*) } + + __image_start = ORIGIN(ROM); + __image_size = __image_end - __image_start; } |
