summaryrefslogtreecommitdiffstats
path: root/rbutil/mks5lboot/dualboot/dualboot.lds
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/mks5lboot/dualboot/dualboot.lds')
-rw-r--r--rbutil/mks5lboot/dualboot/dualboot.lds59
1 files changed, 59 insertions, 0 deletions
diff --git a/rbutil/mks5lboot/dualboot/dualboot.lds b/rbutil/mks5lboot/dualboot/dualboot.lds
new file mode 100644
index 0000000000..cb92e2a286
--- /dev/null
+++ b/rbutil/mks5lboot/dualboot/dualboot.lds
@@ -0,0 +1,59 @@
+#define ASM
+#include "config.h"
+#include "cpu.h"
+#include "mks5lboot.h"
+
+ENTRY(_start)
+OUTPUT_FORMAT(elf32-littlearm)
+OUTPUT_ARCH(arm)
+
+#define BIN_ORIG DFU_LOADADDR + BIN_OFFSET
+#define BIN_SIZE MAX_PAYLOAD
+
+MEMORY
+{
+ IRAM : ORIGIN = BIN_ORIG, LENGTH = BIN_SIZE
+}
+
+SECTIONS
+{
+ .text : {
+ *(.init.text*)
+ *(.text*)
+ *(.icode*)
+ . = ALIGN(4);
+ } > IRAM
+
+ /* include initialized BSS (if any) into DFU image */
+ .bss : {
+ *(.bss*)
+ *(.ibss*)
+ *(COMMON)
+ . = ALIGN(4);
+ } > IRAM
+
+#if 1
+ /* reuse pwnage as stack, 0x30c bytes available */
+ _exception_stack = BIN_ORIG;
+ _supervisor_stack = _exception_stack;
+#else
+ /* include stack into DFU image */
+ .stack : {
+ . += 0x400;
+ _supervisor_stack = .;
+ . += 0x200;
+ _exception_stack = .;
+ } > IRAM
+#endif
+
+ .data : {
+ *(.data*)
+ *(.rodata*)
+ *(.idata*)
+ *(.irodata*)
+ /* place bootloader IM3 header at the end, mkdfu
+ will concatenate the bootloader binary here */
+ . = ALIGN(16);
+ *(.im3info.data*)
+ } > IRAM
+}