diff options
author | cognet <cognet@FreeBSD.org> | 2012-11-21 01:38:40 +0000 |
---|---|---|
committer | cognet <cognet@FreeBSD.org> | 2012-11-21 01:38:40 +0000 |
commit | 79f863d433acf2748aa6b0f4c622a26da1deae60 (patch) | |
tree | 3d1781a8b7c6533391b049fcb7975dc7e845d319 /sys/arm | |
parent | 45112bd543b80a550b611257a95bf2475a120761 (diff) | |
download | FreeBSD-src-79f863d433acf2748aa6b0f4c622a26da1deae60.zip FreeBSD-src-79f863d433acf2748aa6b0f4c622a26da1deae60.tar.gz |
Make sure the address starts on a cache line boundary.
Diffstat (limited to 'sys/arm')
-rw-r--r-- | sys/arm/arm/pl310.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/sys/arm/arm/pl310.c b/sys/arm/arm/pl310.c index 45ee718..7c43b31 100644 --- a/sys/arm/arm/pl310.c +++ b/sys/arm/arm/pl310.c @@ -180,9 +180,13 @@ static void pl310_wbinv_range(vm_paddr_t start, vm_size_t size) { + if (start & g_l2cache_align_mask) { + size += start & g_l2cache_align_mask; + start &= ~g_l2cache_align_mask; + } if (size & g_l2cache_align_mask) { size &= ~g_l2cache_align_mask; - size += g_l2cache_line_size; + size += g_l2cache_line_size; } #if 1 @@ -217,6 +221,10 @@ static void pl310_wb_range(vm_paddr_t start, vm_size_t size) { + if (start & g_l2cache_align_mask) { + size += start & g_l2cache_align_mask; + start &= ~g_l2cache_align_mask; + } if (size & g_l2cache_align_mask) { size &= ~g_l2cache_align_mask; size += g_l2cache_line_size; @@ -235,6 +243,10 @@ static void pl310_inv_range(vm_paddr_t start, vm_size_t size) { + if (start & g_l2cache_align_mask) { + size += start & g_l2cache_align_mask; + start &= ~g_l2cache_align_mask; + } if (size & g_l2cache_align_mask) { size &= ~g_l2cache_align_mask; size += g_l2cache_line_size; |