Module Name: src
Committed By: uebayasi
Date: Sat Aug 14 02:09:58 UTC 2010
Modified Files:
src/sys/arch/evbppc/obs405 [uebayasi-xip]: obs266_machdep.c
src/sys/arch/powerpc/ibm4xx [uebayasi-xip]: pmap.c
src/sys/arch/powerpc/include/ibm4xx [uebayasi-xip]: vmparam.h
Log Message:
Teach TLB miss handler (pmap_tlbmiss()) to map "Expansion ROM" area as
PA == VA. Now we don't need to reserve a TLB entry for it.
To generate a diff of this commit:
cvs rdiff -u -r1.10.2.2 -r1.10.2.3 \
src/sys/arch/evbppc/obs405/obs266_machdep.c
cvs rdiff -u -r1.60.2.4 -r1.60.2.5 src/sys/arch/powerpc/ibm4xx/pmap.c
cvs rdiff -u -r1.6.2.2 -r1.6.2.3 \
src/sys/arch/powerpc/include/ibm4xx/vmparam.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/evbppc/obs405/obs266_machdep.c
diff -u src/sys/arch/evbppc/obs405/obs266_machdep.c:1.10.2.2 src/sys/arch/evbppc/obs405/obs266_machdep.c:1.10.2.3
--- src/sys/arch/evbppc/obs405/obs266_machdep.c:1.10.2.2 Wed Aug 11 14:02:45 2010
+++ src/sys/arch/evbppc/obs405/obs266_machdep.c Sat Aug 14 02:09:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: obs266_machdep.c,v 1.10.2.2 2010/08/11 14:02:45 uebayasi Exp $ */
+/* $NetBSD: obs266_machdep.c,v 1.10.2.3 2010/08/14 02:09:57 uebayasi Exp $ */
/* Original: md_machdep.c,v 1.3 2005/01/24 18:47:37 shige Exp $ */
/*
@@ -68,7 +68,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: obs266_machdep.c,v 1.10.2.2 2010/08/11 14:02:45 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: obs266_machdep.c,v 1.10.2.3 2010/08/14 02:09:57 uebayasi Exp $");
#include "opt_compat_netbsd.h"
#include "opt_ddb.h"
@@ -150,11 +150,6 @@
for (va = 0; va < endkernel; va += TLB_PG_SIZE)
ppc4xx_tlb_reserve(va, va, TLB_PG_SIZE, TLB_EX);
-#ifdef XIP
- /* Map NOR FlashROM as managed. */
- ppc4xx_tlb_reserve(0xff000000, 0xff000000, TLB_PG_SIZE, TLB_I);
-#endif
-
/* Map console after RAM (see pmap_tlbmiss()) */
ppc4xx_tlb_reserve(CONADDR, roundup(memsize, TLB_PG_SIZE), TLB_PG_SIZE,
TLB_I | TLB_G);
Index: src/sys/arch/powerpc/ibm4xx/pmap.c
diff -u src/sys/arch/powerpc/ibm4xx/pmap.c:1.60.2.4 src/sys/arch/powerpc/ibm4xx/pmap.c:1.60.2.5
--- src/sys/arch/powerpc/ibm4xx/pmap.c:1.60.2.4 Wed Aug 11 13:46:28 2010
+++ src/sys/arch/powerpc/ibm4xx/pmap.c Sat Aug 14 02:09:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.60.2.4 2010/08/11 13:46:28 uebayasi Exp $ */
+/* $NetBSD: pmap.c,v 1.60.2.5 2010/08/14 02:09:57 uebayasi Exp $ */
/*
* Copyright 2001 Wasabi Systems, Inc.
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.60.2.4 2010/08/11 13:46:28 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.60.2.5 2010/08/14 02:09:57 uebayasi Exp $");
#include "opt_xip.h"
@@ -1517,7 +1517,8 @@
* to not clobber 0 upto ${physmem} with device mappings in machdep
* code.
*/
- if (ctx != KERNEL_PID || va >= VM_MIN_KERNEL_ADDRESS) {
+ if (ctx != KERNEL_PID ||
+ (va >= VM_MIN_KERNEL_ADDRESS && va < VM_MAX_KERNEL_ADDRESS)) {
pte = pte_find((struct pmap *)__UNVOLATILE(ctxbusy[ctx]), va);
if (pte == NULL) {
/* Map unmanaged addresses directly for kernel access */
Index: src/sys/arch/powerpc/include/ibm4xx/vmparam.h
diff -u src/sys/arch/powerpc/include/ibm4xx/vmparam.h:1.6.2.2 src/sys/arch/powerpc/include/ibm4xx/vmparam.h:1.6.2.3
--- src/sys/arch/powerpc/include/ibm4xx/vmparam.h:1.6.2.2 Wed Aug 11 13:50:05 2010
+++ src/sys/arch/powerpc/include/ibm4xx/vmparam.h Sat Aug 14 02:09:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: vmparam.h,v 1.6.2.2 2010/08/11 13:50:05 uebayasi Exp $ */
+/* $NetBSD: vmparam.h,v 1.6.2.3 2010/08/14 02:09:57 uebayasi Exp $ */
/*-
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -78,7 +78,7 @@
#define VM_MAXUSER_ADDRESS ((vaddr_t)0xffff0000-PAGE_SIZE)
#define VM_MAX_ADDRESS VM_MAXUSER_ADDRESS
#define VM_MIN_KERNEL_ADDRESS ((vaddr_t)0x80000000)
-#define VM_MAX_KERNEL_ADDRESS ((vaddr_t)0xff000000)
+#define VM_MAX_KERNEL_ADDRESS ((vaddr_t)0xef000000) /* before I/O periphs */
#else
/*
* Would like to have MAX addresses = 0, but this doesn't (currently) work