Module Name: src Committed By: tsutsui Date: Fri Dec 4 18:55:14 UTC 2009
Modified Files: src/sys/arch/cesfic/cesfic: pmap_bootstrap.c src/sys/arch/hp300/hp300: pmap_bootstrap.c src/sys/arch/luna68k/luna68k: pmap_bootstrap.c src/sys/arch/mac68k/mac68k: pmap_bootstrap.c src/sys/arch/mvme68k/mvme68k: pmap_bootstrap.c src/sys/arch/news68k/news68k: pmap_bootstrap.c src/sys/arch/next68k/next68k: pmap_bootstrap.c src/sys/arch/x68k/x68k: pmap_bootstrap.c Log Message: Allocate lwp0upa (PA of lwp0 uarea) right after kernel rather than between other page tables to use different mappings for ste/pte pages as well as amiga and atari. Should resolve XXX comments in next68k and x68k. Tested on hp300 and mac68k. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/sys/arch/cesfic/cesfic/pmap_bootstrap.c cvs rdiff -u -r1.41 -r1.42 src/sys/arch/hp300/hp300/pmap_bootstrap.c cvs rdiff -u -r1.21 -r1.22 src/sys/arch/luna68k/luna68k/pmap_bootstrap.c cvs rdiff -u -r1.82 -r1.83 src/sys/arch/mac68k/mac68k/pmap_bootstrap.c cvs rdiff -u -r1.35 -r1.36 src/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c cvs rdiff -u -r1.25 -r1.26 src/sys/arch/news68k/news68k/pmap_bootstrap.c cvs rdiff -u -r1.30 -r1.31 src/sys/arch/next68k/next68k/pmap_bootstrap.c cvs rdiff -u -r1.44 -r1.45 src/sys/arch/x68k/x68k/pmap_bootstrap.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/cesfic/cesfic/pmap_bootstrap.c diff -u src/sys/arch/cesfic/cesfic/pmap_bootstrap.c:1.20 src/sys/arch/cesfic/cesfic/pmap_bootstrap.c:1.21 --- src/sys/arch/cesfic/cesfic/pmap_bootstrap.c:1.20 Fri Dec 4 18:32:31 2009 +++ src/sys/arch/cesfic/cesfic/pmap_bootstrap.c Fri Dec 4 18:55:13 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_bootstrap.c,v 1.20 2009/12/04 18:32:31 tsutsui Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.21 2009/12/04 18:55:13 tsutsui Exp $ */ /* * Copyright (c) 1991, 1993 @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.20 2009/12/04 18:32:31 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.21 2009/12/04 18:55:13 tsutsui Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -91,9 +91,15 @@ /* * Calculate important physical addresses: * + * lwp0upa lwp 0 u-area UPAGES pages + * * kstpa kernel segment table 1 page (!040) * N pages (040) * + * kptmpa kernel PT map 1 page + * + * lkptpa last kernel PT page 1 page + * * kptpa statically allocated * kernel PT pages Sysptsize+ pages * @@ -101,15 +107,11 @@ * EIOMAPSIZE are the number of PTEs, hence we need to round * the total to a page boundary with IO maps at the end. ] * - * kptmpa kernel PT map 1 page - * - * lkptpa last kernel PT page 1 page - * - * lwp0upa lwp 0 u-area UPAGES pages - * * The KVA corresponding to any of these PAs is: * (PA - firstpa + KERNBASE). */ + lwp0upa = nextpa; + nextpa += USPACE; if (RELOC(mmutype, int) == MMU_68040) kstsize = MAXKL2SIZE / (NPTEPG/SG4_LEV2SIZE); else @@ -120,8 +122,6 @@ nextpa += PAGE_SIZE; lkptpa = nextpa; nextpa += PAGE_SIZE; - lwp0upa = nextpa; - nextpa += USPACE; kptpa = nextpa; nptpages = RELOC(Sysptsize, int); nextpa += nptpages * PAGE_SIZE; Index: src/sys/arch/hp300/hp300/pmap_bootstrap.c diff -u src/sys/arch/hp300/hp300/pmap_bootstrap.c:1.41 src/sys/arch/hp300/hp300/pmap_bootstrap.c:1.42 --- src/sys/arch/hp300/hp300/pmap_bootstrap.c:1.41 Fri Dec 4 18:32:31 2009 +++ src/sys/arch/hp300/hp300/pmap_bootstrap.c Fri Dec 4 18:55:14 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_bootstrap.c,v 1.41 2009/12/04 18:32:31 tsutsui Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.42 2009/12/04 18:55:14 tsutsui Exp $ */ /* * Copyright (c) 1991, 1993 @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.41 2009/12/04 18:32:31 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.42 2009/12/04 18:55:14 tsutsui Exp $"); #include <sys/param.h> @@ -101,9 +101,15 @@ /* * Calculate important physical addresses: * + * lwp0upa lwp 0 u-area UPAGES pages + * * kstpa kernel segment table 1 page (!040) * N pages (040) * + * kptmpa kernel PT map 1 page + * + * lkptpa last kernel PT page 1 page + * * kptpa statically allocated * kernel PT pages Sysptsize+ pages * @@ -111,15 +117,11 @@ * EIOMAPSIZE are the number of PTEs, hence we need to round * the total to a page boundary with IO maps at the end. ] * - * kptmpa kernel PT map 1 page - * - * lkptpa last kernel PT page 1 page - * - * lwp0upa lwp 0 u-area UPAGES pages - * * The KVA corresponding to any of these PAs is: * (PA - firstpa + KERNBASE). */ + lwp0upa = nextpa; + nextpa += USPACE; if (RELOC(mmutype, int) == MMU_68040) kstsize = MAXKL2SIZE / (NPTEPG/SG4_LEV2SIZE); else @@ -130,8 +132,6 @@ nextpa += PAGE_SIZE; lkptpa = nextpa; nextpa += PAGE_SIZE; - lwp0upa = nextpa; - nextpa += USPACE; kptpa = nextpa; nptpages = RELOC(Sysptsize, int) + (IIOMAPSIZE + EIOMAPSIZE + NPTEPG - 1) / NPTEPG; Index: src/sys/arch/luna68k/luna68k/pmap_bootstrap.c diff -u src/sys/arch/luna68k/luna68k/pmap_bootstrap.c:1.21 src/sys/arch/luna68k/luna68k/pmap_bootstrap.c:1.22 --- src/sys/arch/luna68k/luna68k/pmap_bootstrap.c:1.21 Fri Dec 4 18:32:31 2009 +++ src/sys/arch/luna68k/luna68k/pmap_bootstrap.c Fri Dec 4 18:55:14 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_bootstrap.c,v 1.21 2009/12/04 18:32:31 tsutsui Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.22 2009/12/04 18:55:14 tsutsui Exp $ */ /* * Copyright (c) 1991, 1993 @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.21 2009/12/04 18:32:31 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.22 2009/12/04 18:55:14 tsutsui Exp $"); #include <sys/param.h> @@ -92,9 +92,13 @@ /* * Calculate important physical addresses: * + * lwp0upa lwp 0 u-area UPAGES pages + * * kstpa kernel segment table 1 page (!040) * N pages (040) * + * kptmpa kernel PT map 1 page + * * kptpa statically allocated * kernel PT pages Sysptsize+ pages * @@ -102,16 +106,14 @@ * is the number of PTEs, hence we need to round * the total to a page boundary with IO maps at the end. ] * - * kptmpa kernel PT map 1 page - * - * lwp0upa lwp 0 u-area UPAGES pages - * * The KVA corresponding to any of these PAs is: * (PA - firstpa + KERNBASE). */ iiomapsize = m68k_btop(RELOC(intiotop_phys, u_int) - RELOC(intiobase_phys, u_int)); + lwp0upa = nextpa; + nextpa += USPACE; if (RELOC(mmutype, int) == MMU_68040) kstsize = MAXKL2SIZE / (NPTEPG/SG4_LEV2SIZE); else @@ -120,8 +122,6 @@ nextpa += kstsize * PAGE_SIZE; kptmpa = nextpa; nextpa += PAGE_SIZE; - lwp0upa = nextpa; - nextpa += USPACE; kptpa = nextpa; nptpages = RELOC(Sysptsize, int) + (iiomapsize + NPTEPG - 1) / NPTEPG; Index: src/sys/arch/mac68k/mac68k/pmap_bootstrap.c diff -u src/sys/arch/mac68k/mac68k/pmap_bootstrap.c:1.82 src/sys/arch/mac68k/mac68k/pmap_bootstrap.c:1.83 --- src/sys/arch/mac68k/mac68k/pmap_bootstrap.c:1.82 Fri Dec 4 18:32:31 2009 +++ src/sys/arch/mac68k/mac68k/pmap_bootstrap.c Fri Dec 4 18:55:14 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_bootstrap.c,v 1.82 2009/12/04 18:32:31 tsutsui Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.83 2009/12/04 18:55:14 tsutsui Exp $ */ /* * Copyright (c) 1991, 1993 @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.82 2009/12/04 18:32:31 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.83 2009/12/04 18:55:14 tsutsui Exp $"); #include "opt_ddb.h" #include "opt_kgdb.h" @@ -126,9 +126,13 @@ /* * Calculate important physical addresses: * + * lwp0upa lwp 0 u-area UPAGES pages + * * kstpa kernel segment table 1 page (!040) * N pages (040) * + * kptmpa kernel PT map 1 page + * * kptpa statically allocated * kernel PT pages Sysptsize+ pages * @@ -136,11 +140,9 @@ * NBMAPSIZE are the number of PTEs, hence we need to round * the total to a page boundary with IO maps at the end. ] * - * kptmpa kernel PT map 1 page - * - * lwp0upa lwp 0 u-area UPAGES pages - * */ + lwp0upa = nextpa; + nextpa += USPACE; if (mmutype == MMU_68040) kstsize = MAXKL2SIZE / (NPTEPG/SG4_LEV2SIZE); else @@ -149,8 +151,6 @@ nextpa += kstsize * PAGE_SIZE; kptmpa = nextpa; nextpa += PAGE_SIZE; - lwp0upa = nextpa; - nextpa += USPACE; kptpa = nextpa; nptpages = Sysptsize + (IIOMAPSIZE + ROMMAPSIZE + VIDMAPSIZE + NPTEPG - 1) / NPTEPG; Index: src/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c diff -u src/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c:1.35 src/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c:1.36 --- src/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c:1.35 Fri Dec 4 18:32:31 2009 +++ src/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c Fri Dec 4 18:55:14 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_bootstrap.c,v 1.35 2009/12/04 18:32:31 tsutsui Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.36 2009/12/04 18:55:14 tsutsui Exp $ */ /* * Copyright (c) 1991, 1993 @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.35 2009/12/04 18:32:31 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.36 2009/12/04 18:55:14 tsutsui Exp $"); #include <sys/param.h> #include <sys/kcore.h> @@ -99,9 +99,15 @@ /* * Calculate important physical addresses: * + * lwp0upa lwp0 0 u-area UPAGES pages + * * kstpa kernel segment table 1 page (!040) * N pages (040) * + * kptmpa kernel PT map 1 page + * + * lkptpa last kernel PT page 1 page + * * kptpa statically allocated * kernel PT pages Sysptsize+ pages * @@ -109,12 +115,6 @@ * number of PTEs, hence we need to round the total to a page * boundary with IO maps at the end. ] * - * kptmpa kernel PT map 1 page - * - * lkptpa last kernel PT page 1 page - * - * lwp0upa lwp0 0 u-area UPAGES pages - * * The KVA corresponding to any of these PAs is: * (PA - firstpa + KERNBASE). */ Index: src/sys/arch/news68k/news68k/pmap_bootstrap.c diff -u src/sys/arch/news68k/news68k/pmap_bootstrap.c:1.25 src/sys/arch/news68k/news68k/pmap_bootstrap.c:1.26 --- src/sys/arch/news68k/news68k/pmap_bootstrap.c:1.25 Fri Dec 4 18:32:31 2009 +++ src/sys/arch/news68k/news68k/pmap_bootstrap.c Fri Dec 4 18:55:14 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_bootstrap.c,v 1.25 2009/12/04 18:32:31 tsutsui Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.26 2009/12/04 18:55:14 tsutsui Exp $ */ /* * Copyright (c) 1991, 1993 @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.25 2009/12/04 18:32:31 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.26 2009/12/04 18:55:14 tsutsui Exp $"); #include <sys/param.h> @@ -98,9 +98,13 @@ /* * Calculate important physical addresses: * + * lwp0upa lwp 0 u-area UPAGES pages + * * kstpa kernel segment table 1 page (!040) * N pages (040) * + * kptmpa kernel PT map 1 page + * * kptpa statically allocated * kernel PT pages Sysptsize+ pages * @@ -108,10 +112,6 @@ * EIOMAPSIZE are the number of PTEs, hence we need to round * the total to a page boundary with IO maps at the end. ] * - * kptmpa kernel PT map 1 page - * - * lwp0upa lwp 0 u-area UPAGES pages - * * The KVA corresponding to any of these PAs is: * (PA - firstpa + KERNBASE). */ @@ -124,6 +124,8 @@ eiomapsize = m68k_btop(RELOC(extiotop_phys, u_int) - RELOC(extiobase_phys, u_int)); + lwp0upa = nextpa; + nextpa += USPACE; #ifdef M68040 if (RELOC(mmutype, int) == MMU_68040) kstsize = MAXKL2SIZE / (NPTEPG/SG4_LEV2SIZE); @@ -136,8 +138,6 @@ nextpa += kstsize * PAGE_SIZE; kptmpa = nextpa; nextpa += PAGE_SIZE; - lwp0upa = nextpa; - nextpa += USPACE; kptpa = nextpa; nptpages = RELOC(Sysptsize, int) + (iiomapsize + eiomapsize + NPTEPG - 1) / NPTEPG; Index: src/sys/arch/next68k/next68k/pmap_bootstrap.c diff -u src/sys/arch/next68k/next68k/pmap_bootstrap.c:1.30 src/sys/arch/next68k/next68k/pmap_bootstrap.c:1.31 --- src/sys/arch/next68k/next68k/pmap_bootstrap.c:1.30 Fri Dec 4 18:32:31 2009 +++ src/sys/arch/next68k/next68k/pmap_bootstrap.c Fri Dec 4 18:55:14 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_bootstrap.c,v 1.30 2009/12/04 18:32:31 tsutsui Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.31 2009/12/04 18:55:14 tsutsui Exp $ */ /* * This file was taken from mvme68k/mvme68k/pmap_bootstrap.c @@ -45,7 +45,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.30 2009/12/04 18:32:31 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.31 2009/12/04 18:55:14 tsutsui Exp $"); #include <sys/param.h> #include <sys/kcore.h> @@ -111,9 +111,15 @@ /* * Calculate important physical addresses: * + * lwp0upa lwp 0 u-area UPAGES pages + * * kstpa kernel segment table 1 page (!040) * N pages (040) * + * kptmpa kernel PT map 1 page + * + * lkptpa last kernel PT page 1 page + * * kptpa statically allocated * kernel PT pages Sysptsize+ pages * @@ -121,15 +127,11 @@ * is the number of PTEs, hence we need to round * the total to a page boundary with IO maps at the end. ] * - * kptmpa kernel PT map 1 page - * - * lkptpa last kernel PT page 1 page - * - * lwp0upa lwp 0 u-area UPAGES pages - * * The KVA corresponding to any of these PAs is: * (PA - firstpa + KERNBASE). */ + lwp0upa = nextpa; + nextpa += USPACE; #if defined(M68040) || defined(M68060) if (RELOC(mmutype, int) == MMU_68040) kstsize = MAXKL2SIZE / (NPTEPG/SG4_LEV2SIZE); @@ -142,8 +144,6 @@ nextpa += PAGE_SIZE; lkptpa = nextpa; nextpa += PAGE_SIZE; - lwp0upa = nextpa; - nextpa += USPACE; kptpa = nextpa; nptpages = RELOC(Sysptsize, int) + (IIOMAPSIZE + MONOMAPSIZE + COLORMAPSIZE + NPTEPG - 1) / NPTEPG; @@ -364,7 +364,6 @@ * map the kernel segment table cache invalidated for * these machines (for the 68040 not strictly necessary, but * recommended by Motorola; for the 68060 mandatory) - * XXX this includes lwp0upa. why? */ epte = &((u_int *)kptpa)[m68k_btop(nextpa - firstpa)]; protopte = (protopte & ~PG_PROT) | PG_RW; Index: src/sys/arch/x68k/x68k/pmap_bootstrap.c diff -u src/sys/arch/x68k/x68k/pmap_bootstrap.c:1.44 src/sys/arch/x68k/x68k/pmap_bootstrap.c:1.45 --- src/sys/arch/x68k/x68k/pmap_bootstrap.c:1.44 Fri Dec 4 18:32:31 2009 +++ src/sys/arch/x68k/x68k/pmap_bootstrap.c Fri Dec 4 18:55:14 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_bootstrap.c,v 1.44 2009/12/04 18:32:31 tsutsui Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.45 2009/12/04 18:55:14 tsutsui Exp $ */ /* * Copyright (c) 1991, 1993 @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.44 2009/12/04 18:32:31 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.45 2009/12/04 18:55:14 tsutsui Exp $"); #include "opt_m680x0.h" @@ -92,9 +92,13 @@ /* * Calculate important physical addresses: * + * lwp0upa lwp 0 u-area UPAGES pages + * * kstpa kernel segment table 1 page (!040) * N pages (040) * + * kptmpa kernel PT map 1 page + * * kptpa statically allocated * kernel PT pages Sysptsize+ pages * @@ -102,13 +106,11 @@ * is the number of PTEs, hence we need to round * the total to a page boundary with IO maps at the end. ] * - * kptmpa kernel PT map 1 page - * - * lwp0upa lwp 0 u-area UPAGES pages - * * The KVA corresponding to any of these PAs is: * (PA - firstpa + KERNBASE). */ + lwp0upa = nextpa; + nextpa += USPACE; if (RELOC(mmutype, int) == MMU_68040) kstsize = MAXKL2SIZE / (NPTEPG/SG4_LEV2SIZE); else @@ -117,8 +119,6 @@ nextpa += kstsize * PAGE_SIZE; kptmpa = nextpa; nextpa += PAGE_SIZE; - lwp0upa = nextpa; - nextpa += USPACE; kptpa = nextpa; nptpages = RELOC(Sysptsize, int) + (IIOMAPSIZE + NPTEPG - 1) / NPTEPG; @@ -300,7 +300,6 @@ * map the kernel segment table cache invalidated for * these machines (for the 68040 not strictly necessary, but * recommended by Motorola; for the 68060 mandatory) - * XXX this includes lwp0upa. why? */ epte = &((u_int *)kptpa)[m68k_btop(nextpa - firstpa)]; protopte = (protopte & ~PG_PROT) | PG_RW;