summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s5l8700/app.lds
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/s5l8700/app.lds')
-rw-r--r--firmware/target/arm/s5l8700/app.lds150
1 files changed, 150 insertions, 0 deletions
diff --git a/firmware/target/arm/s5l8700/app.lds b/firmware/target/arm/s5l8700/app.lds
new file mode 100644
index 0000000000..812bce8cbb
--- /dev/null
+++ b/firmware/target/arm/s5l8700/app.lds
@@ -0,0 +1,150 @@
1#include "config.h"
2#include "cpu.h"
3
4ENTRY(start)
5
6OUTPUT_FORMAT(elf32-littlearm)
7OUTPUT_ARCH(arm)
8STARTUP(target/arm/s5l8700/crt0.o)
9
10#define PLUGINSIZE PLUGIN_BUFFER_SIZE
11#define CODECSIZE CODEC_SIZE
12
13#ifdef DEBUG
14#define STUBOFFSET 0x10000
15#else
16#define STUBOFFSET 0
17#endif
18
19
20#define IRAMORIG 0x0
21#define DRAMORIG 0x08000000
22
23/* End of the audio buffer, where the codec buffer starts */
24#define ENDAUDIOADDR (DRAMORIG + DRAMSIZE)
25
26#define DRAM_SIZE (MEMORYSIZE * 0x100000)
27
28#define DRAMSIZE (DRAM_SIZE - STUBOFFSET - PLUGINSIZE - CODECSIZE)
29#define CODECORIG (ENDAUDIOADDR)
30#define IRAMSIZE (0x20000)
31
32/* Where the codec buffer ends, and the plugin buffer starts */
33#define ENDADDR (ENDAUDIOADDR + CODECSIZE)
34
35MEMORY
36{
37 IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
38 DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
39}
40
41SECTIONS
42{
43 loadaddress = DRAMORIG;
44
45 .intvect : {
46 _intvectstart = . ;
47 *(.intvect)
48 _intvectend = _newstart ;
49 } >IRAM AT> DRAM
50 _intvectcopy = LOADADDR(.intvect) ;
51
52 .text :
53 {
54 _loadaddress = .;
55 _textstart = .;
56 *(.init.text)
57 *(.text)
58 *(.text*)
59 *(.glue_7)
60 *(.glue_7t)
61 . = ALIGN(0x4);
62 } > DRAM
63
64 .rodata :
65 {
66 *(.rodata*)
67 . = ALIGN(0x4);
68 } > DRAM
69
70 .data :
71 {
72 *(.data*)
73 . = ALIGN(0x4);
74 } > DRAM
75
76 /DISCARD/ :
77 {
78 *(.eh_frame)
79 }
80
81 .iram :
82 {
83 _iramstart = .;
84 *(.icode)
85 *(.irodata)
86 *(.idata)
87 . = ALIGN(0x4);
88 _iramend = .;
89 } > IRAM AT> DRAM
90 _iramcopy = LOADADDR(.iram) ;
91
92 .ibss (NOLOAD) :
93 {
94 _iedata = .;
95 *(.qharray)
96 *(.ibss)
97 . = ALIGN(0x4);
98 _iend = .;
99 } > IRAM
100
101 .stack (NOLOAD) :
102 {
103 *(.stack)
104 stackbegin = .;
105 _stackbegin = .;
106 . += 0x2000;
107 stackend = .;
108 _stackend = .;
109 _irqstackbegin = .;
110 . += 0x400;
111 _irqstackend = .;
112 _fiqstackbegin = .;
113 . += 0x400;
114 _fiqstackend = .;
115 } > IRAM
116
117 .bss (NOLOAD) :
118 {
119 _edata = .;
120 *(.bss*)
121 *(COMMON)
122 . = ALIGN(0x4);
123 _end = .;
124 } > DRAM
125
126 .audiobuf (NOLOAD) :
127 {
128 . = ALIGN(4);
129 _audiobuffer = .;
130 audiobuffer = .;
131 } > DRAM
132
133 .audiobufend ENDAUDIOADDR (NOLOAD) :
134 {
135 audiobufend = .;
136 _audiobufend = .;
137 } > DRAM
138
139 .codec CODECORIG (NOLOAD) :
140 {
141 codecbuf = .;
142 _codecbuf = .;
143 } > DRAM
144
145 .plugin ENDADDR (NOLOAD) :
146 {
147 _pluginbuf = .;
148 pluginbuf = .;
149 }
150}