Module Name: src Committed By: matt Date: Mon Aug 27 12:05:30 UTC 2012
Modified Files: src/sys/arch/arm/arm32: pmap.c Log Message: Use the correct (L1_S_PROT, not L2_S_PROT) macro for setting the protection of the vector page. This fixes a nasty little bug that shows up on armv7 systems when the vector page physical address changes (bit 12 of the address is cleared) and then any exception causes the system to hang. To generate a diff of this commit: cvs rdiff -u -r1.230 -r1.231 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.230 src/sys/arch/arm/arm32/pmap.c:1.231 --- src/sys/arch/arm/arm32/pmap.c:1.230 Mon Aug 20 13:03:41 2012 +++ src/sys/arch/arm/arm32/pmap.c Mon Aug 27 12:05:30 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.230 2012/08/20 13:03:41 matt Exp $ */ +/* $NetBSD: pmap.c,v 1.231 2012/08/27 12:05:30 matt Exp $ */ /* * Copyright 2003 Wasabi Systems, Inc. @@ -211,7 +211,7 @@ #include <machine/param.h> #include <arm/arm32/katelib.h> -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.230 2012/08/20 13:03:41 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.231 2012/08/27 12:05:30 matt Exp $"); #ifdef PMAP_DEBUG @@ -4976,7 +4976,7 @@ vector_page_setprot(int prot) ptep = &l2b->l2b_kva[l2pte_index(vector_page)]; - *ptep = (*ptep & ~L1_S_PROT_MASK) | L2_S_PROT(PTE_KERNEL, prot); + *ptep = (*ptep & ~L1_S_PROT_MASK) | L1_S_PROT(PTE_KERNEL, prot); PTE_SYNC(ptep); cpu_tlb_flushD_SE(vector_page); cpu_cpwait();