• Haavard Skinnemoen's avatar
    [AVR32] Fix bug in invalidate_dcache_region() · ab61f7d2
    Haavard Skinnemoen authored
    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: default avatarHaavard Skinnemoen <hskinnemoen@atmel.com>
    ab61f7d2
cache.c 3.68 KB