Module Name: src Committed By: tsutsui Date: Sun Jan 2 18:39:11 UTC 2011
Modified Files: src/sys/arch/cesfic/cesfic: pmap_bootstrap.c src/sys/arch/luna68k/luna68k: pmap_bootstrap.c Log Message: Pull code that maps the kernel segment table cache invalidated for 040/060, to reduce diffs from other m68k ports. Compile test only. (any working machine for these port?) To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/sys/arch/cesfic/cesfic/pmap_bootstrap.c cvs rdiff -u -r1.30 -r1.31 src/sys/arch/luna68k/luna68k/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.29 src/sys/arch/cesfic/cesfic/pmap_bootstrap.c:1.30 --- src/sys/arch/cesfic/cesfic/pmap_bootstrap.c:1.29 Sun Jan 2 08:40:54 2011 +++ src/sys/arch/cesfic/cesfic/pmap_bootstrap.c Sun Jan 2 18:39:11 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_bootstrap.c,v 1.29 2011/01/02 08:40:54 tsutsui Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.30 2011/01/02 18:39:11 tsutsui Exp $ */ /* * Copyright (c) 1991, 1993 @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.29 2011/01/02 08:40:54 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.30 2011/01/02 18:39:11 tsutsui Exp $"); #include <sys/param.h> #include <uvm/uvm_extern.h> @@ -343,18 +343,33 @@ } /* * Validate PTEs for kernel data/bss, dynamic data allocated - * by us so far (nextpa - firstpa bytes), and pages for lwp0 + * by us so far (kstpa - firstpa bytes), and pages for lwp0 * u-area and page table allocated below (RW). */ epte = (pt_entry_t *)kptpa; - epte = &epte[m68k_btop(KERNBASE + nextpa - firstpa)]; + epte = &epte[m68k_btop(KERNBASE + kstpa - firstpa)]; protopte = (protopte & ~PG_PROT) | PG_RW; /* * Enable copy-back caching of data pages */ if (RELOC(mmutype, int) == MMU_68040) protopte |= PG_CCB; - + while (pte < epte) { + *pte++ = protopte; + protopte += PAGE_SIZE; + } + /* + * map the kernel segment table cache invalidated for + * these machines (for the 68040 not strictly necessary, but + * recommended by Motorola; for the 68060 mandatory) + */ + epte = (pt_entry_t *)kptpa; + epte = &epte[m68k_btop(KERNBASE + nextpa - firstpa)]; + protopte = (protopte & ~PG_PROT) | PG_RW; + if (RELOC(mmutype, int) == MMU_68040) { + protopte &= ~PG_CCB; + protopte |= PG_CIN; + } while (pte < epte) { *pte++ = protopte; protopte += PAGE_SIZE; Index: src/sys/arch/luna68k/luna68k/pmap_bootstrap.c diff -u src/sys/arch/luna68k/luna68k/pmap_bootstrap.c:1.30 src/sys/arch/luna68k/luna68k/pmap_bootstrap.c:1.31 --- src/sys/arch/luna68k/luna68k/pmap_bootstrap.c:1.30 Sun Jan 2 08:40:54 2011 +++ src/sys/arch/luna68k/luna68k/pmap_bootstrap.c Sun Jan 2 18:39:11 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_bootstrap.c,v 1.30 2011/01/02 08:40:54 tsutsui Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.31 2011/01/02 18:39:11 tsutsui Exp $ */ /* * Copyright (c) 1991, 1993 @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.30 2011/01/02 08:40:54 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.31 2011/01/02 18:39:11 tsutsui Exp $"); #include "opt_m68k_arch.h" @@ -321,11 +321,11 @@ } /* * Validate PTEs for kernel data/bss, dynamic data allocated - * by us so far (nextpa - firstpa bytes), and pages for lwp0 + * by us so far (kstpa - firstpa bytes), and pages for lwp0 * u-area and page table allocated below (RW). */ epte = (pt_entry_t *)kptpa; - epte = &epte[m68k_btop(nextpa - firstpa)]; + epte = &epte[m68k_btop(kstpa - firstpa)]; protopte = (protopte & ~PG_PROT) | PG_RW; /* * Enable copy-back caching of data pages @@ -336,6 +336,24 @@ *pte++ = protopte; protopte += PAGE_SIZE; } + /* + * map the kernel segment table cache invalidated for + * these machines (for the 68040 not strictly necessary, but + * recommended by Motorola; for the 68060 mandatory) + */ + epte = (pt_entry_t *)kptpa; + epte = &epte[m68k_btop(nextpa - firstpa)]; + protopte = (protopte & ~PG_PROT) | PG_RW; +#if defined(M68040) + if (RELOC(mmutype, int) == MMU_68040) { + protopte &= ~PG_CCB; + protopte |= PG_CIN; + } +#endif + while (pte < epte) { + *pte++ = protopte; + protopte += PAGE_SIZE; + } /* * Finally, validate the internal IO space PTEs (RW+CI).