18c2ecf20Sopenharmony_ci/* 28c2ecf20Sopenharmony_ci * arch/xtensa/mm/misc.S 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * Miscellaneous assembly functions. 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public 78c2ecf20Sopenharmony_ci * License. See the file "COPYING" in the main directory of this archive 88c2ecf20Sopenharmony_ci * for more details. 98c2ecf20Sopenharmony_ci * 108c2ecf20Sopenharmony_ci * Copyright (C) 2001 - 2007 Tensilica Inc. 118c2ecf20Sopenharmony_ci * 128c2ecf20Sopenharmony_ci * Chris Zankel <chris@zankel.net> 138c2ecf20Sopenharmony_ci */ 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci#include <linux/linkage.h> 178c2ecf20Sopenharmony_ci#include <linux/pgtable.h> 188c2ecf20Sopenharmony_ci#include <asm/page.h> 198c2ecf20Sopenharmony_ci#include <asm/asmmacro.h> 208c2ecf20Sopenharmony_ci#include <asm/cacheasm.h> 218c2ecf20Sopenharmony_ci#include <asm/tlbflush.h> 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci/* 258c2ecf20Sopenharmony_ci * clear_page and clear_user_page are the same for non-cache-aliased configs. 268c2ecf20Sopenharmony_ci * 278c2ecf20Sopenharmony_ci * clear_page (unsigned long page) 288c2ecf20Sopenharmony_ci * a2 298c2ecf20Sopenharmony_ci */ 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ciENTRY(clear_page) 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci abi_entry_default 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci movi a3, 0 368c2ecf20Sopenharmony_ci __loopi a2, a7, PAGE_SIZE, 32 378c2ecf20Sopenharmony_ci s32i a3, a2, 0 388c2ecf20Sopenharmony_ci s32i a3, a2, 4 398c2ecf20Sopenharmony_ci s32i a3, a2, 8 408c2ecf20Sopenharmony_ci s32i a3, a2, 12 418c2ecf20Sopenharmony_ci s32i a3, a2, 16 428c2ecf20Sopenharmony_ci s32i a3, a2, 20 438c2ecf20Sopenharmony_ci s32i a3, a2, 24 448c2ecf20Sopenharmony_ci s32i a3, a2, 28 458c2ecf20Sopenharmony_ci __endla a2, a7, 32 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci abi_ret_default 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ciENDPROC(clear_page) 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci/* 528c2ecf20Sopenharmony_ci * copy_page and copy_user_page are the same for non-cache-aliased configs. 538c2ecf20Sopenharmony_ci * 548c2ecf20Sopenharmony_ci * copy_page (void *to, void *from) 558c2ecf20Sopenharmony_ci * a2 a3 568c2ecf20Sopenharmony_ci */ 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ciENTRY(copy_page) 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci abi_entry_default 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ci __loopi a2, a4, PAGE_SIZE, 32 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_ci l32i a8, a3, 0 658c2ecf20Sopenharmony_ci l32i a9, a3, 4 668c2ecf20Sopenharmony_ci s32i a8, a2, 0 678c2ecf20Sopenharmony_ci s32i a9, a2, 4 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci l32i a8, a3, 8 708c2ecf20Sopenharmony_ci l32i a9, a3, 12 718c2ecf20Sopenharmony_ci s32i a8, a2, 8 728c2ecf20Sopenharmony_ci s32i a9, a2, 12 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci l32i a8, a3, 16 758c2ecf20Sopenharmony_ci l32i a9, a3, 20 768c2ecf20Sopenharmony_ci s32i a8, a2, 16 778c2ecf20Sopenharmony_ci s32i a9, a2, 20 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci l32i a8, a3, 24 808c2ecf20Sopenharmony_ci l32i a9, a3, 28 818c2ecf20Sopenharmony_ci s32i a8, a2, 24 828c2ecf20Sopenharmony_ci s32i a9, a2, 28 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_ci addi a2, a2, 32 858c2ecf20Sopenharmony_ci addi a3, a3, 32 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ci __endl a2, a4 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ci abi_ret_default 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ciENDPROC(copy_page) 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci#ifdef CONFIG_MMU 948c2ecf20Sopenharmony_ci/* 958c2ecf20Sopenharmony_ci * If we have to deal with cache aliasing, we use temporary memory mappings 968c2ecf20Sopenharmony_ci * to ensure that the source and destination pages have the same color as 978c2ecf20Sopenharmony_ci * the virtual address. We use way 0 and 1 for temporary mappings in such cases. 988c2ecf20Sopenharmony_ci * 998c2ecf20Sopenharmony_ci * The temporary DTLB entries shouldn't be flushed by interrupts, but are 1008c2ecf20Sopenharmony_ci * flushed by preemptive task switches. Special code in the 1018c2ecf20Sopenharmony_ci * fast_second_level_miss handler re-established the temporary mapping. 1028c2ecf20Sopenharmony_ci * It requires that the PPNs for the destination and source addresses are 1038c2ecf20Sopenharmony_ci * in a6, and a7, respectively. 1048c2ecf20Sopenharmony_ci */ 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ci/* TLB miss exceptions are treated special in the following region */ 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ciENTRY(__tlbtemp_mapping_start) 1098c2ecf20Sopenharmony_ci 1108c2ecf20Sopenharmony_ci#if (DCACHE_WAY_SIZE > PAGE_SIZE) 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ci/* 1138c2ecf20Sopenharmony_ci * clear_page_alias(void *addr, unsigned long paddr) 1148c2ecf20Sopenharmony_ci * a2 a3 1158c2ecf20Sopenharmony_ci */ 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ciENTRY(clear_page_alias) 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ci abi_entry_default 1208c2ecf20Sopenharmony_ci 1218c2ecf20Sopenharmony_ci /* Skip setting up a temporary DTLB if not aliased low page. */ 1228c2ecf20Sopenharmony_ci 1238c2ecf20Sopenharmony_ci movi a5, PAGE_OFFSET 1248c2ecf20Sopenharmony_ci movi a6, 0 1258c2ecf20Sopenharmony_ci beqz a3, 1f 1268c2ecf20Sopenharmony_ci 1278c2ecf20Sopenharmony_ci /* Setup a temporary DTLB for the addr. */ 1288c2ecf20Sopenharmony_ci 1298c2ecf20Sopenharmony_ci addi a6, a3, (PAGE_KERNEL | _PAGE_HW_WRITE) 1308c2ecf20Sopenharmony_ci mov a4, a2 1318c2ecf20Sopenharmony_ci wdtlb a6, a2 1328c2ecf20Sopenharmony_ci dsync 1338c2ecf20Sopenharmony_ci 1348c2ecf20Sopenharmony_ci1: movi a3, 0 1358c2ecf20Sopenharmony_ci __loopi a2, a7, PAGE_SIZE, 32 1368c2ecf20Sopenharmony_ci s32i a3, a2, 0 1378c2ecf20Sopenharmony_ci s32i a3, a2, 4 1388c2ecf20Sopenharmony_ci s32i a3, a2, 8 1398c2ecf20Sopenharmony_ci s32i a3, a2, 12 1408c2ecf20Sopenharmony_ci s32i a3, a2, 16 1418c2ecf20Sopenharmony_ci s32i a3, a2, 20 1428c2ecf20Sopenharmony_ci s32i a3, a2, 24 1438c2ecf20Sopenharmony_ci s32i a3, a2, 28 1448c2ecf20Sopenharmony_ci __endla a2, a7, 32 1458c2ecf20Sopenharmony_ci 1468c2ecf20Sopenharmony_ci bnez a6, 1f 1478c2ecf20Sopenharmony_ci abi_ret_default 1488c2ecf20Sopenharmony_ci 1498c2ecf20Sopenharmony_ci /* We need to invalidate the temporary idtlb entry, if any. */ 1508c2ecf20Sopenharmony_ci 1518c2ecf20Sopenharmony_ci1: idtlb a4 1528c2ecf20Sopenharmony_ci dsync 1538c2ecf20Sopenharmony_ci 1548c2ecf20Sopenharmony_ci abi_ret_default 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ciENDPROC(clear_page_alias) 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ci/* 1598c2ecf20Sopenharmony_ci * copy_page_alias(void *to, void *from, 1608c2ecf20Sopenharmony_ci * a2 a3 1618c2ecf20Sopenharmony_ci * unsigned long to_paddr, unsigned long from_paddr) 1628c2ecf20Sopenharmony_ci * a4 a5 1638c2ecf20Sopenharmony_ci */ 1648c2ecf20Sopenharmony_ci 1658c2ecf20Sopenharmony_ciENTRY(copy_page_alias) 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_ci abi_entry_default 1688c2ecf20Sopenharmony_ci 1698c2ecf20Sopenharmony_ci /* Skip setting up a temporary DTLB for destination if not aliased. */ 1708c2ecf20Sopenharmony_ci 1718c2ecf20Sopenharmony_ci movi a6, 0 1728c2ecf20Sopenharmony_ci movi a7, 0 1738c2ecf20Sopenharmony_ci beqz a4, 1f 1748c2ecf20Sopenharmony_ci 1758c2ecf20Sopenharmony_ci /* Setup a temporary DTLB for destination. */ 1768c2ecf20Sopenharmony_ci 1778c2ecf20Sopenharmony_ci addi a6, a4, (PAGE_KERNEL | _PAGE_HW_WRITE) 1788c2ecf20Sopenharmony_ci wdtlb a6, a2 1798c2ecf20Sopenharmony_ci dsync 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_ci /* Skip setting up a temporary DTLB for source if not aliased. */ 1828c2ecf20Sopenharmony_ci 1838c2ecf20Sopenharmony_ci1: beqz a5, 1f 1848c2ecf20Sopenharmony_ci 1858c2ecf20Sopenharmony_ci /* Setup a temporary DTLB for source. */ 1868c2ecf20Sopenharmony_ci 1878c2ecf20Sopenharmony_ci addi a7, a5, PAGE_KERNEL 1888c2ecf20Sopenharmony_ci addi a8, a3, 1 # way1 1898c2ecf20Sopenharmony_ci 1908c2ecf20Sopenharmony_ci wdtlb a7, a8 1918c2ecf20Sopenharmony_ci dsync 1928c2ecf20Sopenharmony_ci 1938c2ecf20Sopenharmony_ci1: __loopi a2, a4, PAGE_SIZE, 32 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ci l32i a8, a3, 0 1968c2ecf20Sopenharmony_ci l32i a9, a3, 4 1978c2ecf20Sopenharmony_ci s32i a8, a2, 0 1988c2ecf20Sopenharmony_ci s32i a9, a2, 4 1998c2ecf20Sopenharmony_ci 2008c2ecf20Sopenharmony_ci l32i a8, a3, 8 2018c2ecf20Sopenharmony_ci l32i a9, a3, 12 2028c2ecf20Sopenharmony_ci s32i a8, a2, 8 2038c2ecf20Sopenharmony_ci s32i a9, a2, 12 2048c2ecf20Sopenharmony_ci 2058c2ecf20Sopenharmony_ci l32i a8, a3, 16 2068c2ecf20Sopenharmony_ci l32i a9, a3, 20 2078c2ecf20Sopenharmony_ci s32i a8, a2, 16 2088c2ecf20Sopenharmony_ci s32i a9, a2, 20 2098c2ecf20Sopenharmony_ci 2108c2ecf20Sopenharmony_ci l32i a8, a3, 24 2118c2ecf20Sopenharmony_ci l32i a9, a3, 28 2128c2ecf20Sopenharmony_ci s32i a8, a2, 24 2138c2ecf20Sopenharmony_ci s32i a9, a2, 28 2148c2ecf20Sopenharmony_ci 2158c2ecf20Sopenharmony_ci addi a2, a2, 32 2168c2ecf20Sopenharmony_ci addi a3, a3, 32 2178c2ecf20Sopenharmony_ci 2188c2ecf20Sopenharmony_ci __endl a2, a4 2198c2ecf20Sopenharmony_ci 2208c2ecf20Sopenharmony_ci /* We need to invalidate any temporary mapping! */ 2218c2ecf20Sopenharmony_ci 2228c2ecf20Sopenharmony_ci bnez a6, 1f 2238c2ecf20Sopenharmony_ci bnez a7, 2f 2248c2ecf20Sopenharmony_ci abi_ret_default 2258c2ecf20Sopenharmony_ci 2268c2ecf20Sopenharmony_ci1: addi a2, a2, -PAGE_SIZE 2278c2ecf20Sopenharmony_ci idtlb a2 2288c2ecf20Sopenharmony_ci dsync 2298c2ecf20Sopenharmony_ci bnez a7, 2f 2308c2ecf20Sopenharmony_ci abi_ret_default 2318c2ecf20Sopenharmony_ci 2328c2ecf20Sopenharmony_ci2: addi a3, a3, -PAGE_SIZE+1 2338c2ecf20Sopenharmony_ci idtlb a3 2348c2ecf20Sopenharmony_ci dsync 2358c2ecf20Sopenharmony_ci 2368c2ecf20Sopenharmony_ci abi_ret_default 2378c2ecf20Sopenharmony_ci 2388c2ecf20Sopenharmony_ciENDPROC(copy_page_alias) 2398c2ecf20Sopenharmony_ci 2408c2ecf20Sopenharmony_ci#endif 2418c2ecf20Sopenharmony_ci 2428c2ecf20Sopenharmony_ci#if (DCACHE_WAY_SIZE > PAGE_SIZE) 2438c2ecf20Sopenharmony_ci 2448c2ecf20Sopenharmony_ci/* 2458c2ecf20Sopenharmony_ci * void __flush_invalidate_dcache_page_alias (addr, phys) 2468c2ecf20Sopenharmony_ci * a2 a3 2478c2ecf20Sopenharmony_ci */ 2488c2ecf20Sopenharmony_ci 2498c2ecf20Sopenharmony_ciENTRY(__flush_invalidate_dcache_page_alias) 2508c2ecf20Sopenharmony_ci 2518c2ecf20Sopenharmony_ci abi_entry_default 2528c2ecf20Sopenharmony_ci 2538c2ecf20Sopenharmony_ci movi a7, 0 # required for exception handler 2548c2ecf20Sopenharmony_ci addi a6, a3, (PAGE_KERNEL | _PAGE_HW_WRITE) 2558c2ecf20Sopenharmony_ci mov a4, a2 2568c2ecf20Sopenharmony_ci wdtlb a6, a2 2578c2ecf20Sopenharmony_ci dsync 2588c2ecf20Sopenharmony_ci 2598c2ecf20Sopenharmony_ci ___flush_invalidate_dcache_page a2 a3 2608c2ecf20Sopenharmony_ci 2618c2ecf20Sopenharmony_ci idtlb a4 2628c2ecf20Sopenharmony_ci dsync 2638c2ecf20Sopenharmony_ci 2648c2ecf20Sopenharmony_ci abi_ret_default 2658c2ecf20Sopenharmony_ci 2668c2ecf20Sopenharmony_ciENDPROC(__flush_invalidate_dcache_page_alias) 2678c2ecf20Sopenharmony_ci 2688c2ecf20Sopenharmony_ci/* 2698c2ecf20Sopenharmony_ci * void __invalidate_dcache_page_alias (addr, phys) 2708c2ecf20Sopenharmony_ci * a2 a3 2718c2ecf20Sopenharmony_ci */ 2728c2ecf20Sopenharmony_ci 2738c2ecf20Sopenharmony_ciENTRY(__invalidate_dcache_page_alias) 2748c2ecf20Sopenharmony_ci 2758c2ecf20Sopenharmony_ci abi_entry_default 2768c2ecf20Sopenharmony_ci 2778c2ecf20Sopenharmony_ci movi a7, 0 # required for exception handler 2788c2ecf20Sopenharmony_ci addi a6, a3, (PAGE_KERNEL | _PAGE_HW_WRITE) 2798c2ecf20Sopenharmony_ci mov a4, a2 2808c2ecf20Sopenharmony_ci wdtlb a6, a2 2818c2ecf20Sopenharmony_ci dsync 2828c2ecf20Sopenharmony_ci 2838c2ecf20Sopenharmony_ci ___invalidate_dcache_page a2 a3 2848c2ecf20Sopenharmony_ci 2858c2ecf20Sopenharmony_ci idtlb a4 2868c2ecf20Sopenharmony_ci dsync 2878c2ecf20Sopenharmony_ci 2888c2ecf20Sopenharmony_ci abi_ret_default 2898c2ecf20Sopenharmony_ci 2908c2ecf20Sopenharmony_ciENDPROC(__invalidate_dcache_page_alias) 2918c2ecf20Sopenharmony_ci#endif 2928c2ecf20Sopenharmony_ci 2938c2ecf20Sopenharmony_ciENTRY(__tlbtemp_mapping_itlb) 2948c2ecf20Sopenharmony_ci 2958c2ecf20Sopenharmony_ci#if (ICACHE_WAY_SIZE > PAGE_SIZE) 2968c2ecf20Sopenharmony_ci 2978c2ecf20Sopenharmony_ciENTRY(__invalidate_icache_page_alias) 2988c2ecf20Sopenharmony_ci 2998c2ecf20Sopenharmony_ci abi_entry_default 3008c2ecf20Sopenharmony_ci 3018c2ecf20Sopenharmony_ci addi a6, a3, (PAGE_KERNEL_EXEC | _PAGE_HW_WRITE) 3028c2ecf20Sopenharmony_ci mov a4, a2 3038c2ecf20Sopenharmony_ci witlb a6, a2 3048c2ecf20Sopenharmony_ci isync 3058c2ecf20Sopenharmony_ci 3068c2ecf20Sopenharmony_ci ___invalidate_icache_page a2 a3 3078c2ecf20Sopenharmony_ci 3088c2ecf20Sopenharmony_ci iitlb a4 3098c2ecf20Sopenharmony_ci isync 3108c2ecf20Sopenharmony_ci abi_ret_default 3118c2ecf20Sopenharmony_ci 3128c2ecf20Sopenharmony_ciENDPROC(__invalidate_icache_page_alias) 3138c2ecf20Sopenharmony_ci 3148c2ecf20Sopenharmony_ci#endif 3158c2ecf20Sopenharmony_ci 3168c2ecf20Sopenharmony_ci/* End of special treatment in tlb miss exception */ 3178c2ecf20Sopenharmony_ci 3188c2ecf20Sopenharmony_ciENTRY(__tlbtemp_mapping_end) 3198c2ecf20Sopenharmony_ci 3208c2ecf20Sopenharmony_ci#endif /* CONFIG_MMU 3218c2ecf20Sopenharmony_ci 3228c2ecf20Sopenharmony_ci/* 3238c2ecf20Sopenharmony_ci * void __invalidate_icache_page(ulong start) 3248c2ecf20Sopenharmony_ci */ 3258c2ecf20Sopenharmony_ci 3268c2ecf20Sopenharmony_ciENTRY(__invalidate_icache_page) 3278c2ecf20Sopenharmony_ci 3288c2ecf20Sopenharmony_ci abi_entry_default 3298c2ecf20Sopenharmony_ci 3308c2ecf20Sopenharmony_ci ___invalidate_icache_page a2 a3 3318c2ecf20Sopenharmony_ci isync 3328c2ecf20Sopenharmony_ci 3338c2ecf20Sopenharmony_ci abi_ret_default 3348c2ecf20Sopenharmony_ci 3358c2ecf20Sopenharmony_ciENDPROC(__invalidate_icache_page) 3368c2ecf20Sopenharmony_ci 3378c2ecf20Sopenharmony_ci/* 3388c2ecf20Sopenharmony_ci * void __invalidate_dcache_page(ulong start) 3398c2ecf20Sopenharmony_ci */ 3408c2ecf20Sopenharmony_ci 3418c2ecf20Sopenharmony_ciENTRY(__invalidate_dcache_page) 3428c2ecf20Sopenharmony_ci 3438c2ecf20Sopenharmony_ci abi_entry_default 3448c2ecf20Sopenharmony_ci 3458c2ecf20Sopenharmony_ci ___invalidate_dcache_page a2 a3 3468c2ecf20Sopenharmony_ci dsync 3478c2ecf20Sopenharmony_ci 3488c2ecf20Sopenharmony_ci abi_ret_default 3498c2ecf20Sopenharmony_ci 3508c2ecf20Sopenharmony_ciENDPROC(__invalidate_dcache_page) 3518c2ecf20Sopenharmony_ci 3528c2ecf20Sopenharmony_ci/* 3538c2ecf20Sopenharmony_ci * void __flush_invalidate_dcache_page(ulong start) 3548c2ecf20Sopenharmony_ci */ 3558c2ecf20Sopenharmony_ci 3568c2ecf20Sopenharmony_ciENTRY(__flush_invalidate_dcache_page) 3578c2ecf20Sopenharmony_ci 3588c2ecf20Sopenharmony_ci abi_entry_default 3598c2ecf20Sopenharmony_ci 3608c2ecf20Sopenharmony_ci ___flush_invalidate_dcache_page a2 a3 3618c2ecf20Sopenharmony_ci 3628c2ecf20Sopenharmony_ci dsync 3638c2ecf20Sopenharmony_ci abi_ret_default 3648c2ecf20Sopenharmony_ci 3658c2ecf20Sopenharmony_ciENDPROC(__flush_invalidate_dcache_page) 3668c2ecf20Sopenharmony_ci 3678c2ecf20Sopenharmony_ci/* 3688c2ecf20Sopenharmony_ci * void __flush_dcache_page(ulong start) 3698c2ecf20Sopenharmony_ci */ 3708c2ecf20Sopenharmony_ci 3718c2ecf20Sopenharmony_ciENTRY(__flush_dcache_page) 3728c2ecf20Sopenharmony_ci 3738c2ecf20Sopenharmony_ci abi_entry_default 3748c2ecf20Sopenharmony_ci 3758c2ecf20Sopenharmony_ci ___flush_dcache_page a2 a3 3768c2ecf20Sopenharmony_ci 3778c2ecf20Sopenharmony_ci dsync 3788c2ecf20Sopenharmony_ci abi_ret_default 3798c2ecf20Sopenharmony_ci 3808c2ecf20Sopenharmony_ciENDPROC(__flush_dcache_page) 3818c2ecf20Sopenharmony_ci 3828c2ecf20Sopenharmony_ci/* 3838c2ecf20Sopenharmony_ci * void __invalidate_icache_range(ulong start, ulong size) 3848c2ecf20Sopenharmony_ci */ 3858c2ecf20Sopenharmony_ci 3868c2ecf20Sopenharmony_ciENTRY(__invalidate_icache_range) 3878c2ecf20Sopenharmony_ci 3888c2ecf20Sopenharmony_ci abi_entry_default 3898c2ecf20Sopenharmony_ci 3908c2ecf20Sopenharmony_ci ___invalidate_icache_range a2 a3 a4 3918c2ecf20Sopenharmony_ci isync 3928c2ecf20Sopenharmony_ci 3938c2ecf20Sopenharmony_ci abi_ret_default 3948c2ecf20Sopenharmony_ci 3958c2ecf20Sopenharmony_ciENDPROC(__invalidate_icache_range) 3968c2ecf20Sopenharmony_ci 3978c2ecf20Sopenharmony_ci/* 3988c2ecf20Sopenharmony_ci * void __flush_invalidate_dcache_range(ulong start, ulong size) 3998c2ecf20Sopenharmony_ci */ 4008c2ecf20Sopenharmony_ci 4018c2ecf20Sopenharmony_ciENTRY(__flush_invalidate_dcache_range) 4028c2ecf20Sopenharmony_ci 4038c2ecf20Sopenharmony_ci abi_entry_default 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_ci ___flush_invalidate_dcache_range a2 a3 a4 4068c2ecf20Sopenharmony_ci dsync 4078c2ecf20Sopenharmony_ci 4088c2ecf20Sopenharmony_ci abi_ret_default 4098c2ecf20Sopenharmony_ci 4108c2ecf20Sopenharmony_ciENDPROC(__flush_invalidate_dcache_range) 4118c2ecf20Sopenharmony_ci 4128c2ecf20Sopenharmony_ci/* 4138c2ecf20Sopenharmony_ci * void _flush_dcache_range(ulong start, ulong size) 4148c2ecf20Sopenharmony_ci */ 4158c2ecf20Sopenharmony_ci 4168c2ecf20Sopenharmony_ciENTRY(__flush_dcache_range) 4178c2ecf20Sopenharmony_ci 4188c2ecf20Sopenharmony_ci abi_entry_default 4198c2ecf20Sopenharmony_ci 4208c2ecf20Sopenharmony_ci ___flush_dcache_range a2 a3 a4 4218c2ecf20Sopenharmony_ci dsync 4228c2ecf20Sopenharmony_ci 4238c2ecf20Sopenharmony_ci abi_ret_default 4248c2ecf20Sopenharmony_ci 4258c2ecf20Sopenharmony_ciENDPROC(__flush_dcache_range) 4268c2ecf20Sopenharmony_ci 4278c2ecf20Sopenharmony_ci/* 4288c2ecf20Sopenharmony_ci * void _invalidate_dcache_range(ulong start, ulong size) 4298c2ecf20Sopenharmony_ci */ 4308c2ecf20Sopenharmony_ci 4318c2ecf20Sopenharmony_ciENTRY(__invalidate_dcache_range) 4328c2ecf20Sopenharmony_ci 4338c2ecf20Sopenharmony_ci abi_entry_default 4348c2ecf20Sopenharmony_ci 4358c2ecf20Sopenharmony_ci ___invalidate_dcache_range a2 a3 a4 4368c2ecf20Sopenharmony_ci 4378c2ecf20Sopenharmony_ci abi_ret_default 4388c2ecf20Sopenharmony_ci 4398c2ecf20Sopenharmony_ciENDPROC(__invalidate_dcache_range) 4408c2ecf20Sopenharmony_ci 4418c2ecf20Sopenharmony_ci/* 4428c2ecf20Sopenharmony_ci * void _invalidate_icache_all(void) 4438c2ecf20Sopenharmony_ci */ 4448c2ecf20Sopenharmony_ci 4458c2ecf20Sopenharmony_ciENTRY(__invalidate_icache_all) 4468c2ecf20Sopenharmony_ci 4478c2ecf20Sopenharmony_ci abi_entry_default 4488c2ecf20Sopenharmony_ci 4498c2ecf20Sopenharmony_ci ___invalidate_icache_all a2 a3 4508c2ecf20Sopenharmony_ci isync 4518c2ecf20Sopenharmony_ci 4528c2ecf20Sopenharmony_ci abi_ret_default 4538c2ecf20Sopenharmony_ci 4548c2ecf20Sopenharmony_ciENDPROC(__invalidate_icache_all) 4558c2ecf20Sopenharmony_ci 4568c2ecf20Sopenharmony_ci/* 4578c2ecf20Sopenharmony_ci * void _flush_invalidate_dcache_all(void) 4588c2ecf20Sopenharmony_ci */ 4598c2ecf20Sopenharmony_ci 4608c2ecf20Sopenharmony_ciENTRY(__flush_invalidate_dcache_all) 4618c2ecf20Sopenharmony_ci 4628c2ecf20Sopenharmony_ci abi_entry_default 4638c2ecf20Sopenharmony_ci 4648c2ecf20Sopenharmony_ci ___flush_invalidate_dcache_all a2 a3 4658c2ecf20Sopenharmony_ci dsync 4668c2ecf20Sopenharmony_ci 4678c2ecf20Sopenharmony_ci abi_ret_default 4688c2ecf20Sopenharmony_ci 4698c2ecf20Sopenharmony_ciENDPROC(__flush_invalidate_dcache_all) 4708c2ecf20Sopenharmony_ci 4718c2ecf20Sopenharmony_ci/* 4728c2ecf20Sopenharmony_ci * void _invalidate_dcache_all(void) 4738c2ecf20Sopenharmony_ci */ 4748c2ecf20Sopenharmony_ci 4758c2ecf20Sopenharmony_ciENTRY(__invalidate_dcache_all) 4768c2ecf20Sopenharmony_ci 4778c2ecf20Sopenharmony_ci abi_entry_default 4788c2ecf20Sopenharmony_ci 4798c2ecf20Sopenharmony_ci ___invalidate_dcache_all a2 a3 4808c2ecf20Sopenharmony_ci dsync 4818c2ecf20Sopenharmony_ci 4828c2ecf20Sopenharmony_ci abi_ret_default 4838c2ecf20Sopenharmony_ci 4848c2ecf20Sopenharmony_ciENDPROC(__invalidate_dcache_all) 485