5 OUTPUT_FORMAT(elf32-littlearm)
7 STARTUP(target/arm/tcc780x/crt0.o)
9 #define PLUGINSIZE PLUGIN_BUFFER_SIZE
10 #define CODECSIZE CODEC_SIZE
13 #define STUBOFFSET 0x10000
18 #define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE - STUBOFFSET - CODECSIZE
20 #define DRAMORIG 0x20000000 + STUBOFFSET
21 #define ITCMORIG 0x00000000
22 #define ITCMSIZE 0x1000
23 #define DTCMORIG 0xA0000000
24 #define DTCMSIZE 0x2000
25 #define SRAMORIG 0x10000000
26 #define SRAMSIZE 0xc000
28 /* End of the audio buffer, where the codec buffer starts */
29 #define ENDAUDIOADDR (DRAMORIG + DRAMSIZE)
31 /* Where the codec buffer ends, and the plugin buffer starts */
32 #define ENDADDR (ENDAUDIOADDR + CODECSIZE)
36 DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
37 /* Seperate data & instruction TCMs plus SRAM. */
38 ITCM : ORIGIN = ITCMORIG, LENGTH = ITCMSIZE
39 DTCM : ORIGIN = DTCMORIG, LENGTH = DTCMSIZE
40 SRAM : ORIGIN = SRAMORIG, LENGTH = SRAMSIZE
59 *(.rodata) /* problems without this, dunno why */
65 /* Pseudo-allocate the copies of the data sections */
69 /* TRICK ALERT! For RAM execution, we put the .data section at the
70 same load address as the copy. Thus, we don't waste extra RAM
71 when we don't actually need the copy. */
72 .data : AT ( _datacopy )
92 _vectorscopy = LOADADDR(.vectors);
100 _itcmcopy = LOADADDR(.itcm);
108 _dtcmcopy = LOADADDR(.dtcm);
118 /* } > SRAM AT> DRAM */
121 _iramcopy = LOADADDR(.iram);
156 .audiobufend ENDAUDIOADDR: