162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * arch/xtensa/mm/misc.S 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Miscellaneous assembly functions. 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public 762306a36Sopenharmony_ci * License. See the file "COPYING" in the main directory of this archive 862306a36Sopenharmony_ci * for more details. 962306a36Sopenharmony_ci * 1062306a36Sopenharmony_ci * Copyright (C) 2001 - 2007 Tensilica Inc. 1162306a36Sopenharmony_ci * 1262306a36Sopenharmony_ci * Chris Zankel <chris@zankel.net> 1362306a36Sopenharmony_ci */ 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#include <linux/linkage.h> 1762306a36Sopenharmony_ci#include <linux/pgtable.h> 1862306a36Sopenharmony_ci#include <asm/page.h> 1962306a36Sopenharmony_ci#include <asm/asmmacro.h> 2062306a36Sopenharmony_ci#include <asm/cacheasm.h> 2162306a36Sopenharmony_ci#include <asm/tlbflush.h> 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci/* 2562306a36Sopenharmony_ci * clear_page and clear_user_page are the same for non-cache-aliased configs. 2662306a36Sopenharmony_ci * 2762306a36Sopenharmony_ci * clear_page (unsigned long page) 2862306a36Sopenharmony_ci * a2 2962306a36Sopenharmony_ci */ 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ciENTRY(clear_page) 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci abi_entry_default 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci movi a3, 0 3662306a36Sopenharmony_ci __loopi a2, a7, PAGE_SIZE, 32 3762306a36Sopenharmony_ci s32i a3, a2, 0 3862306a36Sopenharmony_ci s32i a3, a2, 4 3962306a36Sopenharmony_ci s32i a3, a2, 8 4062306a36Sopenharmony_ci s32i a3, a2, 12 4162306a36Sopenharmony_ci s32i a3, a2, 16 4262306a36Sopenharmony_ci s32i a3, a2, 20 4362306a36Sopenharmony_ci s32i a3, a2, 24 4462306a36Sopenharmony_ci s32i a3, a2, 28 4562306a36Sopenharmony_ci __endla a2, a7, 32 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci abi_ret_default 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ciENDPROC(clear_page) 5062306a36Sopenharmony_ciEXPORT_SYMBOL(clear_page) 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci/* 5362306a36Sopenharmony_ci * copy_page and copy_user_page are the same for non-cache-aliased configs. 5462306a36Sopenharmony_ci * 5562306a36Sopenharmony_ci * copy_page (void *to, void *from) 5662306a36Sopenharmony_ci * a2 a3 5762306a36Sopenharmony_ci */ 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ciENTRY(copy_page) 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci abi_entry_default 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci __loopi a2, a4, PAGE_SIZE, 32 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci l32i a8, a3, 0 6662306a36Sopenharmony_ci l32i a9, a3, 4 6762306a36Sopenharmony_ci s32i a8, a2, 0 6862306a36Sopenharmony_ci s32i a9, a2, 4 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci l32i a8, a3, 8 7162306a36Sopenharmony_ci l32i a9, a3, 12 7262306a36Sopenharmony_ci s32i a8, a2, 8 7362306a36Sopenharmony_ci s32i a9, a2, 12 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci l32i a8, a3, 16 7662306a36Sopenharmony_ci l32i a9, a3, 20 7762306a36Sopenharmony_ci s32i a8, a2, 16 7862306a36Sopenharmony_ci s32i a9, a2, 20 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci l32i a8, a3, 24 8162306a36Sopenharmony_ci l32i a9, a3, 28 8262306a36Sopenharmony_ci s32i a8, a2, 24 8362306a36Sopenharmony_ci s32i a9, a2, 28 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci addi a2, a2, 32 8662306a36Sopenharmony_ci addi a3, a3, 32 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci __endl a2, a4 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_ci abi_ret_default 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ciENDPROC(copy_page) 9362306a36Sopenharmony_ciEXPORT_SYMBOL(copy_page) 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci#ifdef CONFIG_MMU 9662306a36Sopenharmony_ci/* 9762306a36Sopenharmony_ci * If we have to deal with cache aliasing, we use temporary memory mappings 9862306a36Sopenharmony_ci * to ensure that the source and destination pages have the same color as 9962306a36Sopenharmony_ci * the virtual address. We use way 0 and 1 for temporary mappings in such cases. 10062306a36Sopenharmony_ci * 10162306a36Sopenharmony_ci * The temporary DTLB entries shouldn't be flushed by interrupts, but are 10262306a36Sopenharmony_ci * flushed by preemptive task switches. Special code in the 10362306a36Sopenharmony_ci * fast_second_level_miss handler re-established the temporary mapping. 10462306a36Sopenharmony_ci * It requires that the PPNs for the destination and source addresses are 10562306a36Sopenharmony_ci * in a6, and a7, respectively. 10662306a36Sopenharmony_ci */ 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci/* TLB miss exceptions are treated special in the following region */ 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ciENTRY(__tlbtemp_mapping_start) 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci#if (DCACHE_WAY_SIZE > PAGE_SIZE) 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci/* 11562306a36Sopenharmony_ci * clear_page_alias(void *addr, unsigned long paddr) 11662306a36Sopenharmony_ci * a2 a3 11762306a36Sopenharmony_ci */ 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ciENTRY(clear_page_alias) 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci abi_entry_default 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci movi a5, PAGE_OFFSET 12462306a36Sopenharmony_ci addi a6, a3, (PAGE_KERNEL | _PAGE_HW_WRITE) 12562306a36Sopenharmony_ci mov a4, a2 12662306a36Sopenharmony_ci wdtlb a6, a2 12762306a36Sopenharmony_ci dsync 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ci movi a3, 0 13062306a36Sopenharmony_ci __loopi a2, a7, PAGE_SIZE, 32 13162306a36Sopenharmony_ci s32i a3, a2, 0 13262306a36Sopenharmony_ci s32i a3, a2, 4 13362306a36Sopenharmony_ci s32i a3, a2, 8 13462306a36Sopenharmony_ci s32i a3, a2, 12 13562306a36Sopenharmony_ci s32i a3, a2, 16 13662306a36Sopenharmony_ci s32i a3, a2, 20 13762306a36Sopenharmony_ci s32i a3, a2, 24 13862306a36Sopenharmony_ci s32i a3, a2, 28 13962306a36Sopenharmony_ci __endla a2, a7, 32 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ci /* We need to invalidate the temporary dtlb entry. */ 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci idtlb a4 14462306a36Sopenharmony_ci dsync 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci abi_ret_default 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ciENDPROC(clear_page_alias) 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci/* 15162306a36Sopenharmony_ci * copy_page_alias(void *to, void *from, 15262306a36Sopenharmony_ci * a2 a3 15362306a36Sopenharmony_ci * unsigned long to_paddr, unsigned long from_paddr) 15462306a36Sopenharmony_ci * a4 a5 15562306a36Sopenharmony_ci */ 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ciENTRY(copy_page_alias) 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ci abi_entry_default 16062306a36Sopenharmony_ci 16162306a36Sopenharmony_ci /* Setup a temporary DTLB for destination. */ 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci addi a6, a4, (PAGE_KERNEL | _PAGE_HW_WRITE) 16462306a36Sopenharmony_ci wdtlb a6, a2 16562306a36Sopenharmony_ci dsync 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci /* Setup a temporary DTLB for source. */ 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci addi a7, a5, PAGE_KERNEL 17062306a36Sopenharmony_ci addi a8, a3, 1 # way1 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci wdtlb a7, a8 17362306a36Sopenharmony_ci dsync 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci1: __loopi a2, a4, PAGE_SIZE, 32 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci l32i a8, a3, 0 17862306a36Sopenharmony_ci l32i a9, a3, 4 17962306a36Sopenharmony_ci s32i a8, a2, 0 18062306a36Sopenharmony_ci s32i a9, a2, 4 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ci l32i a8, a3, 8 18362306a36Sopenharmony_ci l32i a9, a3, 12 18462306a36Sopenharmony_ci s32i a8, a2, 8 18562306a36Sopenharmony_ci s32i a9, a2, 12 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_ci l32i a8, a3, 16 18862306a36Sopenharmony_ci l32i a9, a3, 20 18962306a36Sopenharmony_ci s32i a8, a2, 16 19062306a36Sopenharmony_ci s32i a9, a2, 20 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_ci l32i a8, a3, 24 19362306a36Sopenharmony_ci l32i a9, a3, 28 19462306a36Sopenharmony_ci s32i a8, a2, 24 19562306a36Sopenharmony_ci s32i a9, a2, 28 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci addi a2, a2, 32 19862306a36Sopenharmony_ci addi a3, a3, 32 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci __endl a2, a4 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_ci /* We need to invalidate any temporary mapping! */ 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci addi a2, a2, -PAGE_SIZE 20562306a36Sopenharmony_ci idtlb a2 20662306a36Sopenharmony_ci dsync 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci addi a3, a3, -PAGE_SIZE+1 20962306a36Sopenharmony_ci idtlb a3 21062306a36Sopenharmony_ci dsync 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci abi_ret_default 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_ciENDPROC(copy_page_alias) 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci#endif 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci#if (DCACHE_WAY_SIZE > PAGE_SIZE) 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci/* 22162306a36Sopenharmony_ci * void __flush_invalidate_dcache_page_alias (addr, phys) 22262306a36Sopenharmony_ci * a2 a3 22362306a36Sopenharmony_ci */ 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_ciENTRY(__flush_invalidate_dcache_page_alias) 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ci abi_entry_default 22862306a36Sopenharmony_ci 22962306a36Sopenharmony_ci movi a7, 0 # required for exception handler 23062306a36Sopenharmony_ci addi a6, a3, (PAGE_KERNEL | _PAGE_HW_WRITE) 23162306a36Sopenharmony_ci mov a4, a2 23262306a36Sopenharmony_ci wdtlb a6, a2 23362306a36Sopenharmony_ci dsync 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_ci ___flush_invalidate_dcache_page a2 a3 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ci idtlb a4 23862306a36Sopenharmony_ci dsync 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ci abi_ret_default 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_ciENDPROC(__flush_invalidate_dcache_page_alias) 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_ci/* 24562306a36Sopenharmony_ci * void __invalidate_dcache_page_alias (addr, phys) 24662306a36Sopenharmony_ci * a2 a3 24762306a36Sopenharmony_ci */ 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_ciENTRY(__invalidate_dcache_page_alias) 25062306a36Sopenharmony_ci 25162306a36Sopenharmony_ci abi_entry_default 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_ci movi a7, 0 # required for exception handler 25462306a36Sopenharmony_ci addi a6, a3, (PAGE_KERNEL | _PAGE_HW_WRITE) 25562306a36Sopenharmony_ci mov a4, a2 25662306a36Sopenharmony_ci wdtlb a6, a2 25762306a36Sopenharmony_ci dsync 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_ci ___invalidate_dcache_page a2 a3 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_ci idtlb a4 26262306a36Sopenharmony_ci dsync 26362306a36Sopenharmony_ci 26462306a36Sopenharmony_ci abi_ret_default 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ciENDPROC(__invalidate_dcache_page_alias) 26762306a36Sopenharmony_ci#endif 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ciENTRY(__tlbtemp_mapping_itlb) 27062306a36Sopenharmony_ci 27162306a36Sopenharmony_ci#if (ICACHE_WAY_SIZE > PAGE_SIZE) 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_ciENTRY(__invalidate_icache_page_alias) 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_ci abi_entry_default 27662306a36Sopenharmony_ci 27762306a36Sopenharmony_ci addi a6, a3, (PAGE_KERNEL_EXEC | _PAGE_HW_WRITE) 27862306a36Sopenharmony_ci mov a4, a2 27962306a36Sopenharmony_ci witlb a6, a2 28062306a36Sopenharmony_ci isync 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ci ___invalidate_icache_page a2 a3 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_ci iitlb a4 28562306a36Sopenharmony_ci isync 28662306a36Sopenharmony_ci abi_ret_default 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_ciENDPROC(__invalidate_icache_page_alias) 28962306a36Sopenharmony_ci 29062306a36Sopenharmony_ci#endif 29162306a36Sopenharmony_ci 29262306a36Sopenharmony_ci/* End of special treatment in tlb miss exception */ 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_ciENTRY(__tlbtemp_mapping_end) 29562306a36Sopenharmony_ci 29662306a36Sopenharmony_ci#endif /* CONFIG_MMU 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_ci/* 29962306a36Sopenharmony_ci * void __invalidate_icache_page(ulong start) 30062306a36Sopenharmony_ci */ 30162306a36Sopenharmony_ci 30262306a36Sopenharmony_ciENTRY(__invalidate_icache_page) 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_ci abi_entry_default 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_ci ___invalidate_icache_page a2 a3 30762306a36Sopenharmony_ci isync 30862306a36Sopenharmony_ci 30962306a36Sopenharmony_ci abi_ret_default 31062306a36Sopenharmony_ci 31162306a36Sopenharmony_ciENDPROC(__invalidate_icache_page) 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_ci/* 31462306a36Sopenharmony_ci * void __invalidate_dcache_page(ulong start) 31562306a36Sopenharmony_ci */ 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ciENTRY(__invalidate_dcache_page) 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_ci abi_entry_default 32062306a36Sopenharmony_ci 32162306a36Sopenharmony_ci ___invalidate_dcache_page a2 a3 32262306a36Sopenharmony_ci dsync 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_ci abi_ret_default 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ciENDPROC(__invalidate_dcache_page) 32762306a36Sopenharmony_ci 32862306a36Sopenharmony_ci/* 32962306a36Sopenharmony_ci * void __flush_invalidate_dcache_page(ulong start) 33062306a36Sopenharmony_ci */ 33162306a36Sopenharmony_ci 33262306a36Sopenharmony_ciENTRY(__flush_invalidate_dcache_page) 33362306a36Sopenharmony_ci 33462306a36Sopenharmony_ci abi_entry_default 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_ci ___flush_invalidate_dcache_page a2 a3 33762306a36Sopenharmony_ci 33862306a36Sopenharmony_ci dsync 33962306a36Sopenharmony_ci abi_ret_default 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_ciENDPROC(__flush_invalidate_dcache_page) 34262306a36Sopenharmony_ci 34362306a36Sopenharmony_ci/* 34462306a36Sopenharmony_ci * void __flush_dcache_page(ulong start) 34562306a36Sopenharmony_ci */ 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ciENTRY(__flush_dcache_page) 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_ci abi_entry_default 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_ci ___flush_dcache_page a2 a3 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_ci dsync 35462306a36Sopenharmony_ci abi_ret_default 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ciENDPROC(__flush_dcache_page) 35762306a36Sopenharmony_ci 35862306a36Sopenharmony_ci/* 35962306a36Sopenharmony_ci * void __invalidate_icache_range(ulong start, ulong size) 36062306a36Sopenharmony_ci */ 36162306a36Sopenharmony_ci 36262306a36Sopenharmony_ciENTRY(__invalidate_icache_range) 36362306a36Sopenharmony_ci 36462306a36Sopenharmony_ci abi_entry_default 36562306a36Sopenharmony_ci 36662306a36Sopenharmony_ci ___invalidate_icache_range a2 a3 a4 36762306a36Sopenharmony_ci isync 36862306a36Sopenharmony_ci 36962306a36Sopenharmony_ci abi_ret_default 37062306a36Sopenharmony_ci 37162306a36Sopenharmony_ciENDPROC(__invalidate_icache_range) 37262306a36Sopenharmony_ciEXPORT_SYMBOL(__invalidate_icache_range) 37362306a36Sopenharmony_ci 37462306a36Sopenharmony_ci/* 37562306a36Sopenharmony_ci * void __flush_invalidate_dcache_range(ulong start, ulong size) 37662306a36Sopenharmony_ci */ 37762306a36Sopenharmony_ci 37862306a36Sopenharmony_ciENTRY(__flush_invalidate_dcache_range) 37962306a36Sopenharmony_ci 38062306a36Sopenharmony_ci abi_entry_default 38162306a36Sopenharmony_ci 38262306a36Sopenharmony_ci ___flush_invalidate_dcache_range a2 a3 a4 38362306a36Sopenharmony_ci dsync 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_ci abi_ret_default 38662306a36Sopenharmony_ci 38762306a36Sopenharmony_ciENDPROC(__flush_invalidate_dcache_range) 38862306a36Sopenharmony_ci 38962306a36Sopenharmony_ci/* 39062306a36Sopenharmony_ci * void _flush_dcache_range(ulong start, ulong size) 39162306a36Sopenharmony_ci */ 39262306a36Sopenharmony_ci 39362306a36Sopenharmony_ciENTRY(__flush_dcache_range) 39462306a36Sopenharmony_ci 39562306a36Sopenharmony_ci abi_entry_default 39662306a36Sopenharmony_ci 39762306a36Sopenharmony_ci ___flush_dcache_range a2 a3 a4 39862306a36Sopenharmony_ci dsync 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_ci abi_ret_default 40162306a36Sopenharmony_ci 40262306a36Sopenharmony_ciENDPROC(__flush_dcache_range) 40362306a36Sopenharmony_ciEXPORT_SYMBOL(__flush_dcache_range) 40462306a36Sopenharmony_ci 40562306a36Sopenharmony_ci/* 40662306a36Sopenharmony_ci * void _invalidate_dcache_range(ulong start, ulong size) 40762306a36Sopenharmony_ci */ 40862306a36Sopenharmony_ci 40962306a36Sopenharmony_ciENTRY(__invalidate_dcache_range) 41062306a36Sopenharmony_ci 41162306a36Sopenharmony_ci abi_entry_default 41262306a36Sopenharmony_ci 41362306a36Sopenharmony_ci ___invalidate_dcache_range a2 a3 a4 41462306a36Sopenharmony_ci 41562306a36Sopenharmony_ci abi_ret_default 41662306a36Sopenharmony_ci 41762306a36Sopenharmony_ciENDPROC(__invalidate_dcache_range) 41862306a36Sopenharmony_ciEXPORT_SYMBOL(__invalidate_dcache_range) 41962306a36Sopenharmony_ci 42062306a36Sopenharmony_ci/* 42162306a36Sopenharmony_ci * void _invalidate_icache_all(void) 42262306a36Sopenharmony_ci */ 42362306a36Sopenharmony_ci 42462306a36Sopenharmony_ciENTRY(__invalidate_icache_all) 42562306a36Sopenharmony_ci 42662306a36Sopenharmony_ci abi_entry_default 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_ci ___invalidate_icache_all a2 a3 42962306a36Sopenharmony_ci isync 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_ci abi_ret_default 43262306a36Sopenharmony_ci 43362306a36Sopenharmony_ciENDPROC(__invalidate_icache_all) 43462306a36Sopenharmony_ci 43562306a36Sopenharmony_ci/* 43662306a36Sopenharmony_ci * void _flush_invalidate_dcache_all(void) 43762306a36Sopenharmony_ci */ 43862306a36Sopenharmony_ci 43962306a36Sopenharmony_ciENTRY(__flush_invalidate_dcache_all) 44062306a36Sopenharmony_ci 44162306a36Sopenharmony_ci abi_entry_default 44262306a36Sopenharmony_ci 44362306a36Sopenharmony_ci ___flush_invalidate_dcache_all a2 a3 44462306a36Sopenharmony_ci dsync 44562306a36Sopenharmony_ci 44662306a36Sopenharmony_ci abi_ret_default 44762306a36Sopenharmony_ci 44862306a36Sopenharmony_ciENDPROC(__flush_invalidate_dcache_all) 44962306a36Sopenharmony_ci 45062306a36Sopenharmony_ci/* 45162306a36Sopenharmony_ci * void _invalidate_dcache_all(void) 45262306a36Sopenharmony_ci */ 45362306a36Sopenharmony_ci 45462306a36Sopenharmony_ciENTRY(__invalidate_dcache_all) 45562306a36Sopenharmony_ci 45662306a36Sopenharmony_ci abi_entry_default 45762306a36Sopenharmony_ci 45862306a36Sopenharmony_ci ___invalidate_dcache_all a2 a3 45962306a36Sopenharmony_ci dsync 46062306a36Sopenharmony_ci 46162306a36Sopenharmony_ci abi_ret_default 46262306a36Sopenharmony_ci 46362306a36Sopenharmony_ciENDPROC(__invalidate_dcache_all) 464