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.
8 * This section documents some of the other areas
9 * mapped into the firmware processor's address space
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
36 .eeprom : { *(.eeprom*) } > eeprom
37 .sram : { *(.sram*) } > sram
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.
46 /* NOP NOP just in case */
50 .boot : { *(.boot) } > pram
51 /* anything else can be anywhere */
53 .text : { *(.text*) } > pram
54 .rodata : { *(.rodata*) } > pram
55 .bss : { *(.bss) } > pram
56 .data : { *(.data*) } > pram
58 .fwdsc : { KEEP(*(.fwdsc)) } > bogus