From 11bfba56aabb59e3189870e21134d507007d3c1e Mon Sep 17 00:00:00 2001 From: Haavard Skinnemoen Date: Mon, 18 Jun 2007 14:08:18 +0200 Subject: [PATCH] --- yaml --- r: 57968 b: refs/heads/master c: ab61f7d21ab7f564fce322c498e4a7d6171140db h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/avr32/mm/cache.c | 14 +++++--------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index d0d7fe093635..85701e4c215b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 75154f402ef18e459ff97ddece25656b6c2b329c +refs/heads/master: ab61f7d21ab7f564fce322c498e4a7d6171140db diff --git a/trunk/arch/avr32/mm/cache.c b/trunk/arch/avr32/mm/cache.c index 8f7b1c3cd0f9..c1233c615e67 100644 --- a/trunk/arch/avr32/mm/cache.c +++ b/trunk/arch/avr32/mm/cache.c @@ -23,7 +23,6 @@ void invalidate_dcache_region(void *start, size_t size) { unsigned long v, begin, end, linesz, mask; - int flush = 0; linesz = boot_cpu_data.dcache.linesz; mask = linesz - 1; @@ -32,24 +31,21 @@ void invalidate_dcache_region(void *start, size_t size) * instead of invalidating ... never discard valid data! */ begin = (unsigned long)start; - end = begin + size - 1; + end = begin + size; if (begin & mask) { flush_dcache_line(start); begin += linesz; - flush = 1; } - if ((end & mask) != mask) { + if (end & mask) { flush_dcache_line((void *)end); - end -= linesz; - flush = 1; + end &= ~mask; } /* remaining cachelines only need invalidation */ - for (v = begin; v <= end; v += linesz) + for (v = begin; v < end; v += linesz) invalidate_dcache_line((void *)v); - if (flush) - flush_write_buffer(); + flush_write_buffer(); } void clean_dcache_region(void *start, size_t size)