47 lines
945 B
Plaintext
47 lines
945 B
Plaintext
OUTPUT_ARCH("riscv")
|
|
OUTPUT_FORMAT("elf32-littleriscv")
|
|
ENTRY(_start)
|
|
|
|
PHDRS {
|
|
text PT_LOAD FLAGS(5);
|
|
data PT_LOAD FLAGS(6);
|
|
}
|
|
|
|
SECTIONS {
|
|
_kernel_base = 0x80400000;
|
|
_kernel_virtual = 0xc0000000;
|
|
_kernel_offset = _kernel_virtual - _kernel_base;
|
|
|
|
.text _kernel_virtual : AT(ADDR(.text) - _kernel_offset) {
|
|
KEEP(*(.text.boot));
|
|
ASSERT(. - ADDR(.text) <= 0x1000, "error: stub larger than one page");
|
|
*(.text .text.*);
|
|
} :text
|
|
|
|
. = ALIGN(CONSTANT(MAXPAGESIZE));
|
|
PROVIDE(etext = . - _kernel_offset);
|
|
|
|
.rodata : AT(ADDR(.rodata) - _kernel_offset) ALIGN(16) {
|
|
*(.rodata .rodata.*);
|
|
}
|
|
|
|
. = ALIGN(CONSTANT(MAXPAGESIZE));
|
|
PROVIDE(_data = . - _kernel_offset);
|
|
|
|
.data : AT(ADDR(.data) - _kernel_offset) ALIGN(16) {
|
|
*(.data .data.*);
|
|
} :data
|
|
|
|
.bss (NOLOAD) : {
|
|
PROVIDE(__bss_start = .);
|
|
*(.bss .bss.* .sbss .sbss.*);
|
|
}
|
|
|
|
. = ALIGN(CONSTANT(MAXPAGESIZE));
|
|
PROVIDE(end = . - _kernel_offset);
|
|
|
|
/DISCARD/ : {
|
|
*(.eh_frame)
|
|
}
|
|
}
|