Module Name:    src
Committed By:   skrll
Date:           Mon Jan 22 13:22:40 UTC 2018

Modified Files:
        src/sys/arch/arm/arm32: pmap.c

Log Message:
Add PMAP_WRITE_COMBINE: to the list of flags supported by pmap_kenter_pa


To generate a diff of this commit:
cvs rdiff -u -r1.363 -r1.364 src/sys/arch/arm/arm32/pmap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/arm32/pmap.c
diff -u src/sys/arch/arm/arm32/pmap.c:1.363 src/sys/arch/arm/arm32/pmap.c:1.364
--- src/sys/arch/arm/arm32/pmap.c:1.363	Mon Jan 22 13:21:35 2018
+++ src/sys/arch/arm/arm32/pmap.c	Mon Jan 22 13:22:40 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.363 2018/01/22 13:21:35 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.364 2018/01/22 13:22:40 skrll Exp $	*/
 
 /*
  * Copyright 2003 Wasabi Systems, Inc.
@@ -217,7 +217,7 @@
 
 #include <arm/locore.h>
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.363 2018/01/22 13:21:35 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.364 2018/01/22 13:22:40 skrll Exp $");
 
 //#define PMAP_DEBUG
 #ifdef PMAP_DEBUG
@@ -3704,12 +3704,24 @@ pmap_kenter_pa(vaddr_t va, paddr_t pa, v
 		}
 	}
 	pmap_release_pmap_lock(kpm);
+	pt_entry_t npte = L2_S_PROTO | pa | L2_S_PROT(PTE_KERNEL, prot);
 
-	pt_entry_t npte = L2_S_PROTO | pa | L2_S_PROT(PTE_KERNEL, prot)
-	    | ((flags & PMAP_NOCACHE)
-		? 0
-		: ((flags & PMAP_PTE)
-		    ? pte_l2_s_cache_mode_pt : pte_l2_s_cache_mode));
+	if (flags & PMAP_PTE) {
+		KASSERT((flags & PMAP_CACHE_MASK) == 0);
+		if (!(flags & PMAP_NOCACHE))
+			npte |= pte_l2_s_cache_mode_pt;
+	} else {
+		switch (flags & PMAP_CACHE_MASK) {
+		case PMAP_NOCACHE:
+			break;
+		case PMAP_WRITE_COMBINE:
+			npte |= pte_l2_s_wc_mode;
+			break;
+		default:
+			npte |= pte_l2_s_cache_mode;
+			break;
+		}
+	}
 #ifdef ARM_MMU_EXTENDED
 	if (prot & VM_PROT_EXECUTE)
 		npte &= ~L2_XS_XN;

Reply via email to