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;