wifi: ieee80211: add helper to validate ML element type and size
[carl9170fw.git] / carlfw / carl9170.lds
1 /*
2  * The carl9170 firwmare gets copied into the device's
3  * Program RAM (pram), which has a size of 16K, but
4  * also has to accomodate the stack the device uses,
5  * which starts at the top of the 16k, so we pretend
6  * that we just have 16256 (16k - 128) of pram.
7  *
8  * This section documents some of the other areas
9  * mapped into the firmware processor's address space
10  * as well.
11  */
12
13 ENTRY(_start);
14
15 MEMORY
16 {
17     eeprom   : ORIGIN = 0x000000, LENGTH = 1024k
18     sram     : ORIGIN = 0x100000, LENGTH = 96k
19     uart     : ORIGIN = 0x1c0000, LENGTH = 4k
20     timer    : ORIGIN = 0x1c1000, LENGTH = 4k
21     vflash   : ORIGIN = 0x1c2000, LENGTH = 4k
22     wlan     : ORIGIN = 0x1c3000, LENGTH = 4k
23     pci2ahb  : ORIGIN = 0x1c4000, LENGTH = 4k
24     security : ORIGIN = 0x1c5000, LENGTH = 4k
25     gpio     : ORIGIN = 0x1d0000, LENGTH = 4k
26     memctl   : ORIGIN = 0x1d1000, LENGTH = 4k
27     irqctl   : ORIGIN = 0x1d2000, LENGTH = 4k
28     usb      : ORIGIN = 0x1e1000, LENGTH = 4k
29     pta      : ORIGIN = 0x1e2000, LENGTH = 4k
30     pram     : ORIGIN = 0x200000, LENGTH = 16256
31     bogus    : ORIGIN = 0x300000, LENGTH = 8k
32 }
33
34 SECTIONS
35 {
36         .eeprom : { *(.eeprom*) } > eeprom
37         .sram   : { *(.sram*) } > sram
38
39         /*
40          * The ar9170 boot code will execute the code
41          * at address 0x04 from the loaded firmware as
42          * such we must ensure our starting routine
43          * is kept at that address.
44          */
45         .padding : {
46                 /* NOP NOP just in case */
47                 LONG(0x00090009)
48         } > pram
49
50         .boot     : { *(.boot) } > pram
51         /* anything else can be anywhere */
52
53         .text   : { *(.text*) } > pram
54         .rodata : { *(.rodata*) } > pram
55         .bss    : { *(.bss) } > pram
56         .data   : { *(.data*) } > pram
57
58         .fwdsc  : { KEEP(*(.fwdsc)) } > bogus
59 }