Coppy original mapping to the higher half

This commit is contained in:
2025-07-30 23:11:12 +02:00
parent eac9236e44
commit d12bfbcd43
3 changed files with 266 additions and 242 deletions

View File

@@ -1,23 +1,20 @@
OUTPUT_ARCH("riscv")
OUTPUT_FORMAT("elf32-littleriscv")
ENTRY(_entry)
ENTRY(_start)
PHDRS {
boot PT_LOAD FLAGS(5);
text PT_LOAD FLAGS(5);
data PT_LOAD FLAGS(6);
}
SECTIONS {
.text.boot 0x80200000 : {
_kernel_base = 0x80400000;
_kernel_virtual = 0xc0000000;
_kernel_offset = _kernel_virtual - _kernel_base;
.text _kernel_virtual : AT(ADDR(.text) - _kernel_offset) {
KEEP(*(.text.boot));
. = ALIGN(CONSTANT(MAXPAGESIZE));
ASSERT(. - ADDR(.text.boot) == 0x1000, "error: stub larger than one page");
} :boot
_kernel_offset = 0x3fdff000;
.text 0xc0000000 : AT(ADDR(.text) - _kernel_offset) {
PROVIDE(__executable_start = . - _kernel_offset);
ASSERT(. - ADDR(.text) <= 0x1000, "error: stub larger than one page");
*(.text .text.*);
} :text
@@ -33,10 +30,10 @@ SECTIONS {
.data : AT(ADDR(.data) - _kernel_offset) ALIGN(16) {
*(.data .data.*);
}
} :data
.bss (NOLOAD) : {
PROVIDE(__bss_start = . - _kernel_offset);
PROVIDE(__bss_start = .);
*(.bss .bss.* .sbss .sbss.*);
}