11bd4fe43Sopenharmony_ciOUTPUT_ARCH( "riscv" ) 21bd4fe43Sopenharmony_ciENTRY(_start) 31bd4fe43Sopenharmony_ci 41bd4fe43Sopenharmony_ci#ifdef LOSCFG_DEBUG_KASAN 51bd4fe43Sopenharmony_ci#define MAX_BIN_SIZE 3M 61bd4fe43Sopenharmony_ci#else 71bd4fe43Sopenharmony_ci#define MAX_BIN_SIZE 2M 81bd4fe43Sopenharmony_ci#endif 91bd4fe43Sopenharmony_ci 101bd4fe43Sopenharmony_ci#ifdef HI_BOARD_ASIC 111bd4fe43Sopenharmony_ci#ifdef HI_ON_FLASH 121bd4fe43Sopenharmony_ci 131bd4fe43Sopenharmony_ci#ifdef CONFIG_CHIP_PKT_48K 141bd4fe43Sopenharmony_ci#define RAM_SIZE 264K /* PKT_B:48K */ 151bd4fe43Sopenharmony_ci#define RAM_START 0x000dc000 /* PKT_B:48K */ 161bd4fe43Sopenharmony_ci#else 171bd4fe43Sopenharmony_ci#define RAM_SIZE 280K /* PKT_B:32K*/ 181bd4fe43Sopenharmony_ci#define RAM_START 0x000d8000 /* PKT_B:32K */ 191bd4fe43Sopenharmony_ci#endif 201bd4fe43Sopenharmony_ci 211bd4fe43Sopenharmony_ci#else 221bd4fe43Sopenharmony_ci#define RAM_SIZE 248K /* PKT_B:64K + NO DC */ 231bd4fe43Sopenharmony_ci#define RAM_START 0x000e0000 /* PKT_B:64K */ 241bd4fe43Sopenharmony_ci#endif 251bd4fe43Sopenharmony_ci#else 261bd4fe43Sopenharmony_ci#ifdef HI_ON_FLASH 271bd4fe43Sopenharmony_ci#ifdef LOSCFG_DEBUG_KASAN 281bd4fe43Sopenharmony_ci#define RAM_SIZE 896K 291bd4fe43Sopenharmony_ci#else 301bd4fe43Sopenharmony_ci#define RAM_SIZE 1M 311bd4fe43Sopenharmony_ci#endif 321bd4fe43Sopenharmony_ci#define RAM_START 0x00100000 331bd4fe43Sopenharmony_ci#else 341bd4fe43Sopenharmony_ci#define RAM_SIZE 248K /* PKT_B:64K + NO DC */ 351bd4fe43Sopenharmony_ci#define RAM_START 0x000e0000 /* PKT_B:64K */ 361bd4fe43Sopenharmony_ci#endif 371bd4fe43Sopenharmony_ci#endif 381bd4fe43Sopenharmony_ci 391bd4fe43Sopenharmony_ci#ifdef LOSCFG_DEBUG_KASAN 401bd4fe43Sopenharmony_ci#define FLASH_SIZE 3M 411bd4fe43Sopenharmony_ci#else 421bd4fe43Sopenharmony_ci#define FLASH_SIZE 2M 431bd4fe43Sopenharmony_ci#endif 441bd4fe43Sopenharmony_ci 451bd4fe43Sopenharmony_ci#ifdef CONFIG_FLASH_ENCRYPT_SUPPORT 461bd4fe43Sopenharmony_ci#define CRYPTO_RAM_LEN 4096 471bd4fe43Sopenharmony_ci#endif 481bd4fe43Sopenharmony_ci 491bd4fe43Sopenharmony_ciSTACK_SIZE = 2k; /* needs to be calculated for your application */ 501bd4fe43Sopenharmony_ciIRQ_STACK_SIZE = 3K; 511bd4fe43Sopenharmony_ciEXC_STACK_SIZE = 2K; 521bd4fe43Sopenharmony_ci#if (defined CONFIG_TEE_HUKS_SUPPORT) || (defined CONFIG_TARGET_SIG_RSA_V15) || (defined CONFIG_TARGET_SIG_RSA_PSS) || (defined CONFIG_TARGET_SIG_ECC) 531bd4fe43Sopenharmony_ciNMI_STACK_SIZE = 2K; 541bd4fe43Sopenharmony_ci#else 551bd4fe43Sopenharmony_ciNMI_STACK_SIZE = 0K; 561bd4fe43Sopenharmony_ci#endif 571bd4fe43Sopenharmony_ciDOWNLOAD_STACK_SIZE = 4K; 581bd4fe43Sopenharmony_ciDOWNLOAD_IRQ_STACK_SIZE = 2K; 591bd4fe43Sopenharmony_ci 601bd4fe43Sopenharmony_ci/* actually rom data0 size is 944 byte, when rom fixed, may all data can be placed in rom. */ 611bd4fe43Sopenharmony_ci#define ROM_DATA0_LEN 32 /* 32 bytes align */ 621bd4fe43Sopenharmony_ci 631bd4fe43Sopenharmony_ci#ifdef LOSCFG_DEBUG_KASAN 641bd4fe43Sopenharmony_ci#define ROM_DATA1_LEN 5056 /* 32 bytes align */ 651bd4fe43Sopenharmony_ci#else 661bd4fe43Sopenharmony_ci#define ROM_DATA1_LEN 2016 /* 32 bytes align */ 671bd4fe43Sopenharmony_ci#endif 681bd4fe43Sopenharmony_ci 691bd4fe43Sopenharmony_ci#define ROM_BSS_LEN 11776 /* 32 bytes align */ 701bd4fe43Sopenharmony_ci#define PATCH_BSS_LEN 1024 /* 1024 bytes align */ 711bd4fe43Sopenharmony_ci 721bd4fe43Sopenharmony_ci#ifdef HI_ON_FLASH 731bd4fe43Sopenharmony_ci#define SECURE_HEAD 0 /* iot has no Signature head */ 741bd4fe43Sopenharmony_ci#else 751bd4fe43Sopenharmony_ci#define SECURE_HEAD 0x5A0 /* non-iot Signature lenth */ 761bd4fe43Sopenharmony_ci#endif 771bd4fe43Sopenharmony_ci 781bd4fe43Sopenharmony_ci#define ROM_TEXT_LEN (278K - ROM_DATA0_LEN) 791bd4fe43Sopenharmony_ci#define CHECK_INFO_LEN 0x40 801bd4fe43Sopenharmony_ci#if (defined HI_BOARD_ASIC) || (!defined HI_ON_FLASH) 811bd4fe43Sopenharmony_ci#define STACK_LEN (STACK_SIZE + IRQ_STACK_SIZE + EXC_STACK_SIZE + NMI_STACK_SIZE) 821bd4fe43Sopenharmony_ci#endif 831bd4fe43Sopenharmony_ci 841bd4fe43Sopenharmony_ci#define ROM_RAM_LEN (ROM_DATA0_LEN + ROM_DATA1_LEN + ROM_BSS_LEN + CHECK_INFO_LEN) 851bd4fe43Sopenharmony_ci#define ROM_RAM_START (0x11DFFF - ROM_RAM_LEN + 1) 861bd4fe43Sopenharmony_ci#define ROM_START 0x003b8000 871bd4fe43Sopenharmony_ci#define FLASH_START 0x00400000 881bd4fe43Sopenharmony_ci#define BIN_START FLASH_FIRM_START /* The value of <FLASH_FIRM_START> macro is transfered by scons. And the value varies with the signature. */ 891bd4fe43Sopenharmony_ci 901bd4fe43Sopenharmony_ci#ifndef HI_BOARD_ASIC 911bd4fe43Sopenharmony_ci/* only use in FPGA. */ 921bd4fe43Sopenharmony_ci#define RAM_FPGA_START 0x11E000 931bd4fe43Sopenharmony_ci#define RAM_FPGA_LEN (1M - 120K) 941bd4fe43Sopenharmony_ci#endif 951bd4fe43Sopenharmony_ci 961bd4fe43Sopenharmony_ci#if defined(ROM_BIN_TEST) 971bd4fe43Sopenharmony_ci#define TEST_OFFSET 7 981bd4fe43Sopenharmony_ci#else 991bd4fe43Sopenharmony_ci#define TEST_OFFSET 0 1001bd4fe43Sopenharmony_ci#endif 1011bd4fe43Sopenharmony_ci 1021bd4fe43Sopenharmony_ci#define ROM_TEXT_VMA ROM_START 1031bd4fe43Sopenharmony_ci 1041bd4fe43Sopenharmony_ci#define ROM_BSS_VMA ROM_RAM_START 1051bd4fe43Sopenharmony_ci#define ROM_DATA0_VMA (ROM_RAM_START + ROM_BSS_LEN) 1061bd4fe43Sopenharmony_ci#define ROM_DATA1_VMA (ROM_DATA0_VMA + ROM_DATA0_LEN) 1071bd4fe43Sopenharmony_ci#define CHECK_INFO_VMA (ROM_DATA1_VMA + ROM_DATA1_LEN) 1081bd4fe43Sopenharmony_ci#define PATCH_BSS_START RAM_START 1091bd4fe43Sopenharmony_ci#ifdef CONFIG_FLASH_ENCRYPT_SUPPORT 1101bd4fe43Sopenharmony_ci#define CRYPTO_RAM_START (PATCH_BSS_START + PATCH_BSS_LEN + SECURE_HEAD) 1111bd4fe43Sopenharmony_ci#define NON_ROM_RAM_START (CRYPTO_RAM_START + CRYPTO_RAM_LEN) 1121bd4fe43Sopenharmony_ci#else 1131bd4fe43Sopenharmony_ci#define NON_ROM_RAM_START (PATCH_BSS_START + PATCH_BSS_LEN + SECURE_HEAD) 1141bd4fe43Sopenharmony_ci#endif 1151bd4fe43Sopenharmony_ci#if (defined HI_BOARD_ASIC) || (!defined HI_ON_FLASH) 1161bd4fe43Sopenharmony_ci#define STACK_VMA ROM_RAM_START - STACK_LEN 1171bd4fe43Sopenharmony_ci#endif 1181bd4fe43Sopenharmony_ci 1191bd4fe43Sopenharmony_ci#define ROM_TEXT_LMA (BIN_START - ROM_TEXT_LEN - ROM_DATA0_LEN) 1201bd4fe43Sopenharmony_ci#define ROM_DATA0_LMA (ROM_TEXT_LMA + ROM_TEXT_LEN) 1211bd4fe43Sopenharmony_ci 1221bd4fe43Sopenharmony_ci#ifdef HI_ON_FLASH 1231bd4fe43Sopenharmony_ci#define NON_ROM_TEXT_REGION FLASH 1241bd4fe43Sopenharmony_ci#else 1251bd4fe43Sopenharmony_ci#define NON_ROM_TEXT_REGION RAM 1261bd4fe43Sopenharmony_ci#endif 1271bd4fe43Sopenharmony_ci 1281bd4fe43Sopenharmony_ci#ifdef CONFIG_FLASH_ENCRYPT_SUPPORT 1291bd4fe43Sopenharmony_ci#define RAM_CRYPTO_TEXT_LMA (ROM_DATA0_LMA + ROM_DATA0_LEN) 1301bd4fe43Sopenharmony_ci#define NON_ROM_TEXT_LMA (RAM_CRYPTO_TEXT_LMA + CRYPTO_RAM_LEN) 1311bd4fe43Sopenharmony_ci#else 1321bd4fe43Sopenharmony_ci#define NON_ROM_TEXT_LMA (ROM_DATA0_LMA + ROM_DATA0_LEN) 1331bd4fe43Sopenharmony_ci#endif 1341bd4fe43Sopenharmony_ci 1351bd4fe43Sopenharmony_ci#define ZINIT_NO_ROM_TEXT_LMA ((NON_ROM_TEXT_LMA + SIZEOF (.text_non_rom) + (0x20) - 1) & ~ ((0x20) - 1)) 1361bd4fe43Sopenharmony_ci#define RAM_TEXT_LMA ((ZINIT_NO_ROM_TEXT_LMA + SIZEOF (.zInit) + (0x20) - 1) & ~ ((0x20) - 1)) 1371bd4fe43Sopenharmony_ci#define NON_ROM_DATA_LMA ((RAM_TEXT_LMA + SIZEOF (.ram_text) + (0x20) -1) & ~ ((0x20) - 1)) 1381bd4fe43Sopenharmony_ci#define ROM_DATA1_LMA ((NON_ROM_DATA_LMA + SIZEOF(.data) + (0x20) - 1) & ~ ((0x20) - 1)) 1391bd4fe43Sopenharmony_ci 1401bd4fe43Sopenharmony_ci#if (defined HI_BOARD_ASIC) || (!defined HI_ON_FLASH) 1411bd4fe43Sopenharmony_ci 1421bd4fe43Sopenharmony_ci#ifdef CONFIG_FLASH_ENCRYPT_SUPPORT 1431bd4fe43Sopenharmony_ci#define RAM_LEN (RAM_SIZE - ROM_RAM_LEN - PATCH_BSS_LEN - STACK_LEN- SECURE_HEAD - CRYPTO_RAM_LEN) 1441bd4fe43Sopenharmony_ci#else 1451bd4fe43Sopenharmony_ci#define RAM_LEN (RAM_SIZE - ROM_RAM_LEN - PATCH_BSS_LEN - STACK_LEN - SECURE_HEAD) 1461bd4fe43Sopenharmony_ci#endif 1471bd4fe43Sopenharmony_ci 1481bd4fe43Sopenharmony_ci#else 1491bd4fe43Sopenharmony_ci#define RAM_LEN (RAM_SIZE - ROM_RAM_LEN - PATCH_BSS_LEN - SECURE_HEAD) 1501bd4fe43Sopenharmony_ci#endif 1511bd4fe43Sopenharmony_ci 1521bd4fe43Sopenharmony_ci#define KEEP_SORT_GCC_TEXT(obj) KEEP(SORT(*libgcc.a:obj)(.text*)) 1531bd4fe43Sopenharmony_ci#define KEEP_SORT_GCC_RODATA(obj) KEEP(SORT(*libgcc.a:obj)(.rodata*)) 1541bd4fe43Sopenharmony_ci#define KEEP_SORT_GCC_DATA(obj) KEEP(SORT(*libgcc.a:obj)(.data*)) 1551bd4fe43Sopenharmony_ci#define KEEP_SORT_GCC_BSS(obj) KEEP(SORT(*libgcc.a:obj)(.bss*)) 1561bd4fe43Sopenharmony_ci#define LIBGCC_ROM_FUN(func) func(save-restore.o) func(_clzsi2.o) func(_umoddi3.o) func(_clz.o) func(_ashldi3.o) func(_lshrdi3.o) func(fixdfsi.o) func(_udivdi3.o) 1571bd4fe43Sopenharmony_ci 1581bd4fe43Sopenharmony_ciMEMORY 1591bd4fe43Sopenharmony_ci{ 1601bd4fe43Sopenharmony_ci BIN(rx) : ORIGIN = BIN_START, LENGTH = MAX_BIN_SIZE 1611bd4fe43Sopenharmony_ci ROM_TEXT(rx) : ORIGIN = ROM_TEXT_VMA, LENGTH = ROM_TEXT_LEN /* code and rodata of download,kernel,lib,bsp,wifi... */ 1621bd4fe43Sopenharmony_ci ROM_DATA0(rwx) : ORIGIN = ROM_DATA0_VMA, LENGTH = ROM_DATA0_LEN /* data used by download rom code */ 1631bd4fe43Sopenharmony_ci ROM_DATA1(rwx) : ORIGIN = ROM_DATA1_VMA, LENGTH = 1768 /* data used by other rom code:1768 byte */ 1641bd4fe43Sopenharmony_ci ROM_BSS(rwx) : ORIGIN = ROM_BSS_VMA, LENGTH = ROM_BSS_LEN /* bss used by rom code */ 1651bd4fe43Sopenharmony_ci#if (defined HI_BOARD_ASIC) || (!defined HI_ON_FLASH) 1661bd4fe43Sopenharmony_ci STACK(rw) : ORIGIN = STACK_VMA, LENGTH = STACK_LEN /* stack */ 1671bd4fe43Sopenharmony_ci#endif 1681bd4fe43Sopenharmony_ci CHECK_INFO(rw) : ORIGIN = CHECK_INFO_VMA, LENGTH = CHECK_INFO_LEN /* check info used by rom code */ 1691bd4fe43Sopenharmony_ci#ifdef CONFIG_FLASH_ENCRYPT_SUPPORT 1701bd4fe43Sopenharmony_ci FLASH(rwx) : ORIGIN = FLASH_FIRM_START + CRYPTO_RAM_LEN, LENGTH = FLASH_START + FLASH_SIZE - FLASH_FIRM_START - CRYPTO_RAM_LEN 1711bd4fe43Sopenharmony_ci#else 1721bd4fe43Sopenharmony_ci FLASH(rwx) : ORIGIN = FLASH_FIRM_START, LENGTH = FLASH_START + FLASH_SIZE - FLASH_FIRM_START 1731bd4fe43Sopenharmony_ci#endif 1741bd4fe43Sopenharmony_ci PATCH_BSS(rwx) : ORIGIN = PATCH_BSS_START, LENGTH = PATCH_BSS_LEN /* flash patch remap */ 1751bd4fe43Sopenharmony_ci#ifdef CONFIG_FLASH_ENCRYPT_SUPPORT 1761bd4fe43Sopenharmony_ci CRYPTO_RAM(rwx) : ORIGIN = CRYPTO_RAM_START, LENGTH = CRYPTO_RAM_LEN /* 4K kernel crypto */ 1771bd4fe43Sopenharmony_ci#endif 1781bd4fe43Sopenharmony_ci RAM(rwx) : ORIGIN = NON_ROM_RAM_START, LENGTH = RAM_LEN /* non rom data,bss,stack,heap */ 1791bd4fe43Sopenharmony_ci EXTERN_ROM_DATA1_BSS(rwx) : ORIGIN = 0x11dec8, LENGTH = ROM_DATA1_LEN-1768 /* use extern rom data 1 as non_rom bss */ 1801bd4fe43Sopenharmony_ci#if (defined HI_BOARD_FPGA) && (defined HI_ON_FLASH) 1811bd4fe43Sopenharmony_ci RAM_FPGA(rwx) : ORIGIN = RAM_FPGA_START, LENGTH = RAM_FPGA_LEN /* FPGA stack and heap */ 1821bd4fe43Sopenharmony_ci#endif 1831bd4fe43Sopenharmony_ci} 1841bd4fe43Sopenharmony_ci 1851bd4fe43Sopenharmony_ciSECTIONS 1861bd4fe43Sopenharmony_ci{ 1871bd4fe43Sopenharmony_ci .text_rom : AT (ROM_TEXT_LMA) 1881bd4fe43Sopenharmony_ci { 1891bd4fe43Sopenharmony_ci . = ALIGN(0x20); 1901bd4fe43Sopenharmony_ci __rom_text_begin__ = .; 1911bd4fe43Sopenharmony_ci __text_cache_start1_ = .; 1921bd4fe43Sopenharmony_ci _rom_size_download_start = .; 1931bd4fe43Sopenharmony_ci KEEP(SORT(*)(.text.download_entry)) 1941bd4fe43Sopenharmony_ci . = ALIGN(0x4); 1951bd4fe43Sopenharmony_ci KEEP(SORT(*)(.text.trap_download_vector)) 1961bd4fe43Sopenharmony_ci KEEP(SORT(*)(.text.download_assemble)) 1971bd4fe43Sopenharmony_ci . = ALIGN(0x4); 1981bd4fe43Sopenharmony_ci _rom_size_download_end = .; 1991bd4fe43Sopenharmony_ci _rom_size_download = _rom_size_download_end - _rom_size_download_start; 2001bd4fe43Sopenharmony_ci KEEP(SORT(libwifi_base.o)(.text*)) 2011bd4fe43Sopenharmony_ci KEEP(SORT(*)(.wifi.rom.text*)) 2021bd4fe43Sopenharmony_ci . = ALIGN(0x20); 2031bd4fe43Sopenharmony_ci _rom_wifi_rom_end = .; 2041bd4fe43Sopenharmony_ci _rom_size_libwifi = _rom_wifi_rom_end - _rom_size_download; 2051bd4fe43Sopenharmony_ci KEEP(SORT(libbsp_base.o)(.text*)) 2061bd4fe43Sopenharmony_ci _rom_bsp_rom_end = .; 2071bd4fe43Sopenharmony_ci _rom_size_libbsp = _rom_bsp_rom_end - _rom_wifi_rom_end; 2081bd4fe43Sopenharmony_ci KEEP(SORT(liblitekernel_base.o)(.text*)) 2091bd4fe43Sopenharmony_ci _rom_kernel_rom_end = .; 2101bd4fe43Sopenharmony_ci _rom_size_kernel = _rom_kernel_rom_end - _rom_bsp_rom_end; 2111bd4fe43Sopenharmony_ci LIBGCC_ROM_FUN(KEEP_SORT_GCC_TEXT) 2121bd4fe43Sopenharmony_ci _rom_libgcc_end = .; 2131bd4fe43Sopenharmony_ci _rom_size_libgcc = _rom_libgcc_end - _rom_kernel_rom_end; 2141bd4fe43Sopenharmony_ci KEEP(SORT(libc_base.o)(.text*)) 2151bd4fe43Sopenharmony_ci _rom_libc_rom_end = .; 2161bd4fe43Sopenharmony_ci _rom_size_libc = _rom_libc_rom_end - _rom_libgcc_end; 2171bd4fe43Sopenharmony_ci KEEP(SORT(libsec_base.o)(.text*)) 2181bd4fe43Sopenharmony_ci _rom_sec_rom_end = .; 2191bd4fe43Sopenharmony_ci _rom_size_libsec = _rom_sec_rom_end - _rom_libc_rom_end; 2201bd4fe43Sopenharmony_ci __text_cache_end1_ = .; 2211bd4fe43Sopenharmony_ci KEEP(SORT(libwifi_base.o)(.rodata*)) 2221bd4fe43Sopenharmony_ci KEEP(SORT(*)(.wifi.rom.rodata*)) 2231bd4fe43Sopenharmony_ci . = ALIGN(0x4); 2241bd4fe43Sopenharmony_ci _rom_hi1131_wifi_rom_rodata_end = .; 2251bd4fe43Sopenharmony_ci _rom_size_rodata_wifi = _rom_hi1131_wifi_rom_rodata_end - _rom_sec_rom_end; 2261bd4fe43Sopenharmony_ci KEEP(SORT(libbsp_base.o)(.rodata*)) 2271bd4fe43Sopenharmony_ci KEEP(SORT(*)(.bsp.rom.rodata)) 2281bd4fe43Sopenharmony_ci _rom_libbsp_rom_rodata_end = .; 2291bd4fe43Sopenharmony_ci _rom_size_rodata_bsp = _rom_libbsp_rom_rodata_end - _rom_hi1131_wifi_rom_rodata_end; 2301bd4fe43Sopenharmony_ci KEEP(SORT(liblitekernel_base.o)(.rodata*)) 2311bd4fe43Sopenharmony_ci _rom_litekenel_rom_rodata_end = .; 2321bd4fe43Sopenharmony_ci _rom_size_rodata_kernel = _rom_litekenel_rom_rodata_end - _rom_size_rodata_bsp; 2331bd4fe43Sopenharmony_ci LIBGCC_ROM_FUN(KEEP_SORT_GCC_RODATA) 2341bd4fe43Sopenharmony_ci _rom_libgcc_rodata_end = .; 2351bd4fe43Sopenharmony_ci _rom_size_rodata_libgcc = _rom_libgcc_rodata_end - _rom_litekenel_rom_rodata_end; 2361bd4fe43Sopenharmony_ci KEEP(SORT(libc_base.o)(.rodata*)) 2371bd4fe43Sopenharmony_ci _rom_libcrom_rodata_end = .; 2381bd4fe43Sopenharmony_ci _rom_size_rodata_libc = _rom_libcrom_rodata_end - _rom_libgcc_rodata_end; 2391bd4fe43Sopenharmony_ci KEEP(SORT(libsec_base.o)(.rodata*)) 2401bd4fe43Sopenharmony_ci _rom_libsec_rom_rodata_end = .; 2411bd4fe43Sopenharmony_ci _rom_size_rodata_sec = _rom_libsec_rom_rodata_end - _rom_libcrom_rodata_end; 2421bd4fe43Sopenharmony_ci __rom_text_end__ = .; 2431bd4fe43Sopenharmony_ci } > ROM_TEXT 2441bd4fe43Sopenharmony_ci __rom_text_size__ = __rom_text_end__ - __rom_text_begin__; 2451bd4fe43Sopenharmony_ci 2461bd4fe43Sopenharmony_ci .data_rom0 : AT (ROM_DATA0_LMA) 2471bd4fe43Sopenharmony_ci { 2481bd4fe43Sopenharmony_ci . = ALIGN(0x20); 2491bd4fe43Sopenharmony_ci __rom_data0_begin__ = .; 2501bd4fe43Sopenharmony_ci KEEP(SORT(liblitekernel_base.o) (.data.kernel.rom*)) 2511bd4fe43Sopenharmony_ci KEEP(SORT(*)(.bsp.rom.data0)) 2521bd4fe43Sopenharmony_ci . = ALIGN(0x4); 2531bd4fe43Sopenharmony_ci __rom_data0_end__ = .; 2541bd4fe43Sopenharmony_ci } > ROM_DATA0 2551bd4fe43Sopenharmony_ci __rom_data0_size__ = __rom_data0_end__ - __rom_data0_begin__; 2561bd4fe43Sopenharmony_ci _rom_size_total = __rom_data0_size__ + __rom_text_size__; 2571bd4fe43Sopenharmony_ci __rom_data0_load = ROM_TEXT_VMA + ROM_TEXT_LEN; 2581bd4fe43Sopenharmony_ci 2591bd4fe43Sopenharmony_ci#if defined(CONFIG_FLASH_ENCRYPT_SUPPORT) 2601bd4fe43Sopenharmony_ci .crypto_ram_text : AT (RAM_CRYPTO_TEXT_LMA) 2611bd4fe43Sopenharmony_ci { 2621bd4fe43Sopenharmony_ci __crypto_ram_text_load = LOADADDR(.crypto_ram_text); 2631bd4fe43Sopenharmony_ci __crypto_ram_text_start = .; 2641bd4fe43Sopenharmony_ci . = ALIGN(0x20); 2651bd4fe43Sopenharmony_ci KEEP(*(.crypto.ram.text)) 2661bd4fe43Sopenharmony_ci . = ALIGN(0x20); 2671bd4fe43Sopenharmony_ci __crypto_ram_text_end = .; 2681bd4fe43Sopenharmony_ci } > CRYPTO_RAM 2691bd4fe43Sopenharmony_ci __crypto_ram_text_size = __crypto_ram_text_end - __crypto_ram_text_start; 2701bd4fe43Sopenharmony_ci#endif 2711bd4fe43Sopenharmony_ci 2721bd4fe43Sopenharmony_ci .text_non_rom : AT (NON_ROM_TEXT_LMA) 2731bd4fe43Sopenharmony_ci { 2741bd4fe43Sopenharmony_ci . = ALIGN(0x20); 2751bd4fe43Sopenharmony_ci __text_cache_start2_ = .; 2761bd4fe43Sopenharmony_ci KEEP(*(.entry.text)) 2771bd4fe43Sopenharmony_ci . = ALIGN(0x20); 2781bd4fe43Sopenharmony_ci #if defined(ROM_BIN_TEST) 2791bd4fe43Sopenharmony_ci . += TEST_OFFSET; 2801bd4fe43Sopenharmony_ci #endif 2811bd4fe43Sopenharmony_ci SORT(*)(.init*) 2821bd4fe43Sopenharmony_ci SORT(*)(.rom.text.patch) 2831bd4fe43Sopenharmony_ci SORT(*)(EXCLUDE_FILE(*libasm_flash.o) .text*) 2841bd4fe43Sopenharmony_ci /* temply add the following for hks. */ 2851bd4fe43Sopenharmony_ci SORT(*)(EXCLUDE_FILE(*libasm_flash.o) .got*) 2861bd4fe43Sopenharmony_ci . = ALIGN(0x20); 2871bd4fe43Sopenharmony_ci __text_cache_end2_ = .; 2881bd4fe43Sopenharmony_ci SORT(*)(.rodata*) 2891bd4fe43Sopenharmony_ci . = ALIGN(0x20); 2901bd4fe43Sopenharmony_ci __text_rodata_end_ = .; 2911bd4fe43Sopenharmony_ci . = ALIGN(0x20); 2921bd4fe43Sopenharmony_ci } > NON_ROM_TEXT_REGION 2931bd4fe43Sopenharmony_ci 2941bd4fe43Sopenharmony_ci /* zInit code and data - will be freed after init */ 2951bd4fe43Sopenharmony_ci .zInit : AT (ADDR(.text_non_rom) + SIZEOF(.text_non_rom)) 2961bd4fe43Sopenharmony_ci { 2971bd4fe43Sopenharmony_ci __zinitcall_bsp_start = .; 2981bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.bsp0.init)) 2991bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.bsp1.init)) 3001bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.bsp2.init)) 3011bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.bsp3.init)) 3021bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.bsp4.init)) 3031bd4fe43Sopenharmony_ci __zinitcall_bsp_end = .; 3041bd4fe43Sopenharmony_ci __zinitcall_device_start = .; 3051bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.device0.init)) 3061bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.device1.init)) 3071bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.device2.init)) 3081bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.device3.init)) 3091bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.device4.init)) 3101bd4fe43Sopenharmony_ci __zinitcall_device_end = .; 3111bd4fe43Sopenharmony_ci __zinitcall_core_start = .; 3121bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.core0.init)) 3131bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.core1.init)) 3141bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.core2.init)) 3151bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.core3.init)) 3161bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.core4.init)) 3171bd4fe43Sopenharmony_ci __zinitcall_core_end = .; 3181bd4fe43Sopenharmony_ci __zinitcall_sys_service_start = .; 3191bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.sys.service0.init)) 3201bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.sys.service1.init)) 3211bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.sys.service2.init)) 3221bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.sys.service3.init)) 3231bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.sys.service4.init)) 3241bd4fe43Sopenharmony_ci __zinitcall_sys_service_end = .; 3251bd4fe43Sopenharmony_ci __zinitcall_sys_feature_start = .; 3261bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.sys.feature0.init)) 3271bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.sys.feature1.init)) 3281bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.sys.feature2.init)) 3291bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.sys.feature3.init)) 3301bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.sys.feature4.init)) 3311bd4fe43Sopenharmony_ci __zinitcall_sys_feature_end = .; 3321bd4fe43Sopenharmony_ci __zinitcall_run_start = .; 3331bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.run0.init)) 3341bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.run1.init)) 3351bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.run2.init)) 3361bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.run3.init)) 3371bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.run4.init)) 3381bd4fe43Sopenharmony_ci __zinitcall_run_end = .; 3391bd4fe43Sopenharmony_ci __zinitcall_app_service_start = .; 3401bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.app.service0.init)) 3411bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.app.service1.init)) 3421bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.app.service2.init)) 3431bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.app.service3.init)) 3441bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.app.service4.init)) 3451bd4fe43Sopenharmony_ci __zinitcall_app_service_end = .; 3461bd4fe43Sopenharmony_ci __zinitcall_app_feature_start = .; 3471bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.app.feature0.init)) 3481bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.app.feature1.init)) 3491bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.app.feature2.init)) 3501bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.app.feature3.init)) 3511bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.app.feature4.init)) 3521bd4fe43Sopenharmony_ci __zinitcall_app_feature_end = .; 3531bd4fe43Sopenharmony_ci __zinitcall_test_start = .; 3541bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.test0.init)) 3551bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.test1.init)) 3561bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.test2.init)) 3571bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.test3.init)) 3581bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.test4.init)) 3591bd4fe43Sopenharmony_ci __zinitcall_test_end = .; 3601bd4fe43Sopenharmony_ci __zinitcall_exit_start = .; 3611bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.exit0.init)) 3621bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.exit1.init)) 3631bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.exit2.init)) 3641bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.exit3.init)) 3651bd4fe43Sopenharmony_ci KEEP (*(.zinitcall.exit4.init)) 3661bd4fe43Sopenharmony_ci __zinitcall_exit_end = .; 3671bd4fe43Sopenharmony_ci } > NON_ROM_TEXT_REGION 3681bd4fe43Sopenharmony_ci 3691bd4fe43Sopenharmony_ci .ram_text : AT (RAM_TEXT_LMA) 3701bd4fe43Sopenharmony_ci { 3711bd4fe43Sopenharmony_ci __ram_text_load = LOADADDR(.ram_text); 3721bd4fe43Sopenharmony_ci __ram_text_start = .; 3731bd4fe43Sopenharmony_ci . = ALIGN(0x20); 3741bd4fe43Sopenharmony_ci #if defined(ROM_BIN_TEST) 3751bd4fe43Sopenharmony_ci . += TEST_OFFSET; 3761bd4fe43Sopenharmony_ci #endif 3771bd4fe43Sopenharmony_ci #if defined(HI1131TEST) 3781bd4fe43Sopenharmony_ci KEEP(*(.trap_vector.text)) 3791bd4fe43Sopenharmony_ci KEEP(*(.kernel.ram.text)) 3801bd4fe43Sopenharmony_ci KEEP(*(.ram.kernel)) 3811bd4fe43Sopenharmony_ci KEEP(*(.bsp.ram.text)) 3821bd4fe43Sopenharmony_ci KEEP(SORT(libasm_flash.o)(.text*)) 3831bd4fe43Sopenharmony_ci #else 3841bd4fe43Sopenharmony_ci SORT(*)(.trap_vector.text) 3851bd4fe43Sopenharmony_ci SORT(*)(.kernel.ram.text) 3861bd4fe43Sopenharmony_ci SORT(*)(.ram.kernel) 3871bd4fe43Sopenharmony_ci SORT(*)(.bsp.ram.text) 3881bd4fe43Sopenharmony_ci SORT(libasm_flash.o)(.text*) 3891bd4fe43Sopenharmony_ci #endif 3901bd4fe43Sopenharmony_ci . = ALIGN(0x20); 3911bd4fe43Sopenharmony_ci __ram_text_end = .; 3921bd4fe43Sopenharmony_ci } > RAM 3931bd4fe43Sopenharmony_ci __ram_text_size = __ram_text_end - __ram_text_start; 3941bd4fe43Sopenharmony_ci 3951bd4fe43Sopenharmony_ci /* data section */ 3961bd4fe43Sopenharmony_ci .data : AT (NON_ROM_DATA_LMA) 3971bd4fe43Sopenharmony_ci { 3981bd4fe43Sopenharmony_ci#if defined(HI_ON_FLASH) 3991bd4fe43Sopenharmony_ci __data_load = LOADADDR(.data); 4001bd4fe43Sopenharmony_ci#else 4011bd4fe43Sopenharmony_ci __data_load = LOADADDR(.data) - ORIGIN(FLASH) + ORIGIN(RAM); 4021bd4fe43Sopenharmony_ci#endif 4031bd4fe43Sopenharmony_ci . = ALIGN(0x20); 4041bd4fe43Sopenharmony_ci __data_start = .; 4051bd4fe43Sopenharmony_ci #if defined(ROM_BIN_TEST) 4061bd4fe43Sopenharmony_ci . += TEST_OFFSET; 4071bd4fe43Sopenharmony_ci #endif 4081bd4fe43Sopenharmony_ci SORT(*)(EXCLUDE_FILE(*liblitekernel_base.o *libc_base.o *libsec_base.o *libwifi_base.o *libbsp_base.o) .data*) 4091bd4fe43Sopenharmony_ci SORT(*)(EXCLUDE_FILE(*.o) .wifi.rom.data*) 4101bd4fe43Sopenharmony_ci SORT(*)(EXCLUDE_FILE(*.o) .data.system.rom*) 4111bd4fe43Sopenharmony_ci SORT(*)(.rom.data.patch) 4121bd4fe43Sopenharmony_ci SORT(*)(.sdata*) 4131bd4fe43Sopenharmony_ci . = ALIGN(4); 4141bd4fe43Sopenharmony_ci INCLUDE system_config.ld 4151bd4fe43Sopenharmony_ci . = ALIGN(0x20); 4161bd4fe43Sopenharmony_ci __data_end = .; 4171bd4fe43Sopenharmony_ci } > RAM 4181bd4fe43Sopenharmony_ci __data_size = __data_end - __data_start; 4191bd4fe43Sopenharmony_ci 4201bd4fe43Sopenharmony_ci .data_rom1 : AT (ROM_DATA1_LMA) 4211bd4fe43Sopenharmony_ci { 4221bd4fe43Sopenharmony_ci#if defined(HI_ON_FLASH) 4231bd4fe43Sopenharmony_ci __rom_data1_load = LOADADDR(.data_rom1); 4241bd4fe43Sopenharmony_ci#else 4251bd4fe43Sopenharmony_ci __rom_data1_load = LOADADDR(.data_rom1) - ORIGIN(FLASH) + ORIGIN(RAM); 4261bd4fe43Sopenharmony_ci#endif 4271bd4fe43Sopenharmony_ci . = ALIGN(0x20); 4281bd4fe43Sopenharmony_ci __rom_data1_begin__ = .; 4291bd4fe43Sopenharmony_ci LIBGCC_ROM_FUN(KEEP_SORT_GCC_DATA) 4301bd4fe43Sopenharmony_ci KEEP(SORT(liblitekernel_base.o) (.data*)) 4311bd4fe43Sopenharmony_ci KEEP(SORT(libbsp_base.o) (.data*)) 4321bd4fe43Sopenharmony_ci KEEP(SORT(*)(.data.system.rom*)) 4331bd4fe43Sopenharmony_ci KEEP(SORT(libc_base.o) (.data*)) 4341bd4fe43Sopenharmony_ci KEEP(SORT(libsec_base.o) (.data*)) 4351bd4fe43Sopenharmony_ci KEEP(SORT(libwifi_base.o) (.data*)) 4361bd4fe43Sopenharmony_ci KEEP(SORT(*)(.wifi.rom.data*)) 4371bd4fe43Sopenharmony_ci . = ALIGN(4); 4381bd4fe43Sopenharmony_ci __rom_data1_end__ = .; 4391bd4fe43Sopenharmony_ci } > ROM_DATA1 4401bd4fe43Sopenharmony_ci __rom_data1_size__ = __rom_data1_end__ - __rom_data1_begin__; 4411bd4fe43Sopenharmony_ci 4421bd4fe43Sopenharmony_ci /* used for fpb remap table g_fpbRemap declaration in los_fpb.c */ 4431bd4fe43Sopenharmony_ci .patch_bss (NOLOAD) : 4441bd4fe43Sopenharmony_ci { 4451bd4fe43Sopenharmony_ci __patch_bss_start = .; 4461bd4fe43Sopenharmony_ci KEEP(SORT(*)(.fpb.remap)) 4471bd4fe43Sopenharmony_ci . = ALIGN(4); 4481bd4fe43Sopenharmony_ci __patch_bss_end__ = .; 4491bd4fe43Sopenharmony_ci } > PATCH_BSS 4501bd4fe43Sopenharmony_ci 4511bd4fe43Sopenharmony_ci .bss_rom (NOLOAD) : 4521bd4fe43Sopenharmony_ci { 4531bd4fe43Sopenharmony_ci . = ALIGN(0x20); 4541bd4fe43Sopenharmony_ci __rom_bss_begin__ = .; 4551bd4fe43Sopenharmony_ci __global_pointer$ = .; 4561bd4fe43Sopenharmony_ci LIBGCC_ROM_FUN(KEEP_SORT_GCC_BSS) 4571bd4fe43Sopenharmony_ci KEEP(SORT(liblitekernel_base.o )(.bss*)) 4581bd4fe43Sopenharmony_ci KEEP(SORT(libc_base.o)(.bss*)) 4591bd4fe43Sopenharmony_ci KEEP(SORT(libsec_base.o)(.bss*)) 4601bd4fe43Sopenharmony_ci KEEP(SORT(libbsp_base.o)(.bss*)) 4611bd4fe43Sopenharmony_ci KEEP(SORT(libwifi_base.o) (.bss*)) 4621bd4fe43Sopenharmony_ci KEEP(SORT(*)(.wifi.rom.bss*)) 4631bd4fe43Sopenharmony_ci . = ALIGN(4); 4641bd4fe43Sopenharmony_ci __rom_bss_end__ = .; 4651bd4fe43Sopenharmony_ci /* ԭrom_bssδװ����������ӷ�rom bss(1568 byte:1.53K) */ 4661bd4fe43Sopenharmony_ci SORT(*)(.extern.rom.bss*) 4671bd4fe43Sopenharmony_ci . = ALIGN(4); 4681bd4fe43Sopenharmony_ci __extern_rom_bss_end__ = .; 4691bd4fe43Sopenharmony_ci } > ROM_BSS 4701bd4fe43Sopenharmony_ci __rom_bss_size__ = __extern_rom_bss_end__ - __rom_bss_begin__; 4711bd4fe43Sopenharmony_ci 4721bd4fe43Sopenharmony_ci /* rom_data_extern1 section */ 4731bd4fe43Sopenharmony_ci .extern_rom_data1_bss (NOLOAD) : 4741bd4fe43Sopenharmony_ci { 4751bd4fe43Sopenharmony_ci . = ALIGN(0x20); 4761bd4fe43Sopenharmony_ci __extern_rom_data1_bss_begin__ = .; 4771bd4fe43Sopenharmony_ci #if defined(ROM_BIN_TEST) 4781bd4fe43Sopenharmony_ci . += TEST_OFFSET; 4791bd4fe43Sopenharmony_ci #endif 4801bd4fe43Sopenharmony_ci SORT(*)(.extern.rom.data1.bss*) 4811bd4fe43Sopenharmony_ci . = ALIGN(4); 4821bd4fe43Sopenharmony_ci __extern_rom_data1_bss_end__ = .; 4831bd4fe43Sopenharmony_ci } > EXTERN_ROM_DATA1_BSS 4841bd4fe43Sopenharmony_ci __extern_rom_data1_bss_size__ = __extern_rom_data1_bss_end__ - __extern_rom_data1_bss_begin__; 4851bd4fe43Sopenharmony_ci 4861bd4fe43Sopenharmony_ci __RAM_BEGIN__ = ORIGIN(RAM); 4871bd4fe43Sopenharmony_ci __RAM_SIZE__ = LENGTH(RAM); 4881bd4fe43Sopenharmony_ci __DOWNLOAD_IRQ_STACK = ORIGIN(ROM_BSS) - DOWNLOAD_STACK_SIZE; /* overlap with STACK*/ 4891bd4fe43Sopenharmony_ci __DOWNLOAD_STACK_END = ORIGIN(ROM_BSS); /* relate to KERNEL_MALLOC_STAR_ADDR and KERNEL_MALLOC_END_ADDR */ 4901bd4fe43Sopenharmony_ci 4911bd4fe43Sopenharmony_ci /* bss section */ 4921bd4fe43Sopenharmony_ci#ifdef LOSCFG_DEBUG_KASAN 4931bd4fe43Sopenharmony_ci .bss (NOLOAD) : ALIGN(0x20) 4941bd4fe43Sopenharmony_ci { 4951bd4fe43Sopenharmony_ci . = ALIGN(0x20); 4961bd4fe43Sopenharmony_ci __bss_begin = .; 4971bd4fe43Sopenharmony_ci #if defined(ROM_BIN_TEST) 4981bd4fe43Sopenharmony_ci . += TEST_OFFSET; 4991bd4fe43Sopenharmony_ci #endif 5001bd4fe43Sopenharmony_ci SORT(*)(.bss*) 5011bd4fe43Sopenharmony_ci SORT(*)(.rom.bss.patch) 5021bd4fe43Sopenharmony_ci SORT(*)(.sbss*) 5031bd4fe43Sopenharmony_ci . = ALIGN(0x20); 5041bd4fe43Sopenharmony_ci __bss_end = .; 5051bd4fe43Sopenharmony_ci } > RAM_FPGA 5061bd4fe43Sopenharmony_ci#else 5071bd4fe43Sopenharmony_ci .bss (NOLOAD) : ALIGN(0x20) 5081bd4fe43Sopenharmony_ci { 5091bd4fe43Sopenharmony_ci . = ALIGN(0x20); 5101bd4fe43Sopenharmony_ci __bss_begin = .; 5111bd4fe43Sopenharmony_ci #if defined(ROM_BIN_TEST) 5121bd4fe43Sopenharmony_ci . += TEST_OFFSET; 5131bd4fe43Sopenharmony_ci #endif 5141bd4fe43Sopenharmony_ci SORT(*)(.bss*) 5151bd4fe43Sopenharmony_ci SORT(*)(.rom.bss.patch) 5161bd4fe43Sopenharmony_ci SORT(*)(.sbss*) 5171bd4fe43Sopenharmony_ci . = ALIGN(0x20); 5181bd4fe43Sopenharmony_ci __bss_end = .; 5191bd4fe43Sopenharmony_ci } > RAM 5201bd4fe43Sopenharmony_ci#endif 5211bd4fe43Sopenharmony_ci __bss_size__ = __bss_end - __bss_begin; 5221bd4fe43Sopenharmony_ci 5231bd4fe43Sopenharmony_ci /* End of uninitialized data segment */ 5241bd4fe43Sopenharmony_ci _end = .; 5251bd4fe43Sopenharmony_ci#if (defined HI_BOARD_ASIC) || (!defined HI_ON_FLASH) 5261bd4fe43Sopenharmony_ci .heap (NOLOAD) : 5271bd4fe43Sopenharmony_ci { 5281bd4fe43Sopenharmony_ci . = ALIGN(64); 5291bd4fe43Sopenharmony_ci __HEAP_BEGIN__ = ABSOLUTE(.); 5301bd4fe43Sopenharmony_ci } > RAM 5311bd4fe43Sopenharmony_ci __HEAP_SIZE__ = (__RAM_BEGIN__ + __RAM_SIZE__) - __HEAP_BEGIN__; 5321bd4fe43Sopenharmony_ci 5331bd4fe43Sopenharmony_ci .stack (NOLOAD) : ALIGN(0x20) 5341bd4fe43Sopenharmony_ci { 5351bd4fe43Sopenharmony_ci __SYSTEM_STACK_BEGIN__ = .; 5361bd4fe43Sopenharmony_ci . += STACK_SIZE; 5371bd4fe43Sopenharmony_ci __SYSTEM_STACK_END__ = .; 5381bd4fe43Sopenharmony_ci . = ALIGN(0x20); 5391bd4fe43Sopenharmony_ci __irq_stack_bottom = .; 5401bd4fe43Sopenharmony_ci . += IRQ_STACK_SIZE; 5411bd4fe43Sopenharmony_ci __irq_stack_top = .; 5421bd4fe43Sopenharmony_ci . = ALIGN(0x20); 5431bd4fe43Sopenharmony_ci __nmi_stack_bottom = .; 5441bd4fe43Sopenharmony_ci . += NMI_STACK_SIZE; 5451bd4fe43Sopenharmony_ci __nmi_stack_top = .; 5461bd4fe43Sopenharmony_ci . = ALIGN(0x20); 5471bd4fe43Sopenharmony_ci __exc_stack_bottom = .; 5481bd4fe43Sopenharmony_ci . += EXC_STACK_SIZE; 5491bd4fe43Sopenharmony_ci __exc_stack_top = .; 5501bd4fe43Sopenharmony_ci } > STACK 5511bd4fe43Sopenharmony_ci __SYSTEM_STACK_SIZE__ = __SYSTEM_STACK_END__ - __SYSTEM_STACK_BEGIN__; 5521bd4fe43Sopenharmony_ci 5531bd4fe43Sopenharmony_ci .check_info (NOLOAD) : 5541bd4fe43Sopenharmony_ci { 5551bd4fe43Sopenharmony_ci __check_info_addr = .; 5561bd4fe43Sopenharmony_ci KEEP(SORT(*)(.lowpower.ram.bss*)) 5571bd4fe43Sopenharmony_ci } > CHECK_INFO 5581bd4fe43Sopenharmony_ci#else 5591bd4fe43Sopenharmony_ci .stack (NOLOAD) : ALIGN(0x20) 5601bd4fe43Sopenharmony_ci { 5611bd4fe43Sopenharmony_ci __SYSTEM_STACK_BEGIN__ = .; 5621bd4fe43Sopenharmony_ci . += STACK_SIZE; 5631bd4fe43Sopenharmony_ci __SYSTEM_STACK_END__ = .; 5641bd4fe43Sopenharmony_ci . = ALIGN(0x20); 5651bd4fe43Sopenharmony_ci __irq_stack_bottom = .; 5661bd4fe43Sopenharmony_ci . += IRQ_STACK_SIZE; 5671bd4fe43Sopenharmony_ci __irq_stack_top = .; 5681bd4fe43Sopenharmony_ci . = ALIGN(0x20); 5691bd4fe43Sopenharmony_ci __nmi_stack_bottom = .; 5701bd4fe43Sopenharmony_ci . += NMI_STACK_SIZE; 5711bd4fe43Sopenharmony_ci __nmi_stack_top = .; 5721bd4fe43Sopenharmony_ci __exc_stack_bottom = .; 5731bd4fe43Sopenharmony_ci . += EXC_STACK_SIZE; 5741bd4fe43Sopenharmony_ci __exc_stack_top = .; 5751bd4fe43Sopenharmony_ci . = ALIGN(0x20); 5761bd4fe43Sopenharmony_ci } > RAM_FPGA 5771bd4fe43Sopenharmony_ci __SYSTEM_STACK_SIZE__ = __SYSTEM_STACK_END__ - __SYSTEM_STACK_BEGIN__; 5781bd4fe43Sopenharmony_ci 5791bd4fe43Sopenharmony_ci .heap (NOLOAD) : 5801bd4fe43Sopenharmony_ci { 5811bd4fe43Sopenharmony_ci . = ALIGN(64); 5821bd4fe43Sopenharmony_ci __HEAP_BEGIN__ = ABSOLUTE(.); 5831bd4fe43Sopenharmony_ci } > RAM_FPGA 5841bd4fe43Sopenharmony_ci __HEAP_SIZE__ = (RAM_FPGA_START + RAM_FPGA_LEN) - __HEAP_BEGIN__; 5851bd4fe43Sopenharmony_ci 5861bd4fe43Sopenharmony_ci .check_info (NOLOAD) : 5871bd4fe43Sopenharmony_ci { 5881bd4fe43Sopenharmony_ci __check_info_addr = .; 5891bd4fe43Sopenharmony_ci KEEP(SORT(*)(.lowpower.ram.bss*)) 5901bd4fe43Sopenharmony_ci } > CHECK_INFO 5911bd4fe43Sopenharmony_ci#endif 5921bd4fe43Sopenharmony_ci __ram_start = RAM_START; 5931bd4fe43Sopenharmony_ci __ram_end = RAM_START + RAM_SIZE; 5941bd4fe43Sopenharmony_ci . = ALIGN(4); 5951bd4fe43Sopenharmony_ci end = . ; 5961bd4fe43Sopenharmony_ci} 5971bd4fe43Sopenharmony_ci 598