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;