Lines Matching +full:2 +full:- +full:way

1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * linux/arch/arm/mm/cache-v7m.S
5 * Based on linux/arch/arm/mm/cache-v7.S
20 #include "proc-macros.S"
22 .arch armv7-m
51 * dcisw: Invalidate data cache by set/way
58 * dccisw: Clean and invalidate data cache by set/way
132 and r3, r1, r0, lsr #3 @ NumWays - 1
140 1: sub r2, r2, #1 @ NumSets--
142 2: subs r3, r3, #1 @ Temp--
147 bgt 2b
158 * Flush the whole I-cache.
161 * r0 - set to 0
171 * Flush the whole D-cache.
173 * Corrupted registers: r0-r7, r9-r11
179 ands r3, r3, #7 << 1 @ extract LoC*2 from clidr
187 cmp r1, #2 @ see what cache we have at this level
188 blt skip @ skip if no cache, or just i-cache
201 ands r4, r4, r1, lsr #3 @ find maximum number on the way size
202 clz r5, r4 @ find bit position of way size increment
209 orr r11, r10, r6 @ factor way and cache number into r11
212 dccisw r11, r6 @ clean/invalidate by set/way
215 subs r4, r4, #1 @ decrement the way
218 add r10, r10, #2 @ increment cache number
234 * working outwards from L1 cache. This is done using Set/Way based cache
241 stmfd sp!, {r4-r7, r9-r11, lr}
244 ldmfd sp!, {r4-r7, r9-r11, lr}
253 * - mm - mm_struct describing address space
264 * - start - start address (may not be aligned)
265 * - end - end address (exclusive, may not be aligned)
266 * - flags - vm_area_struct flags describing address space
269 * - we have a VIPT cache.
282 * - start - virtual start address of region
283 * - end - virtual end address of region
286 * - the Icache does not read data from the write buffer
301 * - start - virtual start address of region
302 * - end - virtual end address of region
305 * - the Icache does not read data from the write buffer
325 2:
329 blo 2b
343 * - addr - kernel address
344 * - size - region size
367 * - start - virtual start address of region
368 * - end - virtual end address of region
393 * - start - virtual start address of region
394 * - end - virtual end address of region
411 * - start - virtual start address of region
412 * - end - virtual end address of region
429 * - start - kernel virtual start address
430 * - size - size of region
431 * - dir - DMA direction
442 * - start - kernel virtual start address
443 * - size - size of region
444 * - dir - DMA direction