summaryrefslogtreecommitdiffstats
path: root/sys/arm64
diff options
context:
space:
mode:
authorwma <wma@FreeBSD.org>2016-03-14 07:26:38 +0000
committerwma <wma@FreeBSD.org>2016-03-14 07:26:38 +0000
commitca92c5bf0943ec24b4a2a0e0b943e40322d9faa4 (patch)
tree241d6f2c064d91e1b31b50abb808a9082e46e799 /sys/arm64
parente71ffe7d77bfef641b6ce0567c4fd76f86687cce (diff)
downloadFreeBSD-src-ca92c5bf0943ec24b4a2a0e0b943e40322d9faa4.zip
FreeBSD-src-ca92c5bf0943ec24b4a2a0e0b943e40322d9faa4.tar.gz
pmap arm64: fixing pmap_invalidate_range
It seems that if range within one page is given this page will not be invalidated at all. Clean it up. Submitted by: Dominik Ermel <der@semihalf.com> Obtained from: Semihalf Sponsored by: Cavium Reviewed by: wma, zbb Approved by: cognet (mentor) Differential Revision: https://reviews.freebsd.org/D5569
Diffstat (limited to 'sys/arm64')
-rw-r--r--sys/arm64/arm64/pmap.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c
index abc6581..5db731d 100644
--- a/sys/arm64/arm64/pmap.c
+++ b/sys/arm64/arm64/pmap.c
@@ -772,12 +772,10 @@ pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
vm_offset_t addr;
sched_pin();
- sva >>= PAGE_SHIFT;
- eva >>= PAGE_SHIFT;
__asm __volatile("dsb sy");
- for (addr = sva; addr < eva; addr++) {
+ for (addr = sva; addr < eva; addr += PAGE_SIZE) {
__asm __volatile(
- "tlbi vaae1is, %0" : : "r"(addr));
+ "tlbi vaae1is, %0" : : "r"(addr >> PAGE_SHIFT));
}
__asm __volatile(
"dsb sy \n"
OpenPOWER on IntegriCloud