svn commit: r270936 - projects/arm64/sys/arm64/arm64

Andrew Turner andrew at FreeBSD.org
Mon Sep 1 18:25:35 UTC 2014


Author: andrew
Date: Mon Sep  1 18:25:34 2014
New Revision: 270936
URL: http://svnweb.freebsd.org/changeset/base/270936

Log:
  Fix pmap_invalidate_page and pmap_invalidate_range, the addresses need
  to be be shifted to get them in the correct location in the register.

Modified:
  projects/arm64/sys/arm64/arm64/pmap.c

Modified: projects/arm64/sys/arm64/arm64/pmap.c
==============================================================================
--- projects/arm64/sys/arm64/arm64/pmap.c	Mon Sep  1 16:51:57 2014	(r270935)
+++ projects/arm64/sys/arm64/arm64/pmap.c	Mon Sep  1 18:25:34 2014	(r270936)
@@ -1484,10 +1484,10 @@ pmap_invalidate_page(pmap_t pmap, vm_off
 
 	__asm __volatile(
 	    "dsb  sy		\n"
-	    "tlbi vae1, %0	\n"
+	    "tlbi vaae1, %0	\n"
 	    "dsb  sy		\n"
 	    "isb		\n"
-	    : : "r"(va));
+	    : : "r"(va >> PAGE_SHIFT));
 }
 
 PMAP_INLINE void
@@ -1496,10 +1496,12 @@ pmap_invalidate_range(pmap_t pmap, vm_of
 	vm_offset_t addr;
 
 	if (pmap == kernel_pmap) {
+		sva >>= PAGE_SHIFT;
+		eva >>= PAGE_SHIFT;
 		__asm __volatile("dsb	sy");
-		for (addr = sva; addr < eva; addr += PAGE_SIZE) {
+		for (addr = sva; addr < eva; addr++) {
 			__asm __volatile(
-			    "tlbi vae1, %0" : : "r"(addr));
+			    "tlbi vaae1, %0" : : "r"(addr));
 		}
 		__asm __volatile(
 		    "dsb  sy	\n"


More information about the svn-src-projects mailing list