diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-06-02 00:26:57 +0200 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-06-02 00:26:57 +0200 |
commit | 45f420a338ea02225bb8a98c9aca5eed8d6a23ae (patch) | |
tree | 97fdb1c8e81ba79b101b928158e5e37fa938c8f3 /kernel/linker.lds |
Initial commit
Diffstat (limited to 'kernel/linker.lds')
-rw-r--r-- | kernel/linker.lds | 57 |
1 files changed, 57 insertions, 0 deletions
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);
+}
|