[AVR32] Fix bug in invalidate_dcache_region()
authorHaavard Skinnemoen <hskinnemoen@atmel.com>
Mon, 18 Jun 2007 12:08:18 +0000 (14:08 +0200)
committerHaavard Skinnemoen <hskinnemoen@atmel.com>
Sat, 23 Jun 2007 12:52:52 +0000 (14:52 +0200)
commitab61f7d21ab7f564fce322c498e4a7d6171140db
treed7fbdeea3ea85fd65ce20a5132e4264cb866c9c9
parent75154f402ef18e459ff97ddece25656b6c2b329c
[AVR32] Fix bug in invalidate_dcache_region()

If (start + size) is not cacheline aligned and (start & mask) > (end &
mask), the last but one cacheline won't be invalidated as it should.
Fix this by rounding `end' down to the nearest cacheline boundary if
it gets adjusted due to misalignment.

Also flush the write buffer unconditionally -- if the dcache wrote
back a line just before we invalidated it, the dirty data may be
sitting in the write buffer waiting to corrupt our buffer later.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
arch/avr32/mm/cache.c