1234567891011121314151617181920212223242526272829303132333435363738394041 |
- --- a/arch/arm/mm/cache-fa.S
- +++ b/arch/arm/mm/cache-fa.S
- @@ -24,7 +24,8 @@
- /*
- * The size of one data cache line.
- */
- -#define CACHE_DLINESIZE 16
- +#define CACHE_DLINESIZE 16
- +#define CACHE_DLINESHIFT 4
-
- /*
- * The total size of the data cache.
- @@ -169,7 +170,17 @@ ENTRY(fa_flush_kern_dcache_area)
- * - start - virtual start address
- * - end - virtual end address
- */
- +__flush_whole_dcache:
- + mcr p15, 0, r0, c7, c14, 0 @ clean/invalidate D cache
- + mov r0, #0
- + mcr p15, 0, r0, c7, c10, 4 @ drain write buffer
- + mov pc, lr
- +
- fa_dma_inv_range:
- + sub r3, r1, r0 @ calculate total size
- + cmp r3, #CACHE_DLIMIT @ total size >= limit?
- + bhs __flush_whole_dcache @ flush whole D cache
- +
- tst r0, #CACHE_DLINESIZE - 1
- bic r0, r0, #CACHE_DLINESIZE - 1
- mcrne p15, 0, r0, c7, c14, 1 @ clean & invalidate D entry
- @@ -193,6 +204,10 @@ fa_dma_inv_range:
- * - end - virtual end address
- */
- fa_dma_clean_range:
- + sub r3, r1, r0 @ calculate total size
- + cmp r3, #CACHE_DLIMIT @ total size >= limit?
- + bhs __flush_whole_dcache @ flush whole D cache
- +
- bic r0, r0, #CACHE_DLINESIZE - 1
- 1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry
- add r0, r0, #CACHE_DLINESIZE
|