Lines Matching +full:1 +full:- +full:stop
1 // SPDX-License-Identifier: GPL-2.0+
12 #define ARMV7_DCACHE_INVAL_RANGE 1
26 asm volatile ("mrc p15, 1, %0, c0, c0, 0" : "=r" (ccsidr)); in get_ccsidr()
30 static void v7_dcache_clean_inval_range(u32 start, u32 stop, u32 line_len) in v7_dcache_clean_inval_range() argument
35 start &= ~(line_len - 1); in v7_dcache_clean_inval_range()
36 for (mva = start; mva < stop; mva = mva + line_len) { in v7_dcache_clean_inval_range()
37 /* DCCIMVAC - Clean & Invalidate data cache by MVA to PoC */ in v7_dcache_clean_inval_range()
38 asm volatile ("mcr p15, 0, %0, c7, c14, 1" : : "r" (mva)); in v7_dcache_clean_inval_range()
42 static void v7_dcache_inval_range(u32 start, u32 stop, u32 line_len) in v7_dcache_inval_range() argument
46 if (!check_cache_range(start, stop)) in v7_dcache_inval_range()
49 for (mva = start; mva < stop; mva = mva + line_len) { in v7_dcache_inval_range()
50 /* DCIMVAC - Invalidate data cache by MVA to PoC */ in v7_dcache_inval_range()
51 asm volatile ("mcr p15, 0, %0, c7, c6, 1" : : "r" (mva)); in v7_dcache_inval_range()
55 static void v7_dcache_maint_range(u32 start, u32 stop, u32 range_op) in v7_dcache_maint_range() argument
65 line_len = 1 << line_len; in v7_dcache_maint_range()
69 v7_dcache_clean_inval_range(start, stop, line_len); in v7_dcache_maint_range()
72 v7_dcache_inval_range(start, stop, line_len); in v7_dcache_maint_range()
89 /* Full system DSB - make sure that the invalidation is complete */ in v7_inval_tlb()
91 /* Full system ISB - make sure the instruction stream sees it */ in v7_inval_tlb()
114 * Invalidates range in all levels of D-cache/unified cache used:
115 * Affects the range [start, stop - 1]
117 void invalidate_dcache_range(unsigned long start, unsigned long stop) in invalidate_dcache_range() argument
119 check_cache_range(start, stop); in invalidate_dcache_range()
121 v7_dcache_maint_range(start, stop, ARMV7_DCACHE_INVAL_RANGE); in invalidate_dcache_range()
123 v7_outer_cache_inval_range(start, stop); in invalidate_dcache_range()
127 * Flush range(clean & invalidate) from all levels of D-cache/unified
129 * Affects the range [start, stop - 1]
131 void flush_dcache_range(unsigned long start, unsigned long stop) in flush_dcache_range() argument
133 check_cache_range(start, stop); in flush_dcache_range()
135 v7_dcache_maint_range(start, stop, ARMV7_DCACHE_CLEAN_INVAL_RANGE); in flush_dcache_range()
137 v7_outer_cache_flush_range(start, stop); in flush_dcache_range()
147 void mmu_page_table_flush(unsigned long start, unsigned long stop) in mmu_page_table_flush() argument
149 flush_dcache_range(start, stop); in mmu_page_table_flush()
161 void invalidate_dcache_range(unsigned long start, unsigned long stop) in invalidate_dcache_range() argument
165 void flush_dcache_range(unsigned long start, unsigned long stop) in flush_dcache_range() argument
173 void mmu_page_table_flush(unsigned long start, unsigned long stop) in mmu_page_table_flush() argument
183 /* Invalidate entire I-cache and branch predictor array */
195 /* Full system DSB - make sure that the invalidation is complete */ in invalidate_icache_all()
198 /* ISB - make sure the instruction stream sees it */ in invalidate_icache_all()