5 OUTPUT_FORMAT(elf32-littlearm)
7 STARTUP(target/arm/pp/crt0-pp.o)
9 #define PLUGINSIZE PLUGIN_BUFFER_SIZE
10 #define CODECSIZE CODEC_SIZE
12 #define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE - CODECSIZE
14 #define DRAMORIG 0x00000000
15 #define IRAMORIG 0x40000000
16 #define IRAMSIZE 0xc000
19 #define NOCACHE_BASE 0x10000000
21 #define NOCACHE_BASE 0x28000000
24 #define CACHEALIGN_SIZE 16
26 /* End of the audio buffer, where the codec buffer starts */
27 #define ENDAUDIOADDR (DRAMORIG + DRAMSIZE)
29 /* Where the codec buffer ends, and the plugin buffer starts */
30 #define ENDADDR (ENDAUDIOADDR + CODECSIZE)
34 DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
35 IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
65 /* .ncdata section is placed at uncached physical alias address and is
66 * loaded at the proper cached virtual address - no copying is
67 * performed in the init code */
68 .ncdata . + NOCACHE_BASE :
70 . = ALIGN(CACHEALIGN_SIZE);
72 . = ALIGN(CACHEALIGN_SIZE);
88 _vectorscopy = LOADADDR(.vectors);
89 _noloaddram = LOADADDR(.vectors);
91 .ibss IRAMORIG (NOLOAD) :
110 _iramcopy = LOADADDR(.iram);
121 _initcopy = LOADADDR(.init);
123 .idle_stacks (NOLOAD) :
127 cpu_idlestackbegin = .;
128 . += IDLE_STACK_SIZE;
129 cpu_idlestackend = .;
131 cop_idlestackbegin = .;
132 . += IDLE_STACK_SIZE;
133 cop_idlestackend = .;
144 /* .bss and .ncbss are treated as a single section to use one init loop to
145 * zero it - note "_edata" and "_end" */
146 .bss _noloaddram (NOLOAD) :
154 #if NOCACHE_BASE != 0
155 .ncbss . + NOCACHE_BASE (NOLOAD):
157 . = ALIGN(CACHEALIGN_SIZE);
159 . = ALIGN(CACHEALIGN_SIZE);
163 /* This will be aligned by preceding alignments */
164 .endaddr . - NOCACHE_BASE (NOLOAD) :
176 .audiobufend ENDAUDIOADDR (NOLOAD) :
182 .codec ENDAUDIOADDR (NOLOAD) :
188 .plugin ENDADDR (NOLOAD) :