diff options
| author | matt <matt@NetBSD.org> | 2012-08-27 12:05:30 +0000 |
|---|---|---|
| committer | matt <matt@NetBSD.org> | 2012-08-27 12:05:30 +0000 |
| commit | cb8e40fa83c179ee6f55cb3e4b9eb3f0728d4e07 (patch) | |
| tree | 855decb126a38883bb7bffab6fed6af0b4e5942d /sys | |
| parent | 795758c21a16eeec3210d7f50c080955783cd5d0 (diff) | |
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.
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/arch/arm/arm32/pmap.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/arch/arm/arm32/pmap.c b/sys/arch/arm/arm32/pmap.c index c7cd411c285..03c2be234a4 100644 --- a/sys/arch/arm/arm32/pmap.c +++ b/sys/arch/arm/arm32/pmap.c @@ -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(); |
