From 45f420a338ea02225bb8a98c9aca5eed8d6a23ae Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Sun, 2 Jun 2024 00:26:57 +0200 Subject: Initial commit --- kernel/linker.lds | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 kernel/linker.lds (limited to 'kernel/linker.lds') diff --git a/kernel/linker.lds b/kernel/linker.lds new file mode 100644 index 0000000..64ea771 --- /dev/null +++ b/kernel/linker.lds @@ -0,0 +1,57 @@ +MEMORY { + ram (wxa) : ORIGIN = 0x80000000, LENGTH = 128M +} + +PHDRS { + text PT_LOAD; + rodata PT_LOAD; + data PT_LOAD; + bss PT_LOAD; +} + +SECTIONS { + .text : ALIGN(4K) { + PROVIDE(_text_start = .); + *(.text.init); + *(.text .text.*); + . = ALIGN(4K); + PROVIDE(_text_end = .); + } >ram AT>ram :text + + PROVIDE(_global_pointer = .); + + .rodata : ALIGN(4K) { + PROVIDE(_rodata_start = .); + *(.rodata .rodata.*); + . = ALIGN(4K); + PROVIDE(_rodata_end = .); + } >ram AT>ram :rodata + + .data : ALIGN(4K) { + PROVIDE(_data_start = .); + *(.data .data.*); + . = ALIGN(4K); + PROVIDE(_data_end = .); + } >ram AT>ram :data + + .bss : ALIGN(4K) { + PROVIDE(_bss_start = .); + *(.sbss .sbss.*); + *(.bss .bss.*); + . = ALIGN(4K); + PROVIDE(_bss_end = .); + } >ram AT>ram :bss + + . = ALIGN(4K); + PROVIDE(_stack_start = .); + + PROVIDE(_stack_top = _stack_start + 0x100000); + PROVIDE(_stack_end = _stack_top); + + PROVIDE(_ram_start = ORIGIN(ram)); + PROVIDE(_ram_end = _ram_start + LENGTH(ram)); + + PROVIDE(_heap_start = _stack_end); + PROVIDE(_heap_size = ORIGIN(ram) + LENGTH(ram) - _heap_start); + PROVIDE(_heap_end = _heap_start + _heap_size); +} -- cgit