Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Sep 2014 18:25:34 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r270936 - projects/arm64/sys/arm64/arm64
Message-ID:  <201409011825.s81IPYxq081355@svn.freebsd.org>

index | next in thread | raw e-mail

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"


help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201409011825.s81IPYxq081355>