Module Name: src
Committed By: matt
Date: Mon Sep 7 21:42:17 UTC 2009
Modified Files:
src/sys/arch/mips/include [matt-nb5-mips64]: pmap.h
Log Message:
Cleanup for LP64. XXX pv_entry needs work.
To generate a diff of this commit:
cvs rdiff -u -r1.54 -r1.54.26.1 src/sys/arch/mips/include/pmap.h
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 src/sys/arch/mips/include/pmap.h:1.54.26.1
--- src/sys/arch/mips/include/pmap.h:1.54 Wed Dec 26 16:01:34 2007
+++ src/sys/arch/mips/include/pmap.h Mon Sep 7 21:42:17 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.54 2007/12/26 16:01:34 ad Exp $ */
+/* $NetBSD: pmap.h,v 1.54.26.1 2009/09/07 21:42:17 matt Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -102,7 +102,7 @@
#define mips_round_seg(x) (((vaddr_t)(x) + SEGOFSET) & ~SEGOFSET)
#define pmap_segmap(m, v) ((m)->pm_segtab->seg_tab[((v) >> SEGSHIFT)])
-#define PMAP_SEGTABSIZE 512
+#define PMAP_SEGTABSIZE (1 << (31 - SEGSHIFT))
union pt_entry;
@@ -114,12 +114,12 @@
* Machine dependent pmap structure.
*/
typedef struct pmap {
- int pm_count; /* pmap reference count */
kmutex_t pm_lock; /* lock on pmap */
- struct pmap_statistics pm_stats; /* pmap statistics */
- unsigned pm_asid; /* TLB address space tag */
- unsigned pm_asidgen; /* its generation number */
struct segtab *pm_segtab; /* pointers to pages of PTEs */
+ int pm_count; /* pmap reference count */
+ unsigned int pm_asid; /* TLB address space tag */
+ unsigned int pm_asidgen; /* its generation number */
+ struct pmap_statistics pm_stats; /* pmap statistics */
} *pmap_t;
/*
@@ -130,7 +130,7 @@
typedef struct pv_entry {
struct pv_entry *pv_next; /* next pv_entry */
struct pmap *pv_pmap; /* pmap where mapping lies */
- vaddr_t pv_va; /* virtual address for mapping */
+ vaddr_t pv_va; /* virtual address for mapping */
int pv_flags; /* some flags for the mapping */
} *pv_entry_t;
@@ -189,12 +189,18 @@
/*
* Other hooks for the pool allocator.
*/
+#ifdef _LP64
+#define POOL_VTOPHYS(va) (MIPS_KSEG0_P(va) \
+ ? MIPS_KSEG0_TO_PHYS(va) \
+ : MIPS_XKPHYS_TO_PHYS(va))
+#else
#define POOL_VTOPHYS(va) MIPS_KSEG0_TO_PHYS((vaddr_t)(va))
+#endif
/*
* Select CCA to use for unmanaged pages.
*/
-#define PMAP_CCA_FOR_PA(pa) 2 /* uncached */
+#define PMAP_CCA_FOR_PA(pa) CCA_UNCACHED /* uncached */
#if defined(_MIPS_PADDR_T_64BIT) || defined(_LP64)
#define PMAP_NOCACHE 0x4000000000000000ULL