Module Name: src
Committed By: matt
Date: Wed Aug 8 22:10:21 UTC 2012
Modified Files:
src/sys/arch/mips/include [matt-nb5-mips64]: pmap.h
src/sys/arch/mips/mips [matt-nb5-mips64]: pmap_segtab.c trap.c
Log Message:
Fix some LP64 bugs
To generate a diff of this commit:
cvs rdiff -u -r1.54.26.27 -r1.54.26.28 src/sys/arch/mips/include/pmap.h
cvs rdiff -u -r1.1.2.18 -r1.1.2.19 src/sys/arch/mips/mips/pmap_segtab.c
cvs rdiff -u -r1.217.12.45 -r1.217.12.46 src/sys/arch/mips/mips/trap.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/mips/include/pmap.h
diff -u src/sys/arch/mips/include/pmap.h:1.54.26.27 src/sys/arch/mips/include/pmap.h:1.54.26.28
--- src/sys/arch/mips/include/pmap.h:1.54.26.27 Sat Aug 4 07:20:31 2012
+++ src/sys/arch/mips/include/pmap.h Wed Aug 8 22:10:21 2012
@@ -113,7 +113,7 @@ union pt_entry;
typedef union pmap_segtab {
union pmap_segtab * seg_seg[NSEGPG];
- union pt_entry * seg_tab[NPTEPG];
+ union pt_entry * seg_tab[NSEGPG];
} pmap_segtab_t;
#else
/*
Index: src/sys/arch/mips/mips/pmap_segtab.c
diff -u src/sys/arch/mips/mips/pmap_segtab.c:1.1.2.18 src/sys/arch/mips/mips/pmap_segtab.c:1.1.2.19
--- src/sys/arch/mips/mips/pmap_segtab.c:1.1.2.18 Sat Aug 4 07:20:31 2012
+++ src/sys/arch/mips/mips/pmap_segtab.c Wed Aug 8 22:10:21 2012
@@ -130,6 +130,7 @@ __KERNEL_RCSID(0, "pmap_segtab.c,v 1.1.2
#include <mips/pte.h>
CTASSERT(NBPG >= sizeof(pmap_segtab_t));
+
#define PMAP_PTP_CACHE
struct pmap_segtab_info {
Index: src/sys/arch/mips/mips/trap.c
diff -u src/sys/arch/mips/mips/trap.c:1.217.12.45 src/sys/arch/mips/mips/trap.c:1.217.12.46
--- src/sys/arch/mips/mips/trap.c:1.217.12.45 Sat Aug 4 07:20:31 2012
+++ src/sys/arch/mips/mips/trap.c Wed Aug 8 22:10:21 2012
@@ -378,9 +378,9 @@ trap(uint32_t status, uint32_t cause, va
*/
struct cpu_info * const ci = curcpu();
if ((va >> XSEGSHIFT) == 0 &&
- __predict_false(ci->ci_pmap_seg0tab == NULL
- && ci->ci_pmap_segtab->seg_seg[0] != NULL)) {
- ci->ci_pmap_seg0tab = ci->ci_pmap_segtab->seg_seg[0];
+ __predict_false(ci->ci_pmap_seg0tab[0] == NULL
+ && ci->ci_pmap_segtab[0]->seg_seg[0] != NULL)) {
+ ci->ci_pmap_seg0tab[0] = ci->ci_pmap_segtab[0]->seg_seg[0];
kpreempt_enable();
if (type & T_USER) {
userret(l);