From a7626e87e93b1823b11adcbe02cf3772114ad831 Mon Sep 17 00:00:00 2001 From: deadprogram Date: Sat, 29 Aug 2026 19:30:41 +0200 Subject: [PATCH] esp32c6: prepare target for espradio WiFi support The ESP32-C6 target was never built with a radio blob in mind. Three gaps in targets/esp32c6.ld prevented espradio from linking or running: - The Espressif WiFi/PHY libraries resolve ~245 internal symbols against the mask ROM. Only seven ROM symbols were defined. Add the ESP-IDF generated ROM interface tables (1201 symbols), all as PROVIDE() so any real definition in the program wins over the ROM copy. - The .iram output section did not collect the blob IRAM sections (.wifi0iram, .wifirxiram, .wifislpiram, .wifislprxiram, .wifiextrairam, .wifiorslpiram, .coexiram, .iram1). Without them that code lands in flash and crashes when called from an interrupt. - _heap_end ran to the end of SRAM at 0x40880000, over the mask ROM stack and ROM data. phy_param_rom sits at 0x4087fce8, inside that range, so a growing Go heap would corrupt the PHY. Cap the heap at 0x4087C610. Also add the espradio build tag to esp32c6.json, matching esp32c3.json and esp32s3.json. Signed-off-by: Ron Evans --- targets/esp32c6.json | 3 +- targets/esp32c6.ld | 1263 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 1263 insertions(+), 3 deletions(-) diff --git a/targets/esp32c6.json b/targets/esp32c6.json index 53ca7d940..553c57870 100644 --- a/targets/esp32c6.json +++ b/targets/esp32c6.json @@ -6,7 +6,8 @@ "features": "+32bit,+a,+c,+m,+zaamo,+zalrsc,+zmmul,-relax", "build-tags": [ "esp32c6", - "esp" + "esp", + "espradio" ], "serial": "usb", "rtlib": "compiler-rt", diff --git a/targets/esp32c6.ld b/targets/esp32c6.ld index d33edb256..2bb030bd4 100644 --- a/targets/esp32c6.ld +++ b/targets/esp32c6.ld @@ -93,16 +93,40 @@ SECTIONS { *(.init) /* call_start_cpu0 (before flash is mapped) */ *(.iram*) /* code that must run from IRAM */ + + /* WiFi/BLE/coex blob code that must run from IRAM. The Espressif + * binary libraries place their hot paths and ISR code in these + * sections. Without collecting them here they fall through to .text + * in flash, which crashes when they are called from an interrupt or + * while the flash cache is disabled. + */ + *(.wifi0iram .wifi0iram.*) + *(.wifirxiram .wifirxiram.*) + *(.wifislpiram .wifislpiram.*) + *(.wifislprxiram .wifislprxiram.*) + *(.wifiextrairam .wifiextrairam.*) + *(.wifiorslpiram .wifiorslpiram.*) + *(.coexiram .coexiram.*) + *(.iram1 .iram1.*) + *(.text.handleInterruptASM) /* must be in SRAM, within JAL range of _vector_table */ . = ALIGN(256); *(.text.exception_vectors) . = ALIGN(4); } > SRAM - /* Heap starts after IRAM. */ + /* Heap starts after IRAM. + * + * The heap must NOT run to the end of SRAM. The mask ROM keeps its stack + * and its data/bss at the top of HP-SRAM: SOC_ROM_STACK_START is + * 0x4087e610 with a 0x2000 stack below it, and ROM variables live above + * that -- including phy_param_rom at 0x4087fce8, which the PHY blob reads. + * Letting the Go heap grow into that region corrupts the radio. + * ESP-IDF and esp-hal both treat everything above 0x4087e610 as reserved. + */ . = ALIGN(4); _heap_start = ABSOLUTE(.); - _heap_end = ORIGIN(SRAM) + LENGTH(SRAM); + _heap_end = 0x4087C610; /* === IROM sections (flash-mapped code) === */ @@ -188,3 +212,1238 @@ Cache_MSPI_MMU_Set = 0x400006b8; /* PHY ROM data */ phy_param_rom = 0x4087fce8; + +/* ROM function and data addresses for the ESP32-C6. + * + * The Espressif WiFi/PHY binary libraries resolve a large part of their + * internals against the mask ROM rather than shipping the code, so these + * tables are required to link espradio. They are the ESP-IDF generated + * interface files, vendored via esp-hal at esp-rom-sys/ld/esp32c6/rom/*.ld + * (generated from target/esp32c6/interface-esp32c6.yml, + * md5 06c13e133e0743d09b87aba30d3e213b). + * + * Every symbol uses PROVIDE() so that a real definition in the program + * (picolibc, compiler-rt, or espradio itself) always takes precedence over + * the ROM copy. + */ + +/* --- esp32c6.rom.ld --- */ +PROVIDE( rtc_get_reset_reason = 0x40000018 ); +PROVIDE( analog_super_wdt_reset_happened = 0x4000001c ); +PROVIDE( rtc_get_wakeup_cause = 0x40000020 ); +PROVIDE( rtc_unhold_all_pads = 0x40000024 ); +PROVIDE( ets_printf = 0x40000028 ); +PROVIDE( ets_install_putc1 = 0x4000002c ); +PROVIDE( ets_install_putc2 = 0x40000030 ); +PROVIDE( ets_install_uart_printf = 0x40000034 ); +PROVIDE( ets_install_usb_printf = 0x40000038 ); +PROVIDE( ets_get_printf_channel = 0x4000003c ); +PROVIDE( ets_get_cpu_frequency = 0x40000044 ); +PROVIDE( ets_update_cpu_frequency = 0x40000048 ); +PROVIDE( ets_install_lock = 0x4000004c ); +PROVIDE( UartRxString = 0x40000050 ); +PROVIDE( UartGetCmdLn = 0x40000054 ); +PROVIDE( uart_tx_one_char = 0x40000058 ); +PROVIDE( uart_tx_one_char2 = 0x4000005c ); +PROVIDE( uart_rx_one_char = 0x40000060 ); +PROVIDE( uart_rx_one_char_block = 0x40000064 ); +PROVIDE( uart_rx_intr_handler = 0x40000068 ); +PROVIDE( uart_rx_readbuff = 0x4000006c ); +PROVIDE( uartAttach = 0x40000070 ); +PROVIDE( uart_tx_flush = 0x40000074 ); +PROVIDE( uart_tx_wait_idle = 0x40000078 ); +PROVIDE( uart_div_modify = 0x4000007c ); +PROVIDE( ets_write_char_uart = 0x40000080 ); +PROVIDE( uart_tx_switch = 0x40000084 ); +PROVIDE( roundup2 = 0x40000088 ); +PROVIDE( multofup = 0x4000008c ); +PROVIDE( software_reset = 0x40000090 ); +PROVIDE( software_reset_cpu = 0x40000094 ); +PROVIDE( ets_clk_assist_debug_clock_enable = 0x40000098 ); +PROVIDE( clear_super_wdt_reset_flag = 0x4000009c ); +PROVIDE( disable_default_watchdog = 0x400000a0 ); +PROVIDE( esp_rom_set_rtc_wake_addr = 0x400000a4 ); +PROVIDE( esp_rom_get_rtc_wake_addr = 0x400000a8 ); +PROVIDE( send_packet = 0x400000ac ); +PROVIDE( recv_packet = 0x400000b0 ); +PROVIDE( GetUartDevice = 0x400000b4 ); +PROVIDE( UartDwnLdProc = 0x400000b8 ); +PROVIDE( GetSecurityInfoProc = 0x400000bc ); +PROVIDE( Uart_Init = 0x400000c0 ); +PROVIDE( ets_set_user_start = 0x400000c4 ); +PROVIDE( ets_rom_layout_p = 0x4004fffc ); +PROVIDE( ets_ops_table_ptr = 0x4087fff8 ); +PROVIDE( g_saved_pc = 0x4087fffc ); +PROVIDE( mz_adler32 = 0x400000c8 ); +PROVIDE( mz_free = 0x400000cc ); +PROVIDE( tdefl_compress = 0x400000d0 ); +PROVIDE( tdefl_compress_buffer = 0x400000d4 ); +PROVIDE( tdefl_compress_mem_to_heap = 0x400000d8 ); +PROVIDE( tdefl_compress_mem_to_mem = 0x400000dc ); +PROVIDE( tdefl_compress_mem_to_output = 0x400000e0 ); +PROVIDE( tdefl_get_adler32 = 0x400000e4 ); +PROVIDE( tdefl_get_prev_return_status = 0x400000e8 ); +PROVIDE( tdefl_init = 0x400000ec ); +PROVIDE( tdefl_write_image_to_png_file_in_memory = 0x400000f0 ); +PROVIDE( tdefl_write_image_to_png_file_in_memory_ex = 0x400000f4 ); +PROVIDE( tinfl_decompress = 0x400000f8 ); +PROVIDE( tinfl_decompress_mem_to_callback = 0x400000fc ); +PROVIDE( tinfl_decompress_mem_to_heap = 0x40000100 ); +PROVIDE( tinfl_decompress_mem_to_mem = 0x40000104 ); +PROVIDE( jd_prepare = 0x40000108 ); +PROVIDE( jd_decomp = 0x4000010c ); +PROVIDE( esp_rom_spiflash_wait_idle = 0x40000110 ); +PROVIDE( esp_rom_spiflash_write_encrypted = 0x40000114 ); +PROVIDE( esp_rom_spiflash_write_encrypted_dest = 0x40000118 ); +PROVIDE( esp_rom_spiflash_write_encrypted_enable = 0x4000011c ); +PROVIDE( esp_rom_spiflash_write_encrypted_disable = 0x40000120 ); +PROVIDE( esp_rom_spiflash_erase_chip = 0x40000124 ); +PROVIDE( _esp_rom_spiflash_erase_sector = 0x40000128 ); +PROVIDE( _esp_rom_spiflash_erase_block = 0x4000012c ); +PROVIDE( _esp_rom_spiflash_write = 0x40000130 ); +PROVIDE( _esp_rom_spiflash_read = 0x40000134 ); +PROVIDE( _esp_rom_spiflash_unlock = 0x40000138 ); +PROVIDE( _SPIEraseArea = 0x4000013c ); +PROVIDE( _SPI_write_enable = 0x40000140 ); +PROVIDE( esp_rom_spiflash_erase_sector = 0x40000144 ); +PROVIDE( esp_rom_spiflash_erase_block = 0x40000148 ); +PROVIDE( esp_rom_spiflash_write = 0x4000014c ); +PROVIDE( esp_rom_spiflash_read = 0x40000150 ); +PROVIDE( esp_rom_spiflash_unlock = 0x40000154 ); +PROVIDE( SPIEraseArea = 0x40000158 ); +PROVIDE( SPI_write_enable = 0x4000015c ); +PROVIDE( esp_rom_spiflash_config_param = 0x40000160 ); +PROVIDE( esp_rom_spiflash_read_user_cmd = 0x40000164 ); +PROVIDE( esp_rom_spiflash_select_qio_pins = 0x40000168 ); +PROVIDE( esp_rom_spi_flash_auto_sus_res = 0x4000016c ); +PROVIDE( esp_rom_spi_flash_send_resume = 0x40000170 ); +PROVIDE( esp_rom_spi_flash_update_id = 0x40000174 ); +PROVIDE( esp_rom_spiflash_config_clk = 0x40000178 ); +PROVIDE( esp_rom_spiflash_config_readmode = 0x4000017c ); +PROVIDE( esp_rom_spiflash_read_status = 0x40000180 ); +PROVIDE( esp_rom_spiflash_read_statushigh = 0x40000184 ); +PROVIDE( esp_rom_spiflash_write_status = 0x40000188 ); +PROVIDE( spi_cache_mode_switch = 0x4000018c ); +PROVIDE( spi_common_set_dummy_output = 0x40000190 ); +PROVIDE( spi_common_set_flash_cs_timing = 0x40000194 ); +PROVIDE( esp_rom_spi_set_address_bit_len = 0x40000198 ); +PROVIDE( SPILock = 0x4000019c ); +PROVIDE( SPIMasterReadModeCnfig = 0x400001a0 ); +PROVIDE( SPI_Common_Command = 0x400001a4 ); +PROVIDE( SPI_WakeUp = 0x400001a8 ); +PROVIDE( SPI_block_erase = 0x400001ac ); +PROVIDE( SPI_chip_erase = 0x400001b0 ); +PROVIDE( SPI_init = 0x400001b4 ); +PROVIDE( SPI_page_program = 0x400001b8 ); +PROVIDE( SPI_read_data = 0x400001bc ); +PROVIDE( SPI_sector_erase = 0x400001c0 ); +PROVIDE( SelectSpiFunction = 0x400001c4 ); +PROVIDE( SetSpiDrvs = 0x400001c8 ); +PROVIDE( Wait_SPI_Idle = 0x400001cc ); +PROVIDE( spi_dummy_len_fix = 0x400001d0 ); +PROVIDE( Disable_QMode = 0x400001d4 ); +PROVIDE( Enable_QMode = 0x400001d8 ); +PROVIDE( spi_flash_attach = 0x400001dc ); +PROVIDE( spi_flash_get_chip_size = 0x400001e0 ); +PROVIDE( spi_flash_guard_set = 0x400001e4 ); +PROVIDE( spi_flash_guard_get = 0x400001e8 ); +PROVIDE( spi_flash_read_encrypted = 0x400001ec ); +PROVIDE( rom_spiflash_legacy_funcs = 0x4087fff0 ); +PROVIDE( rom_spiflash_legacy_data = 0x4087ffec ); +PROVIDE( g_flash_guard_ops = 0x4087fff4 ); +PROVIDE( esp_rom_spiflash_write_disable = 0x40000278 ); +PROVIDE( Cache_Get_ICache_Line_Size = 0x40000628 ); +PROVIDE( Cache_Get_Mode = 0x4000062c ); +PROVIDE( Cache_Address_Through_Cache = 0x40000630 ); +PROVIDE( ROM_Boot_Cache_Init = 0x40000634 ); +PROVIDE( MMU_Set_Page_Mode = 0x40000638 ); +PROVIDE( MMU_Get_Page_Mode = 0x4000063c ); +PROVIDE( Cache_Invalidate_ICache_Items = 0x40000640 ); +PROVIDE( Cache_Op_Addr = 0x40000644 ); +PROVIDE( Cache_Invalidate_Addr = 0x40000648 ); +PROVIDE( Cache_Mask_All = 0x40000650 ); +PROVIDE( Cache_UnMask_Dram0 = 0x40000654 ); +PROVIDE( Cache_Suspend_ICache_Autoload = 0x40000658 ); +PROVIDE( Cache_Resume_ICache_Autoload = 0x4000065c ); +PROVIDE( Cache_Start_ICache_Preload = 0x40000660 ); +PROVIDE( Cache_ICache_Preload_Done = 0x40000664 ); +PROVIDE( Cache_End_ICache_Preload = 0x40000668 ); +PROVIDE( Cache_Config_ICache_Autoload = 0x4000066c ); +PROVIDE( Cache_Enable_ICache_Autoload = 0x40000670 ); +PROVIDE( Cache_Disable_ICache_Autoload = 0x40000674 ); +PROVIDE( Cache_Enable_ICache_PreLock = 0x40000678 ); +PROVIDE( Cache_Disable_ICache_PreLock = 0x4000067c ); +PROVIDE( Cache_Lock_ICache_Items = 0x40000680 ); +PROVIDE( Cache_Unlock_ICache_Items = 0x40000684 ); +PROVIDE( Cache_Lock_Addr = 0x40000688 ); +PROVIDE( Cache_Unlock_Addr = 0x4000068c ); +PROVIDE( Cache_Disable_ICache = 0x40000690 ); +PROVIDE( Cache_Enable_ICache = 0x40000694 ); +PROVIDE( Cache_Freeze_ICache_Enable = 0x400006a0 ); +PROVIDE( Cache_Freeze_ICache_Disable = 0x400006a4 ); +PROVIDE( Cache_Set_IDROM_MMU_Size = 0x400006a8 ); +PROVIDE( Cache_Get_IROM_MMU_End = 0x400006ac ); +PROVIDE( Cache_Get_DROM_MMU_End = 0x400006b0 ); +PROVIDE( Cache_Travel_Tag_Memory = 0x400006bc ); +PROVIDE( Cache_Get_Virtual_Addr = 0x400006c0 ); +PROVIDE( rom_cache_op_cb = 0x4087ffcc ); +PROVIDE( rom_cache_internal_table_ptr = 0x4087ffc8 ); +PROVIDE( ets_clk_get_xtal_freq = 0x400006c4 ); +PROVIDE( ets_clk_get_cpu_freq = 0x400006c8 ); +PROVIDE( ets_clk_apb_wait_ready = 0x400006cc ); +PROVIDE( ets_clk_mspi_apb_wait_ready = 0x400006d0 ); +PROVIDE( gpio_input_get = 0x400006d4 ); +PROVIDE( gpio_matrix_in = 0x400006d8 ); +PROVIDE( gpio_matrix_out = 0x400006dc ); +PROVIDE( gpio_output_set = 0x400006e8 ); +PROVIDE( gpio_pad_hold = 0x400006ec ); +PROVIDE( gpio_pad_input_disable = 0x400006f0 ); +PROVIDE( gpio_pad_input_enable = 0x400006f4 ); +PROVIDE( gpio_pad_pulldown = 0x400006f8 ); +PROVIDE( gpio_pad_pullup = 0x400006fc ); +PROVIDE( gpio_pad_select_gpio = 0x40000700 ); +PROVIDE( gpio_pad_set_drv = 0x40000704 ); +PROVIDE( gpio_pad_unhold = 0x40000708 ); +PROVIDE( gpio_pin_wakeup_disable = 0x4000070c ); +PROVIDE( gpio_pin_wakeup_enable = 0x40000710 ); +PROVIDE( gpio_bypass_matrix_in = 0x40000714 ); +PROVIDE( esprv_intc_int_set_priority = 0x40000718 ); +PROVIDE( esprv_intc_int_set_threshold = 0x4000071c ); +PROVIDE( esprv_intc_int_enable = 0x40000720 ); +PROVIDE( esprv_intc_int_disable = 0x40000724 ); +PROVIDE( esprv_intc_int_set_type = 0x40000728 ); +PROVIDE( intr_handler_set = 0x4000072c ); +PROVIDE( intr_matrix_set = 0x40000730 ); +PROVIDE( ets_intr_lock = 0x40000734 ); +PROVIDE( ets_intr_unlock = 0x40000738 ); +PROVIDE( ets_isr_attach = 0x4000073c ); +PROVIDE( ets_isr_mask = 0x40000740 ); +PROVIDE( ets_isr_unmask = 0x40000744 ); +PROVIDE( md5_vector = 0x40000748 ); +PROVIDE( MD5Init = 0x4000074c ); +PROVIDE( MD5Update = 0x40000750 ); +PROVIDE( MD5Final = 0x40000754 ); +PROVIDE( crc32_le = 0x40000758 ); +PROVIDE( crc16_le = 0x4000075c ); +PROVIDE( crc8_le = 0x40000760 ); +PROVIDE( crc32_be = 0x40000764 ); +PROVIDE( crc16_be = 0x40000768 ); +PROVIDE( crc8_be = 0x4000076c ); +PROVIDE( esp_crc8 = 0x40000770 ); +PROVIDE( ets_sha_enable = 0x40000774 ); +PROVIDE( ets_sha_disable = 0x40000778 ); +PROVIDE( ets_sha_get_state = 0x4000077c ); +PROVIDE( ets_sha_init = 0x40000780 ); +PROVIDE( ets_sha_process = 0x40000784 ); +PROVIDE( ets_sha_starts = 0x40000788 ); +PROVIDE( ets_sha_update = 0x4000078c ); +PROVIDE( ets_sha_finish = 0x40000790 ); +PROVIDE( ets_sha_clone = 0x40000794 ); +PROVIDE( ets_hmac_enable = 0x40000798 ); +PROVIDE( ets_hmac_disable = 0x4000079c ); +PROVIDE( ets_hmac_calculate_message = 0x400007a0 ); +PROVIDE( ets_hmac_calculate_downstream = 0x400007a4 ); +PROVIDE( ets_hmac_invalidate_downstream = 0x400007a8 ); +PROVIDE( ets_jtag_enable_temporarily = 0x400007ac ); +PROVIDE( ets_aes_enable = 0x400007b0 ); +PROVIDE( ets_aes_disable = 0x400007b4 ); +PROVIDE( ets_aes_setkey = 0x400007b8 ); +PROVIDE( ets_aes_block = 0x400007bc ); +PROVIDE( ets_aes_setkey_dec = 0x400007c0 ); +PROVIDE( ets_aes_setkey_enc = 0x400007c4 ); +PROVIDE( ets_bigint_enable = 0x400007c8 ); +PROVIDE( ets_bigint_disable = 0x400007cc ); +PROVIDE( ets_bigint_multiply = 0x400007d0 ); +PROVIDE( ets_bigint_modmult = 0x400007d4 ); +PROVIDE( ets_bigint_modexp = 0x400007d8 ); +PROVIDE( ets_bigint_wait_finish = 0x400007dc ); +PROVIDE( ets_bigint_getz = 0x400007e0 ); +PROVIDE( ets_ds_enable = 0x400007e4 ); +PROVIDE( ets_ds_disable = 0x400007e8 ); +PROVIDE( ets_ds_start_sign = 0x400007ec ); +PROVIDE( ets_ds_is_busy = 0x400007f0 ); +PROVIDE( ets_ds_finish_sign = 0x400007f4 ); +PROVIDE( ets_ds_encrypt_params = 0x400007f8 ); +PROVIDE( ets_mgf1_sha256 = 0x400007fc ); +PROVIDE( crc32_le_table_ptr = 0x4004fff8 ); +PROVIDE( crc16_le_table_ptr = 0x4004fff4 ); +PROVIDE( crc8_le_table_ptr = 0x4004fff0 ); +PROVIDE( crc32_be_table_ptr = 0x4004ffec ); +PROVIDE( crc16_be_table_ptr = 0x4004ffe8 ); +PROVIDE( crc8_be_table_ptr = 0x4004ffe4 ); +PROVIDE( ets_efuse_read = 0x40000800 ); +PROVIDE( ets_efuse_program = 0x40000804 ); +PROVIDE( ets_efuse_clear_program_registers = 0x40000808 ); +PROVIDE( ets_efuse_write_key = 0x4000080c ); +PROVIDE( ets_efuse_get_read_register_address = 0x40000810 ); +PROVIDE( ets_efuse_get_key_purpose = 0x40000814 ); +PROVIDE( ets_efuse_key_block_unused = 0x40000818 ); +PROVIDE( ets_efuse_find_unused_key_block = 0x4000081c ); +PROVIDE( ets_efuse_rs_calculate = 0x40000820 ); +PROVIDE( ets_efuse_count_unused_key_blocks = 0x40000824 ); +PROVIDE( ets_efuse_secure_boot_enabled = 0x40000828 ); +PROVIDE( ets_efuse_secure_boot_aggressive_revoke_enabled = 0x4000082c ); +PROVIDE( ets_efuse_cache_encryption_enabled = 0x40000830 ); +PROVIDE( ets_efuse_download_modes_disabled = 0x40000834 ); +PROVIDE( ets_efuse_find_purpose = 0x40000838 ); +PROVIDE( ets_efuse_force_send_resume = 0x4000083c ); +PROVIDE( ets_efuse_get_flash_delay_us = 0x40000840 ); +PROVIDE( ets_efuse_get_mac = 0x40000844 ); +PROVIDE( ets_efuse_get_uart_print_control = 0x40000848 ); +PROVIDE( ets_efuse_direct_boot_mode_disabled = 0x4000084c ); +PROVIDE( ets_efuse_security_download_modes_enabled = 0x40000850 ); +PROVIDE( ets_efuse_set_timing = 0x40000854 ); +PROVIDE( ets_efuse_jtag_disabled = 0x40000858 ); +PROVIDE( ets_efuse_usb_print_is_disabled = 0x4000085c ); +PROVIDE( ets_efuse_usb_download_mode_disabled = 0x40000860 ); +PROVIDE( ets_efuse_usb_device_disabled = 0x40000864 ); +PROVIDE( ets_efuse_secure_boot_fast_wake_enabled = 0x40000868 ); +PROVIDE( ets_emsa_pss_verify = 0x4000086c ); +PROVIDE( ets_rsa_pss_verify = 0x40000870 ); +PROVIDE( ets_secure_boot_verify_bootloader_with_keys = 0x40000874 ); +PROVIDE( ets_secure_boot_verify_signature = 0x40000878 ); +PROVIDE( ets_secure_boot_read_key_digests = 0x4000087c ); +PROVIDE( ets_secure_boot_revoke_public_key_digest = 0x40000880 ); +PROVIDE( usb_serial_device_rx_one_char = 0x40000a80 ); +PROVIDE( usb_serial_device_rx_one_char_block = 0x40000a84 ); +PROVIDE( usb_serial_device_tx_flush = 0x40000a88 ); +PROVIDE( usb_serial_device_tx_one_char = 0x40000a8c ); +PROVIDE( lldesc_build_chain = 0x40000a90 ); +PROVIDE( sip_after_tx_complete = 0x40000a94 ); +PROVIDE( sip_alloc_to_host_evt = 0x40000a98 ); +PROVIDE( sip_download_begin = 0x40000a9c ); +PROVIDE( sip_get_ptr = 0x40000aa0 ); +PROVIDE( sip_get_state = 0x40000aa4 ); +PROVIDE( sip_init_attach = 0x40000aa8 ); +PROVIDE( sip_install_rx_ctrl_cb = 0x40000aac ); +PROVIDE( sip_install_rx_data_cb = 0x40000ab0 ); +PROVIDE( sip_is_active = 0x40000ab4 ); +PROVIDE( sip_post_init = 0x40000ab8 ); +PROVIDE( sip_reclaim_from_host_cmd = 0x40000abc ); +PROVIDE( sip_reclaim_tx_data_pkt = 0x40000ac0 ); +PROVIDE( sip_send = 0x40000ac4 ); +PROVIDE( sip_to_host_chain_append = 0x40000ac8 ); +PROVIDE( sip_to_host_evt_send_done = 0x40000acc ); +PROVIDE( slc_add_credits = 0x40000ad0 ); +PROVIDE( slc_enable = 0x40000ad4 ); +PROVIDE( slc_from_host_chain_fetch = 0x40000ad8 ); +PROVIDE( slc_from_host_chain_recycle = 0x40000adc ); +PROVIDE( slc_has_pkt_to_host = 0x40000ae0 ); +PROVIDE( slc_init_attach = 0x40000ae4 ); +PROVIDE( slc_init_credit = 0x40000ae8 ); +PROVIDE( slc_reattach = 0x40000aec ); +PROVIDE( slc_send_to_host_chain = 0x40000af0 ); +PROVIDE( slc_set_host_io_max_window = 0x40000af4 ); +PROVIDE( slc_to_host_chain_recycle = 0x40000af8 ); + +/* --- esp32c6.rom.libgcc.ld --- */ +PROVIDE( __absvdi2 = 0x40000884 ); +PROVIDE( __absvsi2 = 0x40000888 ); +PROVIDE( __adddf3 = 0x4000088c ); +PROVIDE( __addsf3 = 0x40000890 ); +PROVIDE( __addvdi3 = 0x40000894 ); +PROVIDE( __addvsi3 = 0x40000898 ); +PROVIDE( __ashldi3 = 0x4000089c ); +PROVIDE( __ashrdi3 = 0x400008a0 ); +PROVIDE( __bswapdi2 = 0x400008a4 ); +PROVIDE( __bswapsi2 = 0x400008a8 ); +PROVIDE( __clear_cache = 0x400008ac ); +PROVIDE( __clrsbdi2 = 0x400008b0 ); +PROVIDE( __clrsbsi2 = 0x400008b4 ); +PROVIDE( __clzdi2 = 0x400008b8 ); +PROVIDE( __clzsi2 = 0x400008bc ); +PROVIDE( __cmpdi2 = 0x400008c0 ); +PROVIDE( __ctzdi2 = 0x400008c4 ); +PROVIDE( __ctzsi2 = 0x400008c8 ); +PROVIDE( __divdc3 = 0x400008cc ); +PROVIDE( __divdf3 = 0x400008d0 ); +PROVIDE( __divdi3 = 0x400008d4 ); +PROVIDE( __divsc3 = 0x400008d8 ); +PROVIDE( __divsf3 = 0x400008dc ); +PROVIDE( __divsi3 = 0x400008e0 ); +PROVIDE( __eqdf2 = 0x400008e4 ); +PROVIDE( __eqsf2 = 0x400008e8 ); +PROVIDE( __extendsfdf2 = 0x400008ec ); +PROVIDE( __ffsdi2 = 0x400008f0 ); +PROVIDE( __ffssi2 = 0x400008f4 ); +PROVIDE( __fixdfdi = 0x400008f8 ); +PROVIDE( __fixdfsi = 0x400008fc ); +PROVIDE( __fixsfdi = 0x40000900 ); +PROVIDE( __fixsfsi = 0x40000904 ); +PROVIDE( __fixunsdfsi = 0x40000908 ); +PROVIDE( __fixunssfdi = 0x4000090c ); +PROVIDE( __fixunssfsi = 0x40000910 ); +PROVIDE( __floatdidf = 0x40000914 ); +PROVIDE( __floatdisf = 0x40000918 ); +PROVIDE( __floatsidf = 0x4000091c ); +PROVIDE( __floatsisf = 0x40000920 ); +PROVIDE( __floatundidf = 0x40000924 ); +PROVIDE( __floatundisf = 0x40000928 ); +PROVIDE( __floatunsidf = 0x4000092c ); +PROVIDE( __floatunsisf = 0x40000930 ); +PROVIDE( __gcc_bcmp = 0x40000934 ); +PROVIDE( __gedf2 = 0x40000938 ); +PROVIDE( __gesf2 = 0x4000093c ); +PROVIDE( __gtdf2 = 0x40000940 ); +PROVIDE( __gtsf2 = 0x40000944 ); +PROVIDE( __ledf2 = 0x40000948 ); +PROVIDE( __lesf2 = 0x4000094c ); +PROVIDE( __lshrdi3 = 0x40000950 ); +PROVIDE( __ltdf2 = 0x40000954 ); +PROVIDE( __ltsf2 = 0x40000958 ); +PROVIDE( __moddi3 = 0x4000095c ); +PROVIDE( __modsi3 = 0x40000960 ); +PROVIDE( __muldc3 = 0x40000964 ); +PROVIDE( __muldf3 = 0x40000968 ); +PROVIDE( __muldi3 = 0x4000096c ); +PROVIDE( __mulsc3 = 0x40000970 ); +PROVIDE( __mulsf3 = 0x40000974 ); +PROVIDE( __mulsi3 = 0x40000978 ); +PROVIDE( __mulvdi3 = 0x4000097c ); +PROVIDE( __mulvsi3 = 0x40000980 ); +PROVIDE( __nedf2 = 0x40000984 ); +PROVIDE( __negdf2 = 0x40000988 ); +PROVIDE( __negdi2 = 0x4000098c ); +PROVIDE( __negsf2 = 0x40000990 ); +PROVIDE( __negvdi2 = 0x40000994 ); +PROVIDE( __negvsi2 = 0x40000998 ); +PROVIDE( __nesf2 = 0x4000099c ); +PROVIDE( __paritysi2 = 0x400009a0 ); +PROVIDE( __popcountdi2 = 0x400009a4 ); +PROVIDE( __popcountsi2 = 0x400009a8 ); +PROVIDE( __powidf2 = 0x400009ac ); +PROVIDE( __powisf2 = 0x400009b0 ); +PROVIDE( __subdf3 = 0x400009b4 ); +PROVIDE( __subsf3 = 0x400009b8 ); +PROVIDE( __subvdi3 = 0x400009bc ); +PROVIDE( __subvsi3 = 0x400009c0 ); +PROVIDE( __truncdfsf2 = 0x400009c4 ); +PROVIDE( __ucmpdi2 = 0x400009c8 ); +PROVIDE( __udivdi3 = 0x400009cc ); +PROVIDE( __udivmoddi4 = 0x400009d0 ); +PROVIDE( __udivsi3 = 0x400009d4 ); +PROVIDE( __udiv_w_sdiv = 0x400009d8 ); +PROVIDE( __umoddi3 = 0x400009dc ); +PROVIDE( __umodsi3 = 0x400009e0 ); +PROVIDE( __unorddf2 = 0x400009e4 ); +PROVIDE( __unordsf2 = 0x400009e8 ); +PROVIDE( __extenddftf2 = 0x400009ec ); +PROVIDE( __trunctfdf2 = 0x400009f0 ); + +/* --- esp32c6.rom.spiflash.ld --- */ +PROVIDE( spi_flash_disable_cache = 0x400001f0 ); +PROVIDE( spi_flash_restore_cache = 0x400001f4 ); +PROVIDE( spi_flash_cache_enabled = 0x400001f8 ); +PROVIDE( esp_enable_cache_flash_wrap = 0x40000200 ); +PROVIDE( spi_flash_mmap_os_func_set = 0x40000204 ); +PROVIDE( spi_flash_mmap_page_num_init = 0x40000208 ); +PROVIDE( spi_flash_mmap = 0x4000020c ); +PROVIDE( spi_flash_mmap_pages = 0x40000210 ); +PROVIDE( spi_flash_munmap = 0x40000214 ); +PROVIDE( spi_flash_mmap_dump = 0x40000218 ); +PROVIDE( spi_flash_check_and_flush_cache = 0x4000021c ); +PROVIDE( spi_flash_mmap_get_free_pages = 0x40000220 ); +PROVIDE( spi_flash_cache2phys = 0x40000224 ); +PROVIDE( spi_flash_phys2cache = 0x40000228 ); +PROVIDE( esp_flash_chip_driver_initialized = 0x4000022c ); +PROVIDE( esp_flash_read_id = 0x40000230 ); +PROVIDE( esp_flash_get_size = 0x40000234 ); +PROVIDE( esp_flash_erase_chip = 0x40000238 ); +PROVIDE( rom_esp_flash_erase_region = 0x4000023c ); +PROVIDE( esp_flash_get_chip_write_protect = 0x40000240 ); +PROVIDE( esp_flash_set_chip_write_protect = 0x40000244 ); +PROVIDE( esp_flash_get_protectable_regions = 0x40000248 ); +PROVIDE( esp_flash_get_protected_region = 0x4000024c ); +PROVIDE( esp_flash_set_protected_region = 0x40000250 ); +PROVIDE( esp_flash_read = 0x40000254 ); +PROVIDE( rom_esp_flash_write = 0x40000258 ); +PROVIDE( rom_esp_flash_write_encrypted = 0x4000025c ); +PROVIDE( esp_flash_read_encrypted = 0x40000260 ); +PROVIDE( esp_flash_get_io_mode = 0x40000264 ); +PROVIDE( esp_flash_set_io_mode = 0x40000268 ); +PROVIDE( spi_flash_boot_attach = 0x4000026c ); +PROVIDE( esp_flash_read_chip_id = 0x40000270 ); +PROVIDE( detect_spi_flash_chip = 0x40000274 ); +PROVIDE( esp_flash_suspend_cmd_init = 0x4000027c ); +PROVIDE( esp_flash_default_chip = 0x4087ffe8 ); +PROVIDE( esp_flash_api_funcs = 0x4087ffe4 ); +PROVIDE( spi_flash_chip_generic_probe = 0x40000280 ); +PROVIDE( spi_flash_chip_generic_detect_size = 0x40000284 ); +PROVIDE( spi_flash_chip_generic_write = 0x40000288 ); +PROVIDE( spi_flash_chip_generic_write_encrypted = 0x4000028c ); +PROVIDE( spi_flash_chip_generic_set_write_protect = 0x40000290 ); +PROVIDE( spi_flash_common_write_status_16b_wrsr = 0x40000294 ); +PROVIDE( spi_flash_chip_generic_reset = 0x40000298 ); +PROVIDE( spi_flash_chip_generic_erase_chip = 0x4000029c ); +PROVIDE( spi_flash_chip_generic_erase_sector = 0x400002a0 ); +PROVIDE( spi_flash_chip_generic_erase_block = 0x400002a4 ); +PROVIDE( spi_flash_chip_generic_page_program = 0x400002a8 ); +PROVIDE( spi_flash_chip_generic_get_write_protect = 0x400002ac ); +PROVIDE( spi_flash_common_read_status_16b_rdsr_rdsr2 = 0x400002b0 ); +PROVIDE( spi_flash_chip_generic_read_reg = 0x400002b4 ); +PROVIDE( spi_flash_chip_generic_yield = 0x400002b8 ); +PROVIDE( spi_flash_generic_wait_host_idle = 0x400002bc ); +PROVIDE( spi_flash_chip_generic_wait_idle = 0x400002c0 ); +PROVIDE( spi_flash_chip_generic_config_host_io_mode = 0x400002c4 ); +PROVIDE( spi_flash_chip_generic_read = 0x400002c8 ); +PROVIDE( spi_flash_common_read_status_8b_rdsr2 = 0x400002cc ); +PROVIDE( spi_flash_chip_generic_get_io_mode = 0x400002d0 ); +PROVIDE( spi_flash_common_read_status_8b_rdsr = 0x400002d4 ); +PROVIDE( spi_flash_common_write_status_8b_wrsr = 0x400002d8 ); +PROVIDE( spi_flash_common_write_status_8b_wrsr2 = 0x400002dc ); +PROVIDE( spi_flash_common_set_io_mode = 0x400002e0 ); +PROVIDE( spi_flash_chip_generic_set_io_mode = 0x400002e4 ); +PROVIDE( spi_flash_chip_generic_read_unique_id = 0x400002e8 ); +PROVIDE( spi_flash_chip_generic_get_caps = 0x400002ec ); +PROVIDE( spi_flash_chip_generic_suspend_cmd_conf = 0x400002f0 ); +PROVIDE( spi_flash_chip_gd_get_io_mode = 0x400002f4 ); +PROVIDE( spi_flash_chip_gd_probe = 0x400002f8 ); +PROVIDE( spi_flash_chip_gd_set_io_mode = 0x400002fc ); +PROVIDE( spi_flash_chip_generic_config_data = 0x4087ffe0 ); +PROVIDE( spi_flash_encryption = 0x4087ffdc ); +PROVIDE( memspi_host_read_id_hs = 0x40000300 ); +PROVIDE( memspi_host_read_status_hs = 0x40000304 ); +PROVIDE( memspi_host_flush_cache = 0x40000308 ); +PROVIDE( memspi_host_erase_chip = 0x4000030c ); +PROVIDE( memspi_host_erase_sector = 0x40000310 ); +PROVIDE( memspi_host_erase_block = 0x40000314 ); +PROVIDE( memspi_host_program_page = 0x40000318 ); +PROVIDE( memspi_host_read = 0x4000031c ); +PROVIDE( memspi_host_set_write_protect = 0x40000320 ); +PROVIDE( memspi_host_set_max_read_len = 0x40000324 ); +PROVIDE( memspi_host_read_data_slicer = 0x40000328 ); +PROVIDE( memspi_host_write_data_slicer = 0x4000032c ); +PROVIDE( spi_flash_hal_poll_cmd_done = 0x40000330 ); +PROVIDE( spi_flash_hal_device_config = 0x40000334 ); +PROVIDE( spi_flash_hal_configure_host_io_mode = 0x40000338 ); +PROVIDE( spi_flash_hal_common_command = 0x4000033c ); +PROVIDE( spi_flash_hal_read = 0x40000340 ); +PROVIDE( spi_flash_hal_erase_chip = 0x40000344 ); +PROVIDE( spi_flash_hal_erase_sector = 0x40000348 ); +PROVIDE( spi_flash_hal_erase_block = 0x4000034c ); +PROVIDE( spi_flash_hal_program_page = 0x40000350 ); +PROVIDE( spi_flash_hal_set_write_protect = 0x40000354 ); +PROVIDE( spi_flash_hal_host_idle = 0x40000358 ); +PROVIDE( spi_flash_hal_check_status = 0x4000035c ); +PROVIDE( spi_flash_hal_setup_read_suspend = 0x40000360 ); +PROVIDE( spi_flash_hal_setup_auto_suspend_mode = 0x40000364 ); +PROVIDE( spi_flash_hal_setup_auto_resume_mode = 0x40000368 ); +PROVIDE( spi_flash_hal_disable_auto_suspend_mode = 0x4000036c ); +PROVIDE( spi_flash_hal_disable_auto_resume_mode = 0x40000370 ); +PROVIDE( spi_flash_hal_resume = 0x40000374 ); +PROVIDE( spi_flash_hal_suspend = 0x40000378 ); +PROVIDE( spi_flash_encryption_hal_enable = 0x4000037c ); +PROVIDE( spi_flash_encryption_hal_disable = 0x40000380 ); +PROVIDE( spi_flash_encryption_hal_prepare = 0x40000384 ); +PROVIDE( spi_flash_encryption_hal_done = 0x40000388 ); +PROVIDE( spi_flash_encryption_hal_destroy = 0x4000038c ); +PROVIDE( spi_flash_encryption_hal_check = 0x40000390 ); + +/* --- esp32c6.rom.heap.ld --- */ +PROVIDE( tlsf_create = 0x400003fc ); +PROVIDE( tlsf_create_with_pool = 0x40000400 ); +PROVIDE( tlsf_get_pool = 0x40000404 ); +PROVIDE( tlsf_add_pool = 0x40000408 ); +PROVIDE( tlsf_remove_pool = 0x4000040c ); +PROVIDE( tlsf_malloc = 0x40000410 ); +PROVIDE( tlsf_memalign = 0x40000414 ); +PROVIDE( tlsf_memalign_offs = 0x40000418 ); +PROVIDE( tlsf_realloc = 0x4000041c ); +PROVIDE( tlsf_free = 0x40000420 ); +PROVIDE( tlsf_block_size = 0x40000424 ); +PROVIDE( tlsf_size = 0x40000428 ); +PROVIDE( tlsf_align_size = 0x4000042c ); +PROVIDE( tlsf_block_size_min = 0x40000430 ); +PROVIDE( tlsf_block_size_max = 0x40000434 ); +PROVIDE( tlsf_pool_overhead = 0x40000438 ); +PROVIDE( tlsf_alloc_overhead = 0x4000043c ); +PROVIDE( tlsf_walk_pool = 0x40000440 ); +PROVIDE( tlsf_check = 0x40000444 ); +PROVIDE( tlsf_poison_fill_pfunc_set = 0x4000044c ); +PROVIDE( tlsf_poison_check_pfunc_set = 0x40000450 ); +PROVIDE( multi_heap_get_block_address_impl = 0x40000454 ); +PROVIDE( multi_heap_get_allocated_size_impl = 0x40000458 ); +PROVIDE( multi_heap_register_impl = 0x4000045c ); +PROVIDE( multi_heap_set_lock = 0x40000460 ); +PROVIDE( multi_heap_mutex_init = 0x40000464 ); +PROVIDE( multi_heap_internal_lock = 0x40000468 ); +PROVIDE( multi_heap_internal_unlock = 0x4000046c ); +PROVIDE( multi_heap_get_first_block = 0x40000470 ); +PROVIDE( multi_heap_get_next_block = 0x40000474 ); +PROVIDE( multi_heap_is_free = 0x40000478 ); +PROVIDE( multi_heap_malloc_impl = 0x4000047c ); +PROVIDE( multi_heap_free_impl = 0x40000480 ); +PROVIDE( multi_heap_realloc_impl = 0x40000484 ); +PROVIDE( multi_heap_aligned_alloc_impl_offs = 0x40000488 ); +PROVIDE( multi_heap_aligned_alloc_impl = 0x4000048c ); +PROVIDE( multi_heap_check = 0x40000490 ); +PROVIDE( multi_heap_dump = 0x40000494 ); +PROVIDE( multi_heap_free_size_impl = 0x40000498 ); +PROVIDE( multi_heap_minimum_free_size_impl = 0x4000049c ); +PROVIDE( multi_heap_get_info_impl = 0x400004a0 ); +PROVIDE( heap_tlsf_table_ptr = 0x4087ffd8 ); + +/* --- esp32c6.rom.phy.ld --- */ +PROVIDE( phy_param_addr = 0x40001104 ); +PROVIDE( phy_get_romfuncs = 0x40001108 ); +PROVIDE( chip761_phyrom_version = 0x4000110c ); +PROVIDE( chip761_phyrom_version_num = 0x40001110 ); +PROVIDE( get_rc_dout = 0x40001114 ); +PROVIDE( rc_cal = 0x40001118 ); +PROVIDE( rom_enter_critical_phy = 0x4000111c ); +PROVIDE( rom_exit_critical_phy = 0x40001120 ); +PROVIDE( rom_set_chan_cal_interp = 0x40001124 ); +PROVIDE( rom_loopback_mode_en = 0x40001128 ); +PROVIDE( rom_bb_bss_cbw40 = 0x4000112c ); +PROVIDE( abs_temp = 0x40001130 ); +PROVIDE( get_data_sat = 0x40001134 ); +PROVIDE( phy_byte_to_word = 0x40001138 ); +PROVIDE( set_chan_reg = 0x4000113c ); +PROVIDE( i2c_master_reset = 0x40001140 ); +PROVIDE( rom_set_chan_freq_sw_start = 0x40001144 ); +PROVIDE( freq_module_resetn = 0x40001148 ); +PROVIDE( freq_chan_en_sw = 0x4000114c ); +PROVIDE( write_chan_freq = 0x40001150 ); +PROVIDE( get_freq_mem_param = 0x40001154 ); +PROVIDE( get_freq_mem_addr = 0x40001158 ); +PROVIDE( bt_txpwr_freq = 0x4000115c ); +PROVIDE( wr_rf_freq_mem = 0x40001160 ); +PROVIDE( read_rf_freq_mem = 0x40001164 ); +PROVIDE( freq_i2c_mem_write = 0x40001168 ); +PROVIDE( freq_num_get_data = 0x4000116c ); +PROVIDE( freq_i2c_num_addr = 0x40001170 ); +PROVIDE( freq_i2c_write_set = 0x40001174 ); +PROVIDE( pll_dac_mem_update = 0x40001178 ); +PROVIDE( pll_cap_mem_update = 0x4000117c ); +PROVIDE( get_rf_freq_cap = 0x40001180 ); +PROVIDE( get_rf_freq_init = 0x40001184 ); +PROVIDE( phy_en_hw_set_freq = 0x40001188 ); +PROVIDE( phy_dis_hw_set_freq = 0x4000118c ); +PROVIDE( rom_pwdet_sar2_init = 0x40001190 ); +PROVIDE( rom_en_pwdet = 0x40001194 ); +PROVIDE( rom_get_sar_sig_ref = 0x40001198 ); +PROVIDE( rom_pwdet_tone_start = 0x4000119c ); +PROVIDE( rom_pwdet_wait_idle = 0x400011a0 ); +PROVIDE( rom_read_sar_dout = 0x400011a4 ); +PROVIDE( get_tone_sar_dout = 0x400011a8 ); +PROVIDE( get_fm_sar_dout = 0x400011ac ); +PROVIDE( txtone_linear_pwr = 0x400011b0 ); +PROVIDE( linear_to_db = 0x400011b4 ); +PROVIDE( get_power_db = 0x400011b8 ); +PROVIDE( meas_tone_pwr_db = 0x400011bc ); +PROVIDE( pkdet_vol_start = 0x400011c0 ); +PROVIDE( read_sar2_code = 0x400011c4 ); +PROVIDE( get_sar2_vol = 0x400011c8 ); +PROVIDE( get_pll_vol = 0x400011cc ); +PROVIDE( tx_pwctrl_bg_init = 0x400011d0 ); +PROVIDE( phy_pwdet_always_en = 0x400011d4 ); +PROVIDE( phy_pwdet_onetime_en = 0x400011d8 ); +PROVIDE( esp_tx_state_out_rom = 0x400011dc ); +PROVIDE( ant_dft_cfg_rom = 0x400011e0 ); +PROVIDE( ant_wifitx_cfg_rom = 0x400011e4 ); +PROVIDE( ant_wifirx_cfg_rom = 0x400011e8 ); +PROVIDE( ant_bttx_cfg_rom = 0x400011ec ); +PROVIDE( ant_btrx_cfg_rom = 0x400011f0 ); +PROVIDE( phy_chan_dump_cfg_rom = 0x400011f4 ); +PROVIDE( phy_enable_low_rate = 0x400011f8 ); +PROVIDE( phy_disable_low_rate = 0x400011fc ); +PROVIDE( phy_is_low_rate_enabled = 0x40001200 ); +PROVIDE( phy_dig_reg_backup_rom = 0x40001204 ); +PROVIDE( phy_chan_filt_set_rom = 0x40001208 ); +PROVIDE( phy_rx11blr_cfg = 0x4000120c ); +PROVIDE( set_cca_rom = 0x40001210 ); +PROVIDE( set_rx_sense_rom = 0x40001214 ); +PROVIDE( rx_gain_force_rom = 0x40001218 ); +PROVIDE( rom_rfpll_set_freq = 0x4000121c ); +PROVIDE( mhz2ieee = 0x40001220 ); +PROVIDE( chan_to_freq = 0x40001224 ); +PROVIDE( restart_cal = 0x40001228 ); +PROVIDE( write_rfpll_sdm = 0x4000122c ); +PROVIDE( wait_rfpll_cal_end = 0x40001230 ); +PROVIDE( set_rf_freq_offset = 0x40001234 ); +PROVIDE( set_rfpll_freq = 0x40001238 ); +PROVIDE( set_channel_rfpll_freq = 0x4000123c ); +PROVIDE( rfpll_cap_correct = 0x40001240 ); +PROVIDE( rfpll_cap_init_cal = 0x40001244 ); +PROVIDE( write_pll_cap = 0x40001248 ); +PROVIDE( read_pll_cap = 0x4000124c ); +PROVIDE( chip_v7_set_chan_ana = 0x40001250 ); +PROVIDE( freq_set_reg = 0x40001254 ); +PROVIDE( gen_rx_gain_table = 0x40001258 ); +PROVIDE( bt_txdc_cal = 0x4000125c ); +PROVIDE( bt_txiq_cal = 0x40001260 ); +PROVIDE( txiq_cal_init = 0x40001264 ); +PROVIDE( txdc_cal_init = 0x40001268 ); +PROVIDE( txdc_cal = 0x4000126c ); +PROVIDE( txiq_get_mis_pwr = 0x40001270 ); +PROVIDE( txiq_cover = 0x40001274 ); +PROVIDE( rfcal_txiq = 0x40001278 ); +PROVIDE( get_power_atten = 0x4000127c ); +PROVIDE( pwdet_ref_code = 0x40001280 ); +PROVIDE( pwdet_code_cal = 0x40001284 ); +PROVIDE( rfcal_txcap = 0x40001288 ); +PROVIDE( tx_cap_init = 0x4000128c ); +PROVIDE( rfcal_pwrctrl = 0x40001290 ); +PROVIDE( tx_pwctrl_init_cal = 0x40001294 ); +PROVIDE( tx_pwctrl_init = 0x40001298 ); +PROVIDE( bt_tx_pwctrl_init = 0x4000129c ); +PROVIDE( rom_i2c_enter_critical = 0x400012a0 ); +PROVIDE( rom_i2c_exit_critical = 0x400012a4 ); +PROVIDE( rom_get_i2c_read_mask = 0x400012a8 ); +PROVIDE( rom_get_i2c_mst0_mask = 0x400012ac ); +PROVIDE( rom_get_i2c_hostid = 0x400012b0 ); +PROVIDE( rom_chip_i2c_readReg_org = 0x400012b4 ); +PROVIDE( rom_chip_i2c_readReg = 0x400012b8 ); +PROVIDE( rom_chip_i2c_writeReg = 0x400012c0 ); +PROVIDE( rom_set_txcap_reg = 0x400012d0 ); +PROVIDE( i2c_paral_set_mst0 = 0x400012d4 ); +PROVIDE( i2c_paral_set_read = 0x400012d8 ); +PROVIDE( i2c_paral_read = 0x400012dc ); +PROVIDE( i2c_paral_write = 0x400012e0 ); +PROVIDE( i2c_paral_write_num = 0x400012e4 ); +PROVIDE( i2c_paral_write_mask = 0x400012e8 ); +PROVIDE( i2c_sar2_init_code = 0x400012ec ); +PROVIDE( rom_pbus_force_mode = 0x400012f0 ); +PROVIDE( rom_pbus_rd_addr = 0x400012f4 ); +PROVIDE( rom_pbus_rd_shift = 0x400012f8 ); +PROVIDE( rom_pbus_force_test = 0x400012fc ); +PROVIDE( rom_pbus_rd = 0x40001300 ); +PROVIDE( rom_pbus_set_rxgain = 0x40001304 ); +PROVIDE( rom_pbus_xpd_rx_off = 0x40001308 ); +PROVIDE( rom_pbus_xpd_rx_on = 0x4000130c ); +PROVIDE( rom_pbus_xpd_tx_off = 0x40001310 ); +PROVIDE( rom_pbus_xpd_tx_on = 0x40001314 ); +PROVIDE( rom_set_loopback_gain = 0x40001318 ); +PROVIDE( rom_txcal_debuge_mode = 0x4000131c ); +PROVIDE( pbus_debugmode = 0x40001320 ); +PROVIDE( pbus_workmode = 0x40001324 ); +PROVIDE( pbus_set_dco = 0x40001328 ); +PROVIDE( txcal_work_mode = 0x4000132c ); +PROVIDE( rom_start_tx_tone_step = 0x40001330 ); +PROVIDE( rom_stop_tx_tone = 0x40001334 ); +PROVIDE( disable_agc = 0x40001338 ); +PROVIDE( enable_agc = 0x4000133c ); +PROVIDE( phy_disable_cca = 0x40001340 ); +PROVIDE( phy_enable_cca = 0x40001344 ); +PROVIDE( write_gain_mem = 0x40001348 ); +PROVIDE( bb_bss_cbw40_dig = 0x4000134c ); +PROVIDE( cbw2040_cfg = 0x40001350 ); +PROVIDE( mac_tx_chan_offset = 0x40001354 ); +PROVIDE( tx_paon_set = 0x40001358 ); +PROVIDE( pwdet_reg_init = 0x4000135c ); +PROVIDE( i2cmst_reg_init = 0x40001360 ); +PROVIDE( bt_gain_offset = 0x40001364 ); +PROVIDE( fe_reg_init = 0x40001368 ); +PROVIDE( mac_enable_bb = 0x4000136c ); +PROVIDE( bb_wdg_cfg = 0x40001370 ); +PROVIDE( fe_txrx_reset = 0x40001374 ); +PROVIDE( set_rx_comp = 0x40001378 ); +PROVIDE( agc_reg_init = 0x4000137c ); +PROVIDE( bb_reg_init = 0x40001380 ); +PROVIDE( open_i2c_xpd = 0x40001384 ); +PROVIDE( txiq_set_reg = 0x40001388 ); +PROVIDE( rxiq_set_reg = 0x4000138c ); +PROVIDE( set_txclk_en = 0x40001390 ); +PROVIDE( set_rxclk_en = 0x40001394 ); +PROVIDE( bb_wdg_test_en = 0x40001398 ); +PROVIDE( noise_floor_auto_set = 0x4000139c ); +PROVIDE( read_hw_noisefloor = 0x400013a0 ); +PROVIDE( iq_corr_enable = 0x400013a4 ); +PROVIDE( wifi_agc_sat_gain = 0x400013a8 ); +PROVIDE( phy_bbpll_cal = 0x400013ac ); +PROVIDE( phy_ant_init = 0x400013b0 ); +PROVIDE( phy_set_bbfreq_init = 0x400013b4 ); +PROVIDE( wifi_fbw_sel = 0x400013b8 ); +PROVIDE( bt_filter_reg = 0x400013bc ); +PROVIDE( phy_rx_sense_set = 0x400013c0 ); +PROVIDE( tx_state_set = 0x400013c4 ); +PROVIDE( phy_close_pa = 0x400013c8 ); +PROVIDE( phy_freq_correct = 0x400013cc ); +PROVIDE( set_pbus_reg = 0x400013d0 ); +PROVIDE( wifi_rifs_mode_en = 0x400013d4 ); +PROVIDE( nrx_freq_set = 0x400013d8 ); +PROVIDE( fe_adc_on = 0x400013dc ); +PROVIDE( phy_force_pwr_index = 0x400013e0 ); +PROVIDE( rom_iq_est_enable = 0x400013e4 ); +PROVIDE( rom_iq_est_disable = 0x400013e8 ); +PROVIDE( rom_bb_gain_index = 0x400013ec ); +PROVIDE( rom_rfrx_gain_index = 0x400013f0 ); +PROVIDE( dc_iq_est = 0x400013f4 ); +PROVIDE( set_cal_rxdc = 0x400013f8 ); +PROVIDE( rxiq_get_mis = 0x400013fc ); +PROVIDE( rxiq_cover_mg_mp = 0x40001400 ); +PROVIDE( rfcal_rxiq = 0x40001404 ); +PROVIDE( get_rfcal_rxiq_data = 0x40001408 ); +PROVIDE( get_dco_comp = 0x4000140c ); +PROVIDE( pbus_rx_dco_cal = 0x40001410 ); +PROVIDE( rxdc_est_min = 0x40001414 ); +PROVIDE( pbus_rx_dco_cal_1step = 0x40001418 ); +PROVIDE( set_lb_txiq = 0x4000141c ); +PROVIDE( set_rx_gain_cal_iq = 0x40001420 ); +PROVIDE( set_rx_gain_cal_dc = 0x40001424 ); +PROVIDE( spur_reg_write_one_tone = 0x40001428 ); +PROVIDE( spur_cal = 0x4000142c ); +PROVIDE( spur_coef_cfg = 0x40001430 ); +PROVIDE( tsens_power_up = 0x40001434 ); +PROVIDE( tsens_read_init = 0x40001438 ); +PROVIDE( code_to_temp = 0x4000143c ); +PROVIDE( tsens_index_to_dac = 0x40001440 ); +PROVIDE( tsens_index_to_offset = 0x40001444 ); +PROVIDE( tsens_dac_cal = 0x40001448 ); +PROVIDE( tsens_code_read = 0x4000144c ); +PROVIDE( tsens_temp_read = 0x40001450 ); +PROVIDE( temp_to_power = 0x40001454 ); +PROVIDE( get_temp_init = 0x40001458 ); +PROVIDE( txbbgain_to_index = 0x4000145c ); +PROVIDE( index_to_txbbgain = 0x40001460 ); +PROVIDE( bt_index_to_bb = 0x40001464 ); +PROVIDE( bt_bb_to_index = 0x40001468 ); +PROVIDE( bt_get_tx_gain = 0x4000146c ); +PROVIDE( dig_gain_check = 0x40001470 ); +PROVIDE( wifi_get_tx_gain = 0x40001474 ); +PROVIDE( wifi_11g_rate_chg = 0x40001478 ); +PROVIDE( bt_chan_pwr_interp = 0x4000147c ); +PROVIDE( get_rate_fcc_index = 0x40001480 ); +PROVIDE( get_chan_target_power = 0x40001484 ); +PROVIDE( get_tx_gain_value = 0x40001488 ); +PROVIDE( wifi_get_target_power = 0x4000148c ); + +/* --- esp32c6.rom.pp.ld --- */ +PROVIDE( esp_pp_rom_version_get = 0x40000bd8 ); +PROVIDE( ppCalTxopRTSThreshold = 0x40000bdc ); +PROVIDE( RC_GetBlockAckTime = 0x40000be0 ); +PROVIDE( ebuf_list_remove = 0x40000be4 ); +PROVIDE( GetAccess = 0x40000bf4 ); +PROVIDE( hal_mac_is_low_rate_enabled = 0x40000bf8 ); +PROVIDE( hal_mac_tx_get_blockack = 0x40000bfc ); +PROVIDE( ic_get_trc = 0x40000c04 ); +PROVIDE( ic_interface_enabled = 0x40000c10 ); +PROVIDE( is_lmac_idle = 0x40000c14 ); +PROVIDE( lmacDiscardAgedMSDU = 0x40000c1c ); +PROVIDE( lmacIsIdle = 0x40000c28 ); +PROVIDE( lmacIsLongFrame = 0x40000c2c ); +PROVIDE( lmacPostTxComplete = 0x40000c34 ); +PROVIDE( lmacProcessAllTxTimeout = 0x40000c38 ); +PROVIDE( lmacProcessCollisions = 0x40000c3c ); +PROVIDE( lmacReachLongLimit = 0x40000c44 ); +PROVIDE( lmacReachShortLimit = 0x40000c48 ); +PROVIDE( lmacRecycleMPDU = 0x40000c4c ); +PROVIDE( lmacRxDone = 0x40000c50 ); +PROVIDE( mac_tx_set_duration = 0x40000c60 ); +PROVIDE( mac_tx_set_plcp2 = 0x40000c6c ); +PROVIDE( pm_disable_sleep_delay_timer = 0x40000c78 ); +PROVIDE( pm_mac_wakeup = 0x40000c80 ); +PROVIDE( pm_mac_sleep = 0x40000c84 ); +PROVIDE( pm_enable_sleep_delay_timer = 0x40000c8c ); +PROVIDE( pm_local_tsf_process = 0x40000c90 ); +PROVIDE( pm_is_waked = 0x40000c9c ); +PROVIDE( pm_on_data_rx = 0x40000ca8 ); +PROVIDE( pm_sleep_for = 0x40000cc4 ); +PROVIDE( ppAMPDU2Normal = 0x40000ccc ); +PROVIDE( ppCalFrameTimes = 0x40000cd4 ); +PROVIDE( ppCalSubFrameLength = 0x40000cd8 ); +PROVIDE( ppCheckTxAMPDUlength = 0x40000ce0 ); +PROVIDE( ppDequeueRxq_Locked = 0x40000ce4 ); +PROVIDE( ppDequeueTxQ = 0x40000ce8 ); +PROVIDE( ppEmptyDelimiterLength = 0x40000cec ); +PROVIDE( ppEnqueueRxq = 0x40000cf0 ); +PROVIDE( ppEnqueueTxDone = 0x40000cf4 ); +PROVIDE( ppGetTxframe = 0x40000cf8 ); +PROVIDE( ppProcessRxPktHdr = 0x40000d04 ); +PROVIDE( ppRecordBarRRC = 0x40000d0c ); +PROVIDE( ppRecycleAmpdu = 0x40000d10 ); +PROVIDE( ppRecycleRxPkt = 0x40000d14 ); +PROVIDE( ppResumeTxAMPDU = 0x40000d1c ); +PROVIDE( ppSearchTxQueue = 0x40000d2c ); +PROVIDE( ppSearchTxframe = 0x40000d30 ); +PROVIDE( ppSelectNextQueue = 0x40000d34 ); +PROVIDE( ppSubFromAMPDU = 0x40000d38 ); +PROVIDE( ppTxProtoProc = 0x40000d44 ); +PROVIDE( ppTxqUpdateBitmap = 0x40000d48 ); +PROVIDE( pp_hdrsize = 0x40000d50 ); +PROVIDE( pp_post = 0x40000d54 ); +PROVIDE( pp_process_hmac_waiting_txq = 0x40000d58 ); +PROVIDE( rcGetAmpduSched = 0x40000d5c ); +PROVIDE( rcUpdateRxDone = 0x40000d60 ); +PROVIDE( rc_get_trc = 0x40000d64 ); +PROVIDE( rc_get_trc_by_index = 0x40000d68 ); +PROVIDE( rcAmpduLowerRate = 0x40000d6c ); +PROVIDE( rcampduuprate = 0x40000d70 ); +PROVIDE( rcClearCurAMPDUSched = 0x40000d74 ); +PROVIDE( rcClearCurSched = 0x40000d78 ); +PROVIDE( rcClearCurStat = 0x40000d7c ); +PROVIDE( rcLowerSched = 0x40000d84 ); +PROVIDE( rcSetTxAmpduLimit = 0x40000d88 ); +PROVIDE( rcTxUpdatePer = 0x40000d8c ); +PROVIDE( rcUpdateAckSnr = 0x40000d90 ); +PROVIDE( rcUpSched = 0x40000da0 ); +PROVIDE( rssi_margin = 0x40000da4 ); +PROVIDE( rx11NRate2AMPDULimit = 0x40000da8 ); +PROVIDE( TRC_AMPDU_PER_DOWN_THRESHOLD = 0x40000dac ); +PROVIDE( TRC_AMPDU_PER_UP_THRESHOLD = 0x40000db0 ); +PROVIDE( trc_calc_duration = 0x40000db4 ); +PROVIDE( trc_isTxAmpduOperational = 0x40000db8 ); +PROVIDE( trc_onAmpduOp = 0x40000dbc ); +PROVIDE( TRC_PER_IS_GOOD = 0x40000dc0 ); +PROVIDE( trc_SetTxAmpduState = 0x40000dc4 ); +PROVIDE( trc_tid_isTxAmpduOperational = 0x40000dc8 ); +PROVIDE( trcAmpduSetState = 0x40000dcc ); +PROVIDE( wDev_DiscardFrame = 0x40000dd8 ); +PROVIDE( wDev_GetNoiseFloor = 0x40000ddc ); +PROVIDE( wDev_IndicateAmpdu = 0x40000de0 ); +PROVIDE( wdev_mac_reg_load = 0x40000de8 ); +PROVIDE( wdev_mac_reg_store = 0x40000dec ); +PROVIDE( wdev_mac_special_reg_load = 0x40000df0 ); +PROVIDE( wdev_mac_special_reg_store = 0x40000df4 ); +PROVIDE( wdev_mac_wakeup = 0x40000df8 ); +PROVIDE( wdev_mac_sleep = 0x40000dfc ); +PROVIDE( hal_mac_is_dma_enable = 0x40000e00 ); +PROVIDE( wdev_csi_len_align = 0x40000e10 ); +PROVIDE( ppDequeueTxDone_Locked = 0x40000e14 ); +PROVIDE( config_is_cache_tx_buf_enabled = 0x40000e20 ); +PROVIDE( ppProcessWaitingQueue = 0x40000e28 ); +PROVIDE( ppDisableQueue = 0x40000e2c ); +PROVIDE( pm_allow_tx = 0x40000e30 ); +PROVIDE( ppProcTxCallback = 0x40000e38 ); +PROVIDE( ppCalPreFecPaddingFactor = 0x40000e40 ); +PROVIDE( hal_get_tsf_timer = 0x40000e4c ); +PROVIDE( ppTxPktForceWaked = 0x40000e50 ); +PROVIDE( lmacProcessLongFrameSuccess = 0x40000e54 ); +PROVIDE( lmacProcessShortFrameSuccess = 0x40000e58 ); +PROVIDE( lmacProcessTBSuccess = 0x40000e60 ); +PROVIDE( lmacProcessAckTimeout = 0x40000e68 ); +PROVIDE( get_estimated_batime = 0x40000e74 ); +PROVIDE( is_use_muedca = 0x40000e78 ); +PROVIDE( hal_mac_clr_txq_state = 0x40000e84 ); +PROVIDE( hal_mac_get_txq_complete = 0x40000e88 ); +PROVIDE( ht_get_min_subframe_len = 0x40000e8c ); +PROVIDE( rx11ACRate2AMPDULimit = 0x40000e90 ); +PROVIDE( pwr_hal_clear_intr_status = 0x40000e94 ); +PROVIDE( pwr_hal_clear_mac_modem_beacon_miss_intr_filter = 0x40000e98 ); +PROVIDE( pwr_hal_clear_mac_modem_rx_beacon_info = 0x40000e9c ); +PROVIDE( pwr_hal_clear_mac_modem_rx_beacon_miss_counter = 0x40000ea0 ); +PROVIDE( pwr_hal_clear_mac_modem_rx_beacon_sleep_counter = 0x40000ea4 ); +PROVIDE( pwr_hal_clear_mac_modem_state_wakeup_protect_signal = 0x40000ea8 ); +PROVIDE( pwr_hal_get_intr_raw_signal = 0x40000eac ); +PROVIDE( pwr_hal_get_intr_status = 0x40000eb0 ); +PROVIDE( pwr_hal_get_mac_modem_beacon_miss_limit_exceeded_status = 0x40000eb4 ); +PROVIDE( pwr_hal_get_mac_modem_rx_beacon_location_state = 0x40000eb8 ); +PROVIDE( pwr_hal_get_mac_modem_rx_beacon_valid_state = 0x40000ebc ); +PROVIDE( pwr_hal_get_mac_modem_state_sleep_limit_exceeded_status = 0x40000ec0 ); +PROVIDE( pwr_hal_set_beacon_filter_abort_disable = 0x40000ec4 ); +PROVIDE( pwr_hal_set_beacon_filter_abort_enable = 0x40000ec8 ); +PROVIDE( pwr_hal_set_beacon_filter_abort_length = 0x40000ecc ); +PROVIDE( pwr_hal_set_beacon_filter_disable = 0x40000ed8 ); +PROVIDE( pwr_hal_set_beacon_filter_enable = 0x40000edc ); +PROVIDE( pwr_hal_set_beacon_filter_force_dump_disable = 0x40000ee0 ); +PROVIDE( pwr_hal_set_beacon_filter_force_dump_enable = 0x40000ee4 ); +PROVIDE( pwr_hal_set_beacon_filter_force_dump_limit = 0x40000ee8 ); +PROVIDE( pwr_hal_set_beacon_filter_force_sync_disable = 0x40000eec ); +PROVIDE( pwr_hal_set_beacon_filter_force_sync_enable = 0x40000ef0 ); +PROVIDE( pwr_hal_set_beacon_filter_force_sync_limit = 0x40000ef4 ); +PROVIDE( pwr_hal_set_beacon_filter_frame_crc_state = 0x40000ef8 ); +PROVIDE( pwr_hal_set_beacon_filter_soc_wakeup_and_intr_disable = 0x40000efc ); +PROVIDE( pwr_hal_set_beacon_filter_soc_wakeup_and_intr_enable = 0x40000f00 ); +PROVIDE( pwr_hal_set_beacon_filter_unicast_wakeup_disable = 0x40000f04 ); +PROVIDE( pwr_hal_set_beacon_filter_unicast_wakeup_enable = 0x40000f08 ); +PROVIDE( pwr_hal_set_lpclk_cycle_time = 0x40000f0c ); +PROVIDE( pwr_hal_set_lpclk_sync_disable = 0x40000f10 ); +PROVIDE( pwr_hal_set_lpclk_sync_enable = 0x40000f14 ); +PROVIDE( pwr_hal_set_mac_modem_beacon_miss_intr_disable = 0x40000f18 ); +PROVIDE( pwr_hal_set_mac_modem_beacon_miss_intr_enable = 0x40000f1c ); +PROVIDE( pwr_hal_set_mac_modem_beacon_miss_limit = 0x40000f20 ); +PROVIDE( pwr_hal_set_mac_modem_beacon_miss_limit_exceeded_wakeup_disable = 0x40000f24 ); +PROVIDE( pwr_hal_set_mac_modem_beacon_miss_limit_exceeded_wakeup_enable = 0x40000f28 ); +PROVIDE( pwr_hal_set_mac_modem_beacon_miss_timeout = 0x40000f2c ); +PROVIDE( pwr_hal_set_mac_modem_state_sleep_limit = 0x40000f30 ); +PROVIDE( pwr_hal_set_mac_modem_state_sleep_limit_exceeded_wakeup_disable = 0x40000f34 ); +PROVIDE( pwr_hal_set_mac_modem_state_sleep_limit_exceeded_wakeup_enable = 0x40000f38 ); +PROVIDE( pwr_hal_set_mac_modem_state_wakeup_protect_disable = 0x40000f3c ); +PROVIDE( pwr_hal_set_mac_modem_state_wakeup_protect_early_time = 0x40000f40 ); +PROVIDE( pwr_hal_set_mac_modem_state_wakeup_protect_enable = 0x40000f44 ); +PROVIDE( pwr_hal_set_mac_modem_tbtt_auto_period_disable = 0x40000f48 ); +PROVIDE( pwr_hal_set_mac_modem_tbtt_auto_period_enable = 0x40000f4c ); +PROVIDE( pwr_hal_set_mac_modem_tbtt_auto_period_interval = 0x40000f50 ); +PROVIDE( pwr_hal_set_modem_state_interface = 0x40000f54 ); +PROVIDE( hal_tsf_clear_soc_wakeup_request = 0x40000f58 ); +PROVIDE( tsf_hal_clear_mac_modem_rf_power_state = 0x40000f5c ); +PROVIDE( tsf_hal_clear_soc_wakeup_request = 0x40000f60 ); +PROVIDE( tsf_hal_get_counter_value = 0x40000f64 ); +PROVIDE( tsf_hal_get_mac_modem_rf_power_state = 0x40000f68 ); +PROVIDE( tsf_hal_get_tbtt_interval = 0x40000f6c ); +PROVIDE( tsf_hal_get_time = 0x40000f70 ); +PROVIDE( tsf_hal_get_timer_target = 0x40000f74 ); +PROVIDE( tsf_hal_is_tsf_enabled = 0x40000f78 ); +PROVIDE( tsf_hal_map_tbtt_target_to_rx_frame = 0x40000f7c ); +PROVIDE( tsf_hal_map_tsf_to_bssid = 0x40000f80 ); +PROVIDE( tsf_hal_set_counter_value = 0x40000f84 ); +PROVIDE( tsf_hal_set_modem_wakeup_early_time = 0x40000f88 ); +PROVIDE( tsf_hal_set_rx_beacon_abort_tsf_time_deviation_sync_disable = 0x40000f8c ); +PROVIDE( tsf_hal_set_rx_beacon_abort_tsf_time_deviation_sync_enable = 0x40000f90 ); +PROVIDE( tsf_hal_set_rx_beacon_fail_tsf_time_deviation_sync_disable = 0x40000f94 ); +PROVIDE( tsf_hal_set_rx_beacon_fail_tsf_time_deviation_sync_enable = 0x40000f98 ); +PROVIDE( tsf_hal_set_rx_beacon_success_tsf_time_deviation_sync_disable = 0x40000f9c ); +PROVIDE( tsf_hal_set_rx_beacon_success_tsf_time_deviation_sync_enable = 0x40000fa0 ); +PROVIDE( tsf_hal_set_tbtt_disable = 0x40000fa4 ); +PROVIDE( tsf_hal_set_tbtt_early_time = 0x40000fa8 ); +PROVIDE( tsf_hal_set_tbtt_enable = 0x40000fac ); +PROVIDE( tsf_hal_set_tbtt_interval = 0x40000fb0 ); +PROVIDE( tsf_hal_set_tbtt_intr_disable = 0x40000fb4 ); +PROVIDE( tsf_hal_set_tbtt_intr_enable = 0x40000fb8 ); +PROVIDE( tsf_hal_set_tbtt_modem_wakeup_disable = 0x40000fbc ); +PROVIDE( tsf_hal_set_tbtt_modem_wakeup_enable = 0x40000fc0 ); +PROVIDE( tsf_hal_set_tbtt_rf_ctrl_disable = 0x40000fc4 ); +PROVIDE( tsf_hal_set_tbtt_rf_ctrl_enable = 0x40000fc8 ); +PROVIDE( tsf_hal_set_tbtt_rf_ctrl_wait_cycles = 0x40000fcc ); +PROVIDE( tsf_hal_set_tbtt_soc_wakeup_disable = 0x40000fd0 ); +PROVIDE( tsf_hal_set_tbtt_soc_wakeup_enable = 0x40000fd4 ); +PROVIDE( tsf_hal_set_time = 0x40000fdc ); +PROVIDE( tsf_hal_set_timer_disable = 0x40000fe0 ); +PROVIDE( tsf_hal_set_timer_enable = 0x40000fe4 ); +PROVIDE( tsf_hal_set_timer_intr_disable = 0x40000fe8 ); +PROVIDE( tsf_hal_set_timer_intr_enable = 0x40000fec ); +PROVIDE( tsf_hal_set_timer_modem_wakeup_disable = 0x40000ff0 ); +PROVIDE( tsf_hal_set_timer_modem_wakeup_enable = 0x40000ff4 ); +PROVIDE( tsf_hal_set_timer_rf_ctrl_disable = 0x40000ff8 ); +PROVIDE( tsf_hal_set_timer_rf_ctrl_enable = 0x40000ffc ); +PROVIDE( tsf_hal_set_timer_rf_ctrl_wait_cycles = 0x40001000 ); +PROVIDE( tsf_hal_set_timer_soc_wakeup_disable = 0x40001004 ); +PROVIDE( tsf_hal_set_timer_soc_wakeup_enable = 0x40001008 ); +PROVIDE( tsf_hal_set_timer_target = 0x4000100c ); +PROVIDE( tsf_hal_set_tsf_disable = 0x40001010 ); +PROVIDE( tsf_hal_set_tsf_enable = 0x40001014 ); +PROVIDE( tsf_hal_set_tsf_time_deviation = 0x40001018 ); +PROVIDE( tsf_hal_set_tsf_time_deviation_sync_disable = 0x4000101c ); +PROVIDE( tsf_hal_set_tsf_time_deviation_sync_enable = 0x40001020 ); +PROVIDE( tsf_hal_unmap_tbtt_target_to_rx_frame = 0x40001024 ); +PROVIDE( rcGetDCMMaxRate = 0x40001040 ); +PROVIDE( ppDirectRecycleAmpdu = 0x40001048 ); +PROVIDE( ppAdd2AMPDUTail = 0x4000105c ); +PROVIDE( esp_test_disable_tx_statistics = 0x40001060 ); +PROVIDE( esp_test_enable_tx_statistics = 0x40001064 ); +PROVIDE( esp_test_clr_tx_statistics = 0x40001068 ); +PROVIDE( esp_test_get_tx_statistics = 0x4000106c ); +PROVIDE( esp_test_clr_tx_tb_statistics = 0x40001070 ); +PROVIDE( esp_test_get_tx_tb_statistics = 0x40001074 ); +PROVIDE( test_tx_fail_statistics = 0x40001078 ); +PROVIDE( esp_test_tx_enab_statistics = 0x40001088 ); +PROVIDE( esp_test_tx_tb_complete = 0x4000108c ); +PROVIDE( esp_test_tx_count_retry = 0x40001090 ); +PROVIDE( esp_test_tx_count_collision = 0x40001094 ); +PROVIDE( esp_test_tx_count_timeout = 0x40001098 ); +PROVIDE( hal_enable_tx_statistics = 0x4000109c ); +PROVIDE( test_rx_process_complete_noeb = 0x400010a0 ); +PROVIDE( test_rx_process_complete_retry = 0x400010a4 ); +PROVIDE( esp_test_rx_process_complete = 0x400010a8 ); +PROVIDE( esp_test_clr_rx_statistics = 0x400010ac ); +PROVIDE( esp_test_get_rx_statistics = 0x400010b0 ); +PROVIDE( test_free_rx_statistics = 0x400010b4 ); +PROVIDE( esp_test_set_rx_error_occurs = 0x400010b8 ); +PROVIDE( esp_test_get_rx_error_occurs = 0x400010bc ); +PROVIDE( esp_test_clr_rx_error_occurs = 0x400010c0 ); +PROVIDE( esp_test_disable_rx_statistics = 0x400010c4 ); +PROVIDE( esp_test_enable_rx_statistics = 0x400010c8 ); +PROVIDE( hal_enable_rx_statistics = 0x400010cc ); +PROVIDE( get_user_num = 0x400010d0 ); +PROVIDE( mumimo_spatial_cfg_get_nsts = 0x400010d4 ); +PROVIDE( mumimo_spatial_cfg_get_nsts_tot = 0x400010d8 ); +PROVIDE( test_mumimo_get_heltf_num = 0x400010dc ); +PROVIDE( test_mimo_update_user_info = 0x400010e0 ); +PROVIDE( test_parse_rx_mu_mimo = 0x400010e4 ); +PROVIDE( test_nonmimo_update_user_info = 0x400010e8 ); +PROVIDE( test_parse_rx_mu_nonmimo = 0x400010ec ); +PROVIDE( esp_test_rx_parse_mu = 0x400010f0 ); +PROVIDE( esp_test_get_rx_mu_statistics = 0x400010f4 ); +PROVIDE( esp_test_clr_rx_mu_statistics = 0x400010f8 ); +PROVIDE( esp_test_enable_rx_mu_statistics = 0x400010fc ); +PROVIDE( esp_test_disable_rx_mu_statistics = 0x40001100 ); +PROVIDE( our_instances_ptr = 0x4004ffe0 ); +PROVIDE( pTxRx = 0x4087ff80 ); +PROVIDE( lmacConfMib_ptr = 0x4087ff7c ); +PROVIDE( our_wait_eb = 0x4087ff78 ); +PROVIDE( our_tx_eb = 0x4087ff74 ); +PROVIDE( pp_wdev_funcs = 0x4087ff70 ); +PROVIDE( g_osi_funcs_p = 0x4087ff6c ); +PROVIDE( wDevCtrl_ptr = 0x4087ff68 ); +PROVIDE( g_wdev_last_desc_reset_ptr = 0x4004ffdc ); +PROVIDE( wDevMacSleep_ptr = 0x4087ff64 ); +PROVIDE( g_lmac_cnt_ptr = 0x4087ff60 ); +PROVIDE( our_controls_ptr = 0x4004ffd8 ); +PROVIDE( pp_sig_cnt_ptr = 0x4087ff5c ); +PROVIDE( g_eb_list_desc_ptr = 0x4087ff58 ); +PROVIDE( s_fragment_ptr = 0x4087ff54 ); +PROVIDE( if_ctrl_ptr = 0x4087ff50 ); +PROVIDE( g_intr_lock_mux = 0x4087ff4c ); +PROVIDE( g_wifi_global_lock = 0x4087ff48 ); +PROVIDE( s_wifi_queue = 0x4087ff44 ); +PROVIDE( pp_task_hdl = 0x4087ff40 ); +PROVIDE( s_pp_task_create_sem = 0x4087ff3c ); +PROVIDE( s_pp_task_del_sem = 0x4087ff38 ); +PROVIDE( g_wifi_menuconfig_ptr = 0x4087ff34 ); +PROVIDE( xphyQueue = 0x4087ff30 ); +PROVIDE( ap_no_lr_ptr = 0x4087ff2c ); +PROVIDE( rc11BSchedTbl_ptr = 0x4087ff28 ); +PROVIDE( rc11NSchedTbl_ptr = 0x4087ff24 ); +PROVIDE( rcLoRaSchedTbl_ptr = 0x4087ff20 ); +PROVIDE( BasicOFDMSched_ptr = 0x4087ff1c ); +PROVIDE( trc_ctl_ptr = 0x4087ff18 ); +PROVIDE( g_pm_cnt_ptr = 0x4087ff14 ); +PROVIDE( g_pm_ptr = 0x4087ff10 ); +PROVIDE( g_pm_cfg_ptr = 0x4087ff0c ); +PROVIDE( g_esp_mesh_quick_funcs_ptr = 0x4087ff08 ); +PROVIDE( g_txop_queue_status_ptr = 0x4087ff04 ); +PROVIDE( g_mac_sleep_en_ptr = 0x4087ff00 ); +PROVIDE( g_mesh_is_root_ptr = 0x4087fefc ); +PROVIDE( g_mesh_topology_ptr = 0x4087fef8 ); +PROVIDE( g_mesh_init_ps_type_ptr = 0x4087fef4 ); +PROVIDE( g_mesh_is_started_ptr = 0x4087fef0 ); +PROVIDE( g_config_func = 0x4087feec ); +PROVIDE( g_net80211_tx_func = 0x4087fee8 ); +PROVIDE( g_timer_func = 0x4087fee4 ); +PROVIDE( s_michael_mic_failure_cb = 0x4087fee0 ); +PROVIDE( wifi_sta_rx_probe_req = 0x4087fedc ); +PROVIDE( g_tx_done_cb_func = 0x4087fed8 ); +PROVIDE( g_per_conn_trc = 0x4087fe8c ); +PROVIDE( s_encap_amsdu_func = 0x4087fe88 ); +PROVIDE( rx_beacon_count = 0x4087fe84 ); +PROVIDE( rx_beacon_sw_parse = 0x4087fe80 ); +PROVIDE( rx_beacon_hw_parse = 0x4087fe7c ); +PROVIDE( rx_beacon_tim_count = 0x4087fe78 ); +PROVIDE( rx_beacon_tim_udata = 0x4087fe74 ); +PROVIDE( rx_beacon_tim_udata_bitmap = 0x4087fe70 ); +PROVIDE( rx_beacon_tim_bdata = 0x4087fe6c ); +PROVIDE( rx_beacon_tim_bdata_bitmapctl = 0x4087fe68 ); +PROVIDE( rx_beacon_tim_bdata_bitmap_trans = 0x4087fe64 ); +PROVIDE( rx_beacon_tim_bdata_bitmap_mbssid_self = 0x4087fe60 ); +PROVIDE( rx_beacon_tim_bdata_bitmap_mbssid_other = 0x4087fe5c ); +PROVIDE( rx_beacon_dtim_tim = 0x4087fe58 ); +PROVIDE( rx_beacon_dtim_tim_mcast = 0x4087fe54 ); +PROVIDE( amdpu_delay_time_ms = 0x4087fd08 ); +PROVIDE( ampdu_delay_packet = 0x4087fd04 ); +PROVIDE( ampdu_delay = 0x4087fe51 ); +PROVIDE( first_ampdu = 0x4087fe50 ); +PROVIDE( s_ht_ampdu_density_us = 0x4087fd02 ); +PROVIDE( s_ht_ampdu_density = 0x4087fd01 ); +PROVIDE( s_running_phy_type = 0x4087fd00 ); +PROVIDE( complete_ena_tb_seqno = 0x4087fe4c ); +PROVIDE( complete_ena_tb_final = 0x4087fe48 ); +PROVIDE( complete_ena_tb_count = 0x4087fe44 ); +PROVIDE( s_itwt_state = 0x4087fe40 ); +PROVIDE( g_dbg_interp_tsf = 0x4087fe3c ); +PROVIDE( g_dbg_interp_tsf_end = 0x4087fe38 ); +PROVIDE( g_dbg_closrf_tsf = 0x4087fe34 ); +PROVIDE( g_dbg_closrf_idx = 0x4087fe30 ); +PROVIDE( g_dbg_closrf_blk = 0x4087fe2c ); +PROVIDE( s_he_min_len_bytes = 0x4087fdf0 ); +PROVIDE( s_he_dcm_min_len_bytes = 0x4087fdd0 ); +PROVIDE( s_mplen_low_bitmap = 0x4087fdc0 ); +PROVIDE( s_mplen_high_bitmap = 0x4087fdb0 ); +PROVIDE( s_mplen_vi_bitmap = 0x4087fdac ); +PROVIDE( s_mplen_bk_bitmap = 0x4087fda8 ); +PROVIDE( esp_wifi_cert_tx_mcs = 0x4087fcfc ); +PROVIDE( esp_wifi_cert_tx_bcc = 0x4087fcf8 ); +PROVIDE( esp_wifi_cert_tx_nss = 0x4087fcec ); +PROVIDE( esp_test_tx_statistics_aci_bitmap = 0x4087fda4 ); +PROVIDE( esp_test_tx_statistics = 0x4087fd94 ); +PROVIDE( esp_test_tx_tb_statistics = 0x4087fd84 ); +PROVIDE( esp_test_tx_fail_statistics = 0x4087fd24 ); +PROVIDE( esp_test_rx_statistics = 0x4087fd1c ); +PROVIDE( esp_test_rx_mu_statistics = 0x4087fd18 ); +PROVIDE( esp_test_mu_print_ru_allocation = 0x4087fd14 ); +PROVIDE( sigb_ru_allocation_user_num = 0x4004ffc8 ); +PROVIDE( sigb_common_ru_allocation = 0x4004ff38 ); +PROVIDE( mu_mimo_special_cfg_user_num_2 = 0x4004fee8 ); +PROVIDE( mu_mimo_special_cfg_user_num_3 = 0x4004fe80 ); +PROVIDE( mu_mimo_special_cfg_user_num_4 = 0x4004fe28 ); +PROVIDE( mu_mimo_special_cfg_user_num_5 = 0x4004fdf0 ); +PROVIDE( mu_mimo_special_cfg_user_num_6 = 0x4004fdd0 ); +PROVIDE( mu_mimo_special_cfg_user_num_7 = 0x4004fdc0 ); +PROVIDE( mu_mimo_special_cfg_user_num_8 = 0x4004fdb8 ); +PROVIDE( esp_test_rx_error_occurs = 0x4087fd10 ); +PROVIDE( g_pp_tx_pkt_num = 0x4087fd0c ); +PROVIDE( he_max_apep_length = 0x4004fd40 ); + +/* --- esp32c6.rom.net80211.ld --- */ +PROVIDE( esp_net80211_rom_version_get = 0x40000b4c ); +PROVIDE( ampdu_dispatch = 0x40000b50 ); +PROVIDE( ampdu_dispatch_all = 0x40000b54 ); +PROVIDE( ampdu_dispatch_as_many_as_possible = 0x40000b58 ); +PROVIDE( ampdu_dispatch_movement = 0x40000b5c ); +PROVIDE( ampdu_dispatch_upto = 0x40000b60 ); +PROVIDE( chm_is_at_home_channel = 0x40000b64 ); +PROVIDE( cnx_node_is_existing = 0x40000b68 ); +PROVIDE( cnx_node_search = 0x40000b6c ); +PROVIDE( ic_ebuf_recycle_rx = 0x40000b70 ); +PROVIDE( ic_ebuf_recycle_tx = 0x40000b74 ); +PROVIDE( ic_reset_rx_ba = 0x40000b78 ); +PROVIDE( ieee80211_align_eb = 0x40000b7c ); +PROVIDE( ieee80211_ampdu_start_age_timer = 0x40000b84 ); +PROVIDE( ieee80211_is_tx_allowed = 0x40000b8c ); +PROVIDE( ieee80211_output_pending_eb = 0x40000b90 ); +PROVIDE( wifi_get_macaddr = 0x40000ba0 ); +PROVIDE( wifi_rf_phy_disable = 0x40000ba4 ); +PROVIDE( wifi_rf_phy_enable = 0x40000ba8 ); +PROVIDE( ic_ebuf_alloc = 0x40000bac ); +PROVIDE( ieee80211_copy_eb_header = 0x40000bb4 ); +PROVIDE( ieee80211_recycle_cache_eb = 0x40000bb8 ); +PROVIDE( ieee80211_search_node = 0x40000bbc ); +PROVIDE( ieee80211_crypto_encap = 0x40000bc0 ); +PROVIDE( ieee80211_decap = 0x40000bc8 ); +PROVIDE( wifi_is_started = 0x40000bcc ); +PROVIDE( ieee80211_gettid = 0x40000bd0 ); +PROVIDE( net80211_funcs = 0x4087ffac ); +PROVIDE( g_scan = 0x4087ffa8 ); +PROVIDE( g_chm = 0x4087ffa4 ); +PROVIDE( g_ic_ptr = 0x4087ffa0 ); +PROVIDE( g_hmac_cnt_ptr = 0x4087ff9c ); +PROVIDE( g_tx_cacheq_ptr = 0x4087ff98 ); +PROVIDE( s_netstack_free = 0x4087ff94 ); +PROVIDE( mesh_rxcb = 0x4087ff90 ); +PROVIDE( sta_rxcb = 0x4087ff8c ); +PROVIDE( g_itwt_fid = 0x4087ff88 ); + +/* --- esp32c6.rom.coexist.ld --- */ +PROVIDE( esp_coex_rom_version_get = 0x40000afc ); +PROVIDE( coex_bt_release = 0x40000b00 ); +PROVIDE( coex_bt_request = 0x40000b04 ); +PROVIDE( coex_core_ble_conn_dyn_prio_get = 0x40000b08 ); +PROVIDE( coex_core_pti_get = 0x40000b10 ); +PROVIDE( coex_core_release = 0x40000b14 ); +PROVIDE( coex_core_request = 0x40000b18 ); +PROVIDE( coex_core_status_get = 0x40000b1c ); +PROVIDE( coex_event_duration_get = 0x40000b24 ); +PROVIDE( coex_hw_timer_disable = 0x40000b28 ); +PROVIDE( coex_hw_timer_enable = 0x40000b2c ); +PROVIDE( coex_hw_timer_set = 0x40000b30 ); +PROVIDE( coex_schm_interval_set = 0x40000b34 ); +PROVIDE( coex_schm_lock = 0x40000b38 ); +PROVIDE( coex_schm_unlock = 0x40000b3c ); +PROVIDE( coex_wifi_release = 0x40000b44 ); +PROVIDE( esp_coex_ble_conn_dynamic_prio_get = 0x40000b48 ); +PROVIDE( coex_env_ptr = 0x4087ffc4 ); +PROVIDE( coex_pti_tab_ptr = 0x4087ffc0 ); +PROVIDE( coex_schm_env_ptr = 0x4087ffbc ); +PROVIDE( coexist_funcs = 0x4087ffb8 ); +PROVIDE( g_coa_funcs_p = 0x4087ffb4 ); +PROVIDE( g_coex_param_ptr = 0x4087ffb0 ); + +/* --- esp32c6.rom.version.ld --- */ +PROVIDE( _rom_chip_id = 0x40000010 ); +PROVIDE( _rom_eco_version = 0x40000014 ); + +/* --- additional.ld --- */ +PROVIDE( memset = 0x400004a8 ); +PROVIDE( memcpy = 0x400004ac ); +PROVIDE( memmove = 0x400004b0 ); +PROVIDE( memcmp = 0x400004b4 ); +PROVIDE( strncmp = 0x400004c4 ); +PROVIDE( strncpy = 0x400004bc ); +PROVIDE( strcpy = 0x400004b8 ); +PROVIDE( abs = 0x40000578 ); +PROVIDE( strcat = 0x4000052c ); +PROVIDE( strcmp = 0x400004c0 ); +PROVIDE( strchr = 0x40000534 ); +PROVIDE( strlcpy = 0x40000544 ); +PROVIDE( strstr = 0x400004cc ); +PROVIDE( strcasecmp = 0x40000524 ); +PROVIDE( syscall_table_ptr = 0x4087ffd4 );