/lib/firmware/carl9170fw/carlfw/carl9170.lds is in linux-firmware 1.127.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | /*
* 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
}
|