summaryrefslogtreecommitdiffstats
path: root/scripts/romload/sections.ld
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2022-11-24 18:49:44 +0000
committerYann Herklotz <git@yannherklotz.com>2022-11-24 18:49:44 +0000
commit3291d86ec38031e191ec1e7e5e8ddfa74b77cb7c (patch)
tree7d604206a2deb29c9f097ff1f3b7de78f44b34a3 /scripts/romload/sections.ld
downloadbutterstick-3291d86ec38031e191ec1e7e5e8ddfa74b77cb7c.tar.gz
butterstick-3291d86ec38031e191ec1e7e5e8ddfa74b77cb7c.zip
Squashed 'picorv32/' content from commit f00a88c
git-subtree-dir: picorv32 git-subtree-split: f00a88c36eaab478b64ee27d8162e421049bcc66
Diffstat (limited to 'scripts/romload/sections.ld')
-rw-r--r--scripts/romload/sections.ld45
1 files changed, 45 insertions, 0 deletions
diff --git a/scripts/romload/sections.ld b/scripts/romload/sections.ld
new file mode 100644
index 0000000..2ec3954
--- /dev/null
+++ b/scripts/romload/sections.ld
@@ -0,0 +1,45 @@
+/*
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+*/
+
+/* starting address needs to be > 0 due to known bug in RISCV/GNU linker */
+MEMORY {
+ rom(rwx) : ORIGIN = 0x00000100, LENGTH = 63k
+ ram(rwx) : ORIGIN = 0x00020000, LENGTH = 16k
+}
+
+ENTRY(_pvstart);
+
+SECTIONS {
+ .rom : {
+ _pvstart*(.text);
+ start*(.text);
+ . = 0x100;
+ . = ALIGN(4);
+ *(.text);
+ } > rom
+
+ .data : {
+ _data_lma = LOADADDR(.data);
+ _data = .;
+ __global_pointer$ = . ;
+ *(.data .data.* )
+ *(.sdata .sdata.*)
+ . = ALIGN(4);
+ _edata = .;
+ } >ram AT>rom
+
+ .bss : {
+ _bss_start = .;
+ *(.bss .bss.*)
+ . = ALIGN(4);
+ _bss_end = .;
+ _end = .;
+ } >ram
+
+}