aboutsummaryrefslogtreecommitdiff
path: root/linker.ld
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-04-16 15:10:04 +0200
committerHimbeer <himbeer@disroot.org>2024-04-16 15:10:04 +0200
commitc5331b4d3d8f02a4b8eb0166ae4ecce3c4d08942 (patch)
tree1d58c1dd1eedac528b60c8a05502ca246c013635 /linker.ld
parentf7a77113e2229974886beebcbf3b891bcf118ab7 (diff)
initial paging helpers
Diffstat (limited to 'linker.ld')
-rw-r--r--linker.ld25
1 files changed, 21 insertions, 4 deletions
diff --git a/linker.ld b/linker.ld
index 323eb69..46d03e0 100644
--- a/linker.ld
+++ b/linker.ld
@@ -1,5 +1,9 @@
OUTPUT_ARCH("riscv")
+MEMORY {
+ ram (wxa) : ORIGIN = 0x80200000, LENGTH = 128M
+}
+
ENTRY(start)
PHDRS {
@@ -13,11 +17,24 @@ SECTIONS {
.text (0x80200000) : {
*(.text.start)
*(.text .text.*)
- } : lo_rx
+ } > ram AT > ram : lo_rx
+
+ .rodata : { *(.rodata .rodata.*) } > ram AT > ram : lo_r
+ .data : { *(.data .data.* ) } > ram AT > ram : lo_rw
+ .bss : {
+ *(.bss .bss.*)
- .rodata : { *(.rodata .rodata.*) } : lo_r
- .data : { *(.data .data.* ) } : lo_rw
- .bss : { *(.bss .bss.* ) } : lo_rw
+ PROVIDE(_bss_end = .);
+ } > ram AT > ram : lo_rw
/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
+
+ PROVIDE(_memory_start = ORIGIN(ram));
+ PROVIDE(_memory_end = ORIGIN(ram) + LENGTH(ram));
+
+ PROVIDE(_stack_start = _bss_end);
+ PROVIDE(_stack_end = _stack_start + 0x80000);
+
+ PROVIDE(_heap_start = _stack_end);
+ PROVIDE(_heap_size = _memory_end - _heap_start);
}