static void l2x0_clean_range(unsigned long start, unsigned long end) { #ifndef CONFIG_EMXX_L310_NORAM void __iomem *base = l2x0_base; #endif unsigned long flags; _l2x0_lock(&l2x0_lock, flags); #ifndef CONFIG_EMXX_L310_NORAM start &= ~(CACHE_LINE_SIZE - 1); while (start < end) { unsigned long blk_end = block_end(start, end); while (start < blk_end) { l2x0_clean_line(start); start += CACHE_LINE_SIZE; } if (blk_end < end) { _l2x0_unlock(&l2x0_lock, flags); _l2x0_lock(&l2x0_lock, flags); } } cache_wait(base + L2X0_CLEAN_LINE_PA, 1); #endif cache_sync(); _l2x0_unlock(&l2x0_lock, flags); }
void dcache_clean_line(unsigned addr) { #ifndef CONFIG_SYS_NO_DCACHE _clean_dcache_addr(addr); #endif #ifdef CONFIG_CACHE_L2X0 l2x0_clean_line(addr); #endif }
void l2x0_clean_range(unsigned long start, unsigned long end) { start &= ~(CACHE_LINE_SIZE - 1); while (start < end) { unsigned long blk_end = start + end - start; while (start < blk_end) { l2x0_clean_line(start); start += CACHE_LINE_SIZE; } } cache_wait(L2X0_CLEAN_LINE_PA, 1); cache_sync(); }
static void l2x0_clean_range(unsigned long start, unsigned long end) { void __iomem *base = l2x0_base; start &= ~(CACHE_LINE_SIZE - 1); while (start < end) { unsigned long blk_end = start + min(end - start, 4096UL); while (start < blk_end) { l2x0_clean_line(start); start += CACHE_LINE_SIZE; } } cache_wait(base + L2X0_CLEAN_LINE_PA, 1); cache_sync(); }
static void l2x0_clean_range(unsigned long start, unsigned long end) { void __iomem *base = l2x0_base; unsigned long flags; l2x0_lock(&l2x0_lock, flags); start &= ~(CACHE_LINE_SIZE - 1); while (start < end) { unsigned long blk_end = block_end(start, end); while (start < blk_end) { l2x0_clean_line(start); start += CACHE_LINE_SIZE; } if (blk_end < end) { l2x0_unlock(&l2x0_lock, flags); l2x0_lock(&l2x0_lock, flags); } } cache_wait(base + L2X0_CLEAN_LINE_PA, 1); cache_sync(); l2x0_unlock(&l2x0_lock, flags); }