aboutsummaryrefslogtreecommitdiff
path: root/src/baremetal/link_aarch64.ld
diff options
context:
space:
mode:
authorGravatar Moon Flower <moonflower@elhenney.local> 2026-10-12 08:46:23 +0330
committerGravatar Moon Flower <moonflower@elhenney.local> 2026-10-12 08:46:23 +0330
commitecc350ca5c2eb50be8309c5f14f8bf0d87db9a02 (patch)
tree70e0af76a1b13affff7c6cc8aac7b3e6ef960478 /src/baremetal/link_aarch64.ld
a
Diffstat (limited to 'src/baremetal/link_aarch64.ld')
-rw-r--r--src/baremetal/link_aarch64.ld37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/baremetal/link_aarch64.ld b/src/baremetal/link_aarch64.ld
new file mode 100644
index 0000000..6740f21
--- /dev/null
+++ b/src/baremetal/link_aarch64.ld
@@ -0,0 +1,37 @@
+OUTPUT_ARCH(aarch64)
+OUTPUT_FORMAT(elf64-littleaarch64)
+ENTRY(_start)
+
+/* virt RAM starts at 0x40000000. The PL011 UART is at 0x09000000, outside this. */
+MEMORY
+{
+ RAM (rwx) : ORIGIN = 0x40000000, LENGTH = 48M
+}
+
+SECTIONS
+{
+ .text : {
+ KEEP(*(.text.init))
+ *(.text .text.*)
+ } > RAM
+ .rodata : {
+ *(.rodata .rodata.*)
+ } > RAM
+ .data : {
+ *(.data .data.*)
+ } > RAM
+ .bss : {
+ . = ALIGN(16);
+ _sbss = .;
+ *(.bss .bss.*)
+ *(COMMON)
+ . = ALIGN(16);
+ _ebss = .;
+ } > RAM
+ .stack : {
+ . = ALIGN(16);
+ . += 64K;
+ _stack_top = .;
+ } > RAM
+ /DISCARD/ : { *(.eh_frame*) *(.comment) *(.note*) }
+}