Author: andrew
Date: Mon Aug 24 12:01:39 2015
New Revision: 287105
URL: https://svnweb.freebsd.org/changeset/base/287105

Log:
  Add support for pmap_sync_icache on arm64.
  
  Reviewed by:  emaste, imp (both earlier version)
  Obtained from:        ABT Systems Ltd
  Sponsored by: The FreeBSD Foundation
  Differential Revision:        https://reviews.freebsd.org/D3438

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

Modified: head/sys/arm64/arm64/pmap.c
==============================================================================
--- head/sys/arm64/arm64/pmap.c Mon Aug 24 10:55:54 2015        (r287104)
+++ head/sys/arm64/arm64/pmap.c Mon Aug 24 12:01:39 2015        (r287105)
@@ -3050,10 +3050,32 @@ pmap_activate(struct thread *td)
 }
 
 void
-pmap_sync_icache(pmap_t pm, vm_offset_t va, vm_size_t sz)
+pmap_sync_icache(pmap_t pmap, vm_offset_t va, vm_size_t sz)
 {
 
-       panic("ARM64TODO: pmap_sync_icache");
+       if (va >= VM_MIN_KERNEL_ADDRESS) {
+               cpu_icache_sync_range(va, sz);
+       } else {
+               u_int len, offset;
+               vm_paddr_t pa;
+
+               /* Find the length of data in this page to flush */
+               offset = va & PAGE_MASK;
+               len = imin(PAGE_SIZE - offset, sz);
+
+               while (sz != 0) {
+                       /* Extract the physical address & find it in the DMAP */
+                       pa = pmap_extract(pmap, va);
+                       if (pa != 0)
+                               cpu_icache_sync_range(PHYS_TO_DMAP(pa), len);
+
+                       /* Move to the next page */
+                       sz -= len;
+                       va += len;
+                       /* Set the length for the next iteration */
+                       len = imin(PAGE_SIZE, sz);
+               }
+       }
 }
 
 /*
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to