Module Name: src Committed By: tsutsui Date: Sun Jan 2 05:18:04 UTC 2011
Modified Files: src/sys/arch/hp300/hp300: 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. Tested on HP362 (030) and HP382 (040), and no visible performance difference. (what should we do per "for the 68040 not strictly necessary but recommended by Motorola" comment?) To generate a diff of this commit: cvs rdiff -u -r1.47 -r1.48 src/sys/arch/hp300/hp300/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/hp300/hp300/pmap_bootstrap.c diff -u src/sys/arch/hp300/hp300/pmap_bootstrap.c:1.47 src/sys/arch/hp300/hp300/pmap_bootstrap.c:1.48 --- src/sys/arch/hp300/hp300/pmap_bootstrap.c:1.47 Sat Dec 25 14:43:00 2010 +++ src/sys/arch/hp300/hp300/pmap_bootstrap.c Sun Jan 2 05:18:04 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_bootstrap.c,v 1.47 2010/12/25 14:43:00 tsutsui Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.48 2011/01/02 05:18:04 tsutsui Exp $ */ /* * Copyright (c) 1991, 1993 @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.47 2010/12/25 14:43:00 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.48 2011/01/02 05:18:04 tsutsui Exp $"); #include <sys/param.h> @@ -365,11 +365,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 @@ -381,6 +381,23 @@ 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 (RELOC(mmutype, int) == MMU_68040) { + protopte &= ~PG_CCB; + protopte |= PG_CIN; + } + while (pte < epte) { + *pte++ = protopte; + protopte += PAGE_SIZE; + } + + /* * Finally, validate the internal IO space PTEs (RW+CI). * We do this here since the 320/350 MMU registers (also * used, but to a lesser extent, on other models) are mapped