60 lines
1.6 KiB
Plaintext
60 lines
1.6 KiB
Plaintext
/*
|
|
* The carl9170 firwmare gets copied into the device's
|
|
* Program RAM (pram), which has a size of 16K, but
|
|
* also has to accomodate the stack the device uses,
|
|
* which starts at the top of the 16k, so we pretend
|
|
* that we just have 16256 (16k - 128) of pram.
|
|
*
|
|
* This section documents some of the other areas
|
|
* mapped into the firmware processor's address space
|
|
* as well.
|
|
*/
|
|
|
|
ENTRY(_start);
|
|
|
|
MEMORY
|
|
{
|
|
eeprom : ORIGIN = 0x000000, LENGTH = 1024k
|
|
sram : ORIGIN = 0x100000, LENGTH = 96k
|
|
uart : ORIGIN = 0x1c0000, LENGTH = 4k
|
|
timer : ORIGIN = 0x1c1000, LENGTH = 4k
|
|
vflash : ORIGIN = 0x1c2000, LENGTH = 4k
|
|
wlan : ORIGIN = 0x1c3000, LENGTH = 4k
|
|
pci2ahb : ORIGIN = 0x1c4000, LENGTH = 4k
|
|
security : ORIGIN = 0x1c5000, LENGTH = 4k
|
|
gpio : ORIGIN = 0x1d0000, LENGTH = 4k
|
|
memctl : ORIGIN = 0x1d1000, LENGTH = 4k
|
|
irqctl : ORIGIN = 0x1d2000, LENGTH = 4k
|
|
usb : ORIGIN = 0x1e1000, LENGTH = 4k
|
|
pta : ORIGIN = 0x1e2000, LENGTH = 4k
|
|
pram : ORIGIN = 0x200000, LENGTH = 16256
|
|
bogus : ORIGIN = 0x300000, LENGTH = 8k
|
|
}
|
|
|
|
SECTIONS
|
|
{
|
|
.eeprom : { *(.eeprom*) } > eeprom
|
|
.sram : { *(.sram*) } > sram
|
|
|
|
/*
|
|
* The ar9170 boot code will execute the code
|
|
* at address 0x04 from the loaded firmware as
|
|
* such we must ensure our starting routine
|
|
* is kept at that address.
|
|
*/
|
|
.padding : {
|
|
/* NOP NOP just in case */
|
|
LONG(0x00090009)
|
|
} > pram
|
|
|
|
.boot : { *(.boot) } > pram
|
|
/* anything else can be anywhere */
|
|
|
|
.text : { *(.text*) } > pram
|
|
.rodata : { *(.rodata*) } > pram
|
|
.bss : { *(.bss) } > pram
|
|
.data : { *(.data*) } > pram
|
|
|
|
.fwdsc : { KEEP(*(.fwdsc)) } > bogus
|
|
}
|