Add transfer timeout, remove unused buf field
[kugel-rb.git] / firmware / target / arm / imx31 / app.lds
blob24b9f27d5d1b2c8d44b69a1b6aa78030ec168c46
1 #include "config.h"
3 ENTRY(start)
5 OUTPUT_FORMAT(elf32-littlearm)
6 OUTPUT_ARCH(arm)
7 STARTUP(target/arm/imx31/crt0.o)
9 #define PLUGINSIZE PLUGIN_BUFFER_SIZE
10 #define CODECSIZE CODEC_SIZE
12 #ifdef DEBUG
13 #define STUBOFFSET 0x10000
14 #else
15 #define STUBOFFSET 0
16 #endif
18 #include "imx31l.h"
19 /* Subtract 1MB for the FRAME/TTB section */
20 #define DRAMSIZE ((MEMORYSIZE * 0x100000) - STUBOFFSET - CODECSIZE - \
21                   PLUGINSIZE - QHARRAY_SIZE - FRAME_SIZE - TTB_SIZE)
23 #define DRAMORIG (0x0 + STUBOFFSET)
24 /* #define IRAMORIG 0x1FFFC000 */
25 #define IRAMORIG DRAMORIG
26 #define IRAM     DRAM
27 #define IRAMSIZE IRAM_SIZE
29 /* End of the audio buffer, where the codec buffer starts */
30 #define ENDAUDIOADDR  (DRAMORIG + DRAMSIZE)
32 /* Where the codec buffer ends, and the plugin buffer starts */
33 #define ENDADDR (ENDAUDIOADDR + CODECSIZE)
35 /* INIT section is the codec buffer */
36 #define INITSIZE  CODECSIZE
37 #define INITSTART ENDAUDIOADDR
39 MEMORY
41     DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
42     INIT : ORIGIN = INITSTART, LENGTH = INITSIZE
43     QHARRAY : ORIGIN = QHARRAY_PHYS_ADDR, LENGTH = QHARRAY_SIZE
46 SECTIONS
48     .text :
49     {
50         loadaddress = .;
51         _loadaddress = .;
52         . = ALIGN(0x200);
53         *(.init.text)
54         *(.text*)
55         *(.icode)
56         *(.glue_7)
57         *(.glue_7t)
58         . = ALIGN(0x4);
59     } > DRAM
61     .rodata :
62     {
63         *(.rodata)  /* problems without this, dunno why */
64         *(.rodata*)
65         *(.rodata.str1.1)
66         *(.rodata.str1.4)
67         *(.irodata)
68         . = ALIGN(0x4);
70         /* Pseudo-allocate the copies of the data sections */
71         _datacopy = .;
72     } > DRAM
74     /* TRICK ALERT! For RAM execution, we put the .data section at the
75        same load address as the copy. Thus, we don't waste extra RAM
76        when we don't actually need the copy.  */
77     .data : AT ( _datacopy )
78     {
79         _datastart = .;
80         *(.data*)
81         *(.idata)
82         . = ALIGN(0x4);
83         _dataend  = .;
84     } > DRAM
86 #if 0 /* Unneeded at the moment */
87     /* .ncdata section is placed at uncached physical alias address and is
88      * loaded at the proper cached virtual address - no copying is
89      * performed in the init code */
90     .ncdata . + NOCACHE_BASE :
91     {
92         . = ALIGN(CACHEALIGN_SIZE); /* >= Cache line boundary */
93         *(.ncdata*)
94         . = ALIGN(CACHEALIGN_SIZE); /* >= Cache line boundary */
95     } AT> DRAM
96 #endif
97     /DISCARD/ :
98     {
99         *(.eh_frame)
100     }
102     .vectors 0x0 :
103     {
104         _vectorsstart = .;
105         *(.vectors)
106         _vectorsend = .;
107     } AT> DRAM
109     _vectorscopy = LOADADDR(.vectors);
110     
111     .init :
112     {
113         . = ALIGN(4);
114         _initstart = .;
115         *(.init)
116         *(.sdmacode)
117         _initend = .;
118     } > INIT AT> DRAM
120     _initcopy = LOADADDR(.init);
122     .stack (NOLOAD) :
123     {
124         . = ALIGN(4);
125         *(.stack)
126         stackbegin = .;
127         . += 0x2000;
128         stackend = .;
129     } > DRAM
130     
131     .bss (NOLOAD) :
132     {
133         _edata = .;
134         *(.bss*)
135         *(.ibss)
136         *(COMMON)
137         . = ALIGN(0x4);
138     } > DRAM
139     
140     .ncbss . + NOCACHE_BASE (NOLOAD) :
141     {
142         . = ALIGN(CACHEALIGN_SIZE); /* >= Cache line boundary */
143         *(.ncbss*)
144         . = ALIGN(CACHEALIGN_SIZE); /* >= Cache line boundary */
145     } AT> DRAM
146     
147     .endaddr . - NOCACHE_BASE (NOLOAD) :
148     {
149         _end = .;
150     } > DRAM
152     .audiobuf (NOLOAD) :
153     {
154         _audiobuffer = .;
155         audiobuffer = .;
156     } > DRAM
158     .audiobufend ENDAUDIOADDR (NOLOAD) :
159     {
160         audiobufend = .;
161         _audiobufend = .;
162     } > DRAM
164     .codec ENDAUDIOADDR (NOLOAD) :
165     {
166         codecbuf = .;
167         _codecbuf = .;
168     }
170     .plugin ENDADDR (NOLOAD) :
171     {
172         _pluginbuf = .;
173         pluginbuf = .;
174     }
175     
176     .qharray (NOLOAD) :
177     {
178         _qharray = .;
179         *(.qharray)
180         _qharrayend = .;
181     } > QHARRAY