Files
2025-12-03 11:12:34 +08:00

379 lines
8.8 KiB
Plaintext

__local_irq_enable = ABSOLUTE(0xffd5c);
__local_irq_disable = ABSOLUTE(0xffd60);
request_irq = ABSOLUTE(0xffd64);
lp_signature_set = ABSOLUTE(0xffd68);
memcpy = ABSOLUTE(0xffd6c);
memmove = ABSOLUTE(0xffd70);
memcmp = ABSOLUTE(0xffd74);
memset = ABSOLUTE(0xffd78);
memchr = ABSOLUTE(0xffd7c);
strcmp = ABSOLUTE(0xffd80);
strcpy = ABSOLUTE(0xffd84);
strncpy = ABSOLUTE(0xffd88);
strlen = ABSOLUTE(0xffd8c);
strncmp = ABSOLUTE(0xffd90);
strstr = ABSOLUTE(0xffd94);
strchr = ABSOLUTE(0xffd98);
strrchr = ABSOLUTE(0xffd9c);
strcat = ABSOLUTE(0xffda0);
__divdi3 = ABSOLUTE(0xffda4);
__umoddi3 = ABSOLUTE(0xffda8);
__muldi3 = ABSOLUTE(0xffdac);
__udivdi3 = ABSOLUTE(0xffdb0);
__udivmoddi4 = ABSOLUTE(0xffdb4);
ic_pll_init = ABSOLUTE(0xffdb8);
sfc_suspend = ABSOLUTE(0xffdbc);
sfc_resume = ABSOLUTE(0xffdc0);
sfc_drop_cache = ABSOLUTE(0xffdc4);
sfc_boot = ABSOLUTE(0xffdc8);
sfc_entry_continue_mode = ABSOLUTE(0xffdcc);
ota_jump_mode = ABSOLUTE(0xffdd0);
DcuInitial = ABSOLUTE(0xffdd4);
DcuFlushinvAll = ABSOLUTE(0xffdd8);
DcuWaitIdle = ABSOLUTE(0xffddc);
IcuInitial = ABSOLUTE(0xffde0);
IcuFlushinvAll = ABSOLUTE(0xffde4);
IcuWaitIdle = ABSOLUTE(0xffde8);
DcuEnable = ABSOLUTE(0xffdec);
DcuFlushRegion = ABSOLUTE(0xffdf0);
chip_crc16 = ABSOLUTE(0xffdf4);
CrcDecode = ABSOLUTE(0xffdf8);
mask_init = ABSOLUTE(0xffdfc);
wdt_clear = ABSOLUTE(0xffe00);
nvram_set_boot_state = ABSOLUTE(0xffe04);
chip_reset = ABSOLUTE(0xffe08);
flash_poweron = ABSOLUTE(0xffe0c);
flash_poweron_base = ABSOLUTE(0xffe10);
flash_poweroff = ABSOLUTE(0xffe14);
flash_poweroff_base = ABSOLUTE(0xffe18);
spi_io_mount = ABSOLUTE(0xffe1c);
spi_io_unmount = ABSOLUTE(0xffe20);
get_sfc_read_mode = ABSOLUTE(0xffe24);
spi_port_io_init = ABSOLUTE(0xffe28);
spi_port_io_uninit = ABSOLUTE(0xffe2c);
usb_slave_mode = ABSOLUTE(0xffe30);
uart_set_dma_dir = ABSOLUTE(0xffe34);
doe = ABSOLUTE(0xffe38);
LZ4_setStreamDecode = ABSOLUTE(0xffe3c);
LZ4_decompress_safe_continue = ABSOLUTE(0xffe40);
LZ4_decompress_generic = ABSOLUTE(0xffe44);
LZ4_decompress_safe_usingDict = ABSOLUTE(0xffe48);
dec_isd_cfg_ini = ABSOLUTE(0xffe4c);
rom_nand_flash_get_features = ABSOLUTE(0xffe50);
rom_nand_flash_set_features = ABSOLUTE(0xffe54);
pmalloc_init = ABSOLUTE(0xfff84);
pmalloc = ABSOLUTE(0xfff88);
pfree = ABSOLUTE(0xfff8c);
pmalloc_get_unused_pages = ABSOLUTE(0xfff90);
get_physic_address = ABSOLUTE(0xfff94);
pmalloc_get_hdl = ABSOLUTE(0xfff98);
vmm_init_ = ABSOLUTE(0xfff9c);
vmalloc_ = ABSOLUTE(0xfffa0);
vfree_ = ABSOLUTE(0xfffa4);
vmem_get_phy_adr = ABSOLUTE(0xfffa8);
vmem_start = ABSOLUTE(0xfffac);
vmem_end = ABSOLUTE(0xfffb0);
vmalloc_get_hdl = ABSOLUTE(0xfffb4);
vmalloc_v2 = ABSOLUTE(0xfffb8);
vfree_v2 = ABSOLUTE(0xfffbc);
vcopy_ = ABSOLUTE(0xfffc0);
lock_vir_mem = ABSOLUTE(0xfffc4);
unlock_vir_mem = ABSOLUTE(0xfffc8);
hw_mmu_disable = ABSOLUTE(0xfffcc);
get_sbc_frame_info = ABSOLUTE(0xfffd0);
get_sbc_dec_ops = ABSOLUTE(0xfffd4);
sbc_dec_loop_u = ABSOLUTE(0xfffd8);
sbc_unpack_frame_u = ABSOLUTE(0xfffdc);
sbc_synthesize_audio_u = ABSOLUTE(0xfffe0);
sbc_oput_deal_normal = ABSOLUTE(0xfffe4);
sbc_oput_deal_To_ch2 = ABSOLUTE(0xfffe8);
sbc_bit_offset4 = ABSOLUTE(0xf88c0);
sbc_bit_offset8 = ABSOLUTE(0xf8900);
sbc_proto4_m0 = ABSOLUTE(0xf8980);
sbc_proto4_m1 = ABSOLUTE(0xf89d0);
sbc_proto8_m0 = ABSOLUTE(0xf8a20);
sbc_proto8_m1 = ABSOLUTE(0xf8ac0);
syn_matrix4 = ABSOLUTE(0xf8b60);
syn_matrix8 = ABSOLUTE(0xf8be0);
crc8_table = ABSOLUTE(0xf87c0);
sbc_div_new_table = ABSOLUTE(0xf8de0);
need_fix_iir_filter_buf = ABSOLUTE(0xfffec);
fix_iir_filter_init = ABSOLUTE(0xffff0);
fix_iir_filter_update = ABSOLUTE(0xffff4);
fix_iir_filter_run = ABSOLUTE(0xffff8);
fix_iir_filter_clear_mem = ABSOLUTE(0xffffc);
_SFC_MEMORY_START_ADDR = ABSOLUTE(0xc000000);
_IRQ_MEM_ADDR = ABSOLUTE(0x100000);
_RAM_LIMIT_L = ABSOLUTE(0x100000);
_RAM_LIMIT_H = ABSOLUTE(0x137000);
_MASK_USED_MEM_END = ABSOLUTE(0x101310);
_MASK_EXPORT_MEM_BEGIN = ABSOLUTE(0x100200);
_MASK_EXPORT_MEM_SIZE = ABSOLUTE(0x34c);
_UBOOT_LOADER_RAM_START = ABSOLUTE(0x102600);
_UBOOT_LOADER_RAM_END = ABSOLUTE(0x137000);
_UBOOT_LOADER_RAM_SIZE = ABSOLUTE(0x34a00);
g_boot_soft_flag = ABSOLUTE(0x100204);
irq_lock_cnt = ABSOLUTE(0x1002b8);
efuse_page0 = ABSOLUTE(0x1002ac);
efuse_page1 = ABSOLUTE(0x1002b0);
efuse_page2 = ABSOLUTE(0x1002b4);
nvram_list = ABSOLUTE(0x100214);
exception_irq_handler = ABSOLUTE(0xf8004);
EXTERN(
_start
source_node_adapter
mixer_node_adapter
dac_node_adapter
classd_node_adapter
clk_sync_node_adapter
decoder_node_adapter
resample_node_adapter
bt_audio_sync_node_adapter
adc_file_plug
tone_file_plug
ring_file_plug
key_tone_file_plug
sbc_decoder_plug
msbc_decoder_plug
sine_dec_plug
cvsd_decoder_plug
pcm_dec_plug
zero_file_plug
msbc_encoder_soft_plug
cvsd_encoder_plug
music_file_plug
wdrc_node_adapter
g729_dec_plug
fat_vfs_ops
fat_sdfile_fat_ops
fat_sdfile_fat_ops
sdfile_resfile_ops
sdfile_vfs_ops
ex_sdfile_vfs_ops
wav_package
sof_eq_node_adapter
);
UPDATE_SIZE = 0x80;
UPDATE_BEG = 0x10c800;
EX_CODE_BEGIN = 0x10054c;
EX_CODE_SIZE = 0xa000;
EX_CODE_END = EX_CODE_BEGIN + EX_CODE_SIZE;
EX_RAM_BEGIN = EX_CODE_BEGIN + EX_CODE_SIZE;
EX_RAM_SIZE = UPDATE_BEG - EX_RAM_BEGIN;
RAM_LIMIT_L = _UBOOT_LOADER_RAM_START;
RAM_LIMIT_H = _UBOOT_LOADER_RAM_START + 0x8000;
PHY_RAM_SIZE = 0x8000;
ISR_BASE = _IRQ_MEM_ADDR;
ROM_RAM_SIZE = _MASK_EXPORT_MEM_SIZE;
ROM_RAM_BEG = _MASK_EXPORT_MEM_BEGIN;
RAM0_BEG = RAM_LIMIT_L;
RAM0_END = RAM_LIMIT_H;
RAM0_SIZE = RAM0_END - RAM0_BEG;
RAM1_BEG = RAM_LIMIT_L;
RAM1_END = RAM0_BEG;
RAM1_SIZE = RAM1_END - RAM1_BEG;
PSRAM_BEGIN = 0x8000000;
PSRAM_SIZE = 0x0;
PSRAM_END = PSRAM_BEGIN + PSRAM_SIZE;
FREE_DACHE_WAY = 2;
FREE_IACHE_WAY = 0;
DCACHE_RAM_SIZE = FREE_DACHE_WAY*8K;
ICACHE_RAM_SIZE = FREE_IACHE_WAY*8K;
MEMORY
{
code0(rx) : ORIGIN = EX_CODE_BEGIN, LENGTH = EX_CODE_SIZE
ram0(rwx) : ORIGIN = EX_RAM_BEGIN, LENGTH = EX_RAM_SIZE
psram(rwx) : ORIGIN = PSRAM_BEGIN, LENGTH = PSRAM_SIZE
dcache_ram(rw) : ORIGIN = 0x370000+((4-FREE_DACHE_WAY)*8K), LENGTH = DCACHE_RAM_SIZE
icache_ram(rw) : ORIGIN = 0x3C0000+((4-FREE_IACHE_WAY)*8K), LENGTH = ICACHE_RAM_SIZE
}
SECTIONS
{
. = ORIGIN(code0);
.text ALIGN(4):
{
. = ALIGN(4);
API_TAB_BEGIN = .;
KEEP(*(.api_tab))
API_TAB_END = .;
. = ALIGN(4);
lcd_interface_begin = .;
KEEP(*(.lcd_if_info))
lcd_interface_end = .;
. = ALIGN(4);
lcd_device_begin = .;
KEEP(*(.lcd_device_info))
lcd_device_end = .;
. = ALIGN(4);
clock_critical_handler_begin = .;
KEEP(*(.clock_critical_txt))
clock_critical_handler_end = .;
. = ALIGN(4);
KEEP(*(.text*))
. = ALIGN(4);
KEEP(*(.rodata*))
. = ALIGN(4);
KEEP(*(.data))
. = ALIGN(4);
_bss_begin = . ;
KEEP(*(.bss))
_bss_end = . ;
. = ALIGN(4);
_HEAP_BEGIN = . ;
_HEAP_END = EX_CODE_END;
} > code0
. = ORIGIN(ram0);
.mmu_tlb ALIGN(0x1000):
{
*(.mmu_tlb_segment);
} > ram0
.data ALIGN(32):
{
. = ALIGN(4);
*(.data_magic)
. = ALIGN(4);
} > ram0
.data_code ALIGN(32):
{
data_code_pc_limit_begin = .;
*(.flushinv_icache)
*(.cache)
*(.os_critical_code)
*(.fat_data_code)
*(.fat_data_code_ex)
*(.ui_ram)
*(.math_fast_funtion_code)
. = ALIGN(4);
_SPI_CODE_START = . ;
*(.spi_code)
. = ALIGN(4);
_SPI_CODE_END = . ;
. = ALIGN(4);
} > ram0
.moveable_slot ALIGN(4):
{
*(movable.slot.*)
} >ram0
__report_overlay_begin = .;
data_code_pc_limit_end = .;
__report_overlay_end = .;
}
text_begin = ADDR(.text);
text_size = SIZEOF(.text);
text_end = text_begin + text_size;
/*PROVIDE(bss_begin = _bss_begin);*/
/*PROVIDE(bss_end = _bss_end);*/
_bss_size = _bss_end - _bss_begin;
/*PROVIDE(bss_size = _bss_end - _bss_begin);*/
data_addr = ADDR(.data);
data_begin = text_begin + text_size;
data_size = SIZEOF(.data);
moveable_slot_addr = ADDR(.moveable_slot);
moveable_slot_begin = data_begin + data_size;
moveable_slot_size = SIZEOF(.moveable_slot);
data_code_addr = ADDR(.data_code);
data_code_begin = moveable_slot_begin + moveable_slot_size;
data_code_size = SIZEOF(.data_code);
PROVIDE(HEAP_BEGIN = _HEAP_BEGIN);
PROVIDE(HEAP_END = _HEAP_END);
_MALLOC_SIZE = _HEAP_END - _HEAP_BEGIN;
PROVIDE(MALLOC_SIZE = _HEAP_END - _HEAP_BEGIN);
ASSERT(MALLOC_SIZE >= 0x8000, "heap space too small !")