From: Arve Hjønnevåg Date: Wed, 10 Jun 2009 03:17:45 +0000 (-0700) Subject: [ARM] Optionally flush entire dcache from v6_dma_flush_range X-Git-Tag: firefly_0821_release~11778 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=3414e45fe081b2f7b89a2156e0b7eec26f77839b;p=firefly-linux-kernel-4.4.55.git [ARM] Optionally flush entire dcache from v6_dma_flush_range If CACHE_FLUSH_RANGE_LIMIT is defined, then the entire dcache will be flushed if the requested range is larger than this limit. Signed-off-by: Arve Hjønnevåg --- diff --git a/arch/arm/mm/cache-v6.S b/arch/arm/mm/cache-v6.S index 295e25dd6381..037cb2dc8cef 100644 --- a/arch/arm/mm/cache-v6.S +++ b/arch/arm/mm/cache-v6.S @@ -248,6 +248,11 @@ ENTRY(v6_dma_clean_range) * - end - virtual end address of region */ ENTRY(v6_dma_flush_range) +#ifdef CONFIG_CACHE_FLUSH_RANGE_LIMIT + sub r2, r1, r0 + cmp r2, #CONFIG_CACHE_FLUSH_RANGE_LIMIT + bhi v6_dma_flush_dcache_all +#endif bic r0, r0, #D_CACHE_LINE_SIZE - 1 1: #ifdef HARVARD_CACHE @@ -262,6 +267,18 @@ ENTRY(v6_dma_flush_range) mcr p15, 0, r0, c7, c10, 4 @ drain write buffer mov pc, lr +#ifdef CONFIG_CACHE_FLUSH_RANGE_LIMIT +v6_dma_flush_dcache_all: + mov r0, #0 +#ifdef HARVARD_CACHE + mcr p15, 0, r0, c7, c14, 0 @ D cache clean+invalidate +#else + mcr p15, 0, r0, c7, c15, 0 @ Cache clean+invalidate +#endif + mcr p15, 0, r0, c7, c10, 4 @ drain write buffer + mov pc, lr +#endif + __INITDATA .type v6_cache_fns, #object