Module Name: src Committed By: mrg Date: Sun Mar 25 02:31:00 UTC 2012
Modified Files: src/sys/arch/sparc64/sparc64: pmap.c Log Message: reduce the #ifdef DEBUG usage by using the optimiser. To generate a diff of this commit: cvs rdiff -u -r1.277 -r1.278 src/sys/arch/sparc64/sparc64/pmap.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/sparc64/sparc64/pmap.c diff -u src/sys/arch/sparc64/sparc64/pmap.c:1.277 src/sys/arch/sparc64/sparc64/pmap.c:1.278 --- src/sys/arch/sparc64/sparc64/pmap.c:1.277 Sun Mar 18 23:48:00 2012 +++ src/sys/arch/sparc64/sparc64/pmap.c Sun Mar 25 02:31:00 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.277 2012/03/18 23:48:00 mrg Exp $ */ +/* $NetBSD: pmap.c,v 1.278 2012/03/25 02:31:00 mrg Exp $ */ /* * * Copyright (C) 1996-1999 Eduardo Horvath. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.277 2012/03/18 23:48:00 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.278 2012/03/25 02:31:00 mrg Exp $"); #undef NO_VCACHE /* Don't forget the locked TLB in dostart */ #define HWREF @@ -260,7 +260,34 @@ tsb_invalidate(vaddr_t va, pmap_t pm) struct prom_map *prom_map; int prom_map_size; -#ifdef DEBUG +#define PDB_CREATE 0x000001 +#define PDB_DESTROY 0x000002 +#define PDB_REMOVE 0x000004 +#define PDB_CHANGEPROT 0x000008 +#define PDB_ENTER 0x000010 +#define PDB_DEMAP 0x000020 /* used in locore */ +#define PDB_REF 0x000040 +#define PDB_COPY 0x000080 +#define PDB_MMU_ALLOC 0x000100 +#define PDB_MMU_STEAL 0x000200 +#define PDB_CTX_ALLOC 0x000400 +#define PDB_CTX_STEAL 0x000800 +#define PDB_MMUREG_ALLOC 0x001000 +#define PDB_MMUREG_STEAL 0x002000 +#define PDB_CACHESTUFF 0x004000 +#define PDB_ALIAS 0x008000 +#define PDB_EXTRACT 0x010000 +#define PDB_BOOT 0x020000 +#define PDB_BOOT1 0x040000 +#define PDB_GROW 0x080000 +#define PDB_CTX_FLUSHALL 0x100000 +#define PDB_ACTIVATE 0x200000 + +#if defined(DEBUG) && !defined(PMAP_DEBUG) +#define PMAP_DEBUG +#endif + +#ifdef PMAP_DEBUG struct { int kernel; /* entering kernel mapping */ int user; /* entering user mapping */ @@ -288,28 +315,8 @@ struct { #define ENTER_STAT(x) do { enter_stats.x ++; } while (0) #define REMOVE_STAT(x) do { remove_stats.x ++; } while (0) -#define PDB_CREATE 0x000001 -#define PDB_DESTROY 0x000002 -#define PDB_REMOVE 0x000004 -#define PDB_CHANGEPROT 0x000008 -#define PDB_ENTER 0x000010 -#define PDB_DEMAP 0x000020 /* used in locore */ -#define PDB_REF 0x000040 -#define PDB_COPY 0x000080 -#define PDB_MMU_ALLOC 0x000100 -#define PDB_MMU_STEAL 0x000200 -#define PDB_CTX_ALLOC 0x000400 -#define PDB_CTX_STEAL 0x000800 -#define PDB_MMUREG_ALLOC 0x001000 -#define PDB_MMUREG_STEAL 0x002000 -#define PDB_CACHESTUFF 0x004000 -#define PDB_ALIAS 0x008000 -#define PDB_EXTRACT 0x010000 -#define PDB_BOOT 0x020000 -#define PDB_BOOT1 0x040000 -#define PDB_GROW 0x080000 -#define PDB_CTX_FLUSHALL 0x100000 int pmapdebug = 0; +//int pmapdebug = 0 | PDB_CTX_ALLOC | PDB_ACTIVATE; /* Number of H/W pages stolen for page tables */ int pmap_pages_stolen = 0; @@ -320,6 +327,7 @@ int pmap_pages_stolen = 0; #define REMOVE_STAT(x) do { /* nothing */ } while (0) #define BDPRINTF(n, f) #define DPRINTF(n, f) +#define pmapdebug 0 #endif #define pv_check() @@ -420,10 +428,8 @@ static void pmap_enter_kpage(vaddr_t va, BDPRINTF(PDB_BOOT1, ("pseg_set: pm=%p va=%p data=%lx newp %lx\n", pmap_kernel(), va, (long)data, (long)newp)); -#ifdef DEBUG if (pmapdebug & PDB_BOOT1) {int i; for (i=0; i<140000000; i++) ;} -#endif } } @@ -447,6 +453,8 @@ static void pmap_bootdebug(void) break; } } +#else +#define pmap_bootdebug() /* nothing */ #endif @@ -711,10 +719,7 @@ pmap_bootstrap(u_long kernelstart, u_lon /* Initialize bootstrap allocator. */ kdata_alloc_init(kernelend + 1 * 1024 * 1024, ekdata); -#ifdef DEBUG pmap_bootdebug(); -#endif - pmap_alloc_bootargs(); pmap_mp_init(); @@ -761,7 +766,6 @@ pmap_bootstrap(u_long kernelstart, u_lon phys_installed = prom_memlist; phys_installed_size = prom_memlist_size / sizeof(*phys_installed); -#ifdef DEBUG if (pmapdebug & PDB_BOOT1) { /* print out mem list */ prom_printf("Installed physical memory:\n"); @@ -771,7 +775,6 @@ pmap_bootstrap(u_long kernelstart, u_lon (u_long)phys_installed[i].size); } } -#endif BDPRINTF(PDB_BOOT1, ("Calculating physmem:")); for (i = 0; i < phys_installed_size; i++) @@ -797,7 +800,6 @@ pmap_bootstrap(u_long kernelstart, u_lon prom_map = prom_memlist; prom_map_size = prom_memlist_size / sizeof(struct prom_map); -#ifdef DEBUG if (pmapdebug & PDB_BOOT) { /* print out mem list */ prom_printf("Prom xlations:\n"); @@ -809,7 +811,6 @@ pmap_bootstrap(u_long kernelstart, u_lon } prom_printf("End of prom xlations\n"); } -#endif /* * Here's a quick in-lined reverse bubble sort. It gets rid of @@ -826,7 +827,6 @@ pmap_bootstrap(u_long kernelstart, u_lon } } } -#ifdef DEBUG if (pmapdebug & PDB_BOOT) { /* print out mem list */ prom_printf("Prom xlations:\n"); @@ -838,7 +838,6 @@ pmap_bootstrap(u_long kernelstart, u_lon } prom_printf("End of prom xlations\n"); } -#endif /* * Allocate a ncpu*64KB page for the cpu_info & stack structure now. @@ -875,7 +874,6 @@ pmap_bootstrap(u_long kernelstart, u_lon (u_long)ektext, (u_long)ektextp, (u_long)kdata, (u_long)kdatap, (u_long)ekdata, (u_long)ekdatap)); -#ifdef DEBUG if (pmapdebug & PDB_BOOT1) { /* print out mem list */ prom_printf("Available %lx physical memory before cleanup:\n", @@ -891,7 +889,7 @@ pmap_bootstrap(u_long kernelstart, u_lon prom_printf("kernel physical data size %08lx - %08lx\n", (u_long)kdatap, (u_long)ekdatap); } -#endif + /* * Here's a another quick in-lined bubble sort. */ @@ -983,7 +981,6 @@ pmap_bootstrap(u_long kernelstart, u_lon VM_FREELIST_DEFAULT); } -#ifdef DEBUG if (pmapdebug & PDB_BOOT) { /* print out mem list */ prom_printf("Available physical memory after cleanup:\n"); @@ -993,7 +990,7 @@ pmap_bootstrap(u_long kernelstart, u_lon } prom_printf("End of available physical memory after cleanup\n"); } -#endif + /* * Allocate and clear out pmap_kernel()->pm_segs[] */ @@ -1016,12 +1013,10 @@ pmap_bootstrap(u_long kernelstart, u_lon /* * Tell pmap about our mesgbuf -- Hope this works already */ -#ifdef DEBUG BDPRINTF(PDB_BOOT1, ("Calling consinit()\n")); if (pmapdebug & PDB_BOOT1) consinit(); BDPRINTF(PDB_BOOT1, ("Inserting mesgbuf into pmap_kernel()\n")); -#endif /* it's not safe to call pmap_enter so we need to do this ourselves */ va = (vaddr_t)msgbufp; prom_map_phys(phys_msgbuf, msgbufsiz, (vaddr_t)msgbufp, -1); @@ -1056,9 +1051,7 @@ pmap_bootstrap(u_long kernelstart, u_lon prom_map[i].vsize) break; } -#ifdef DEBUG page_size_map[k].use++; -#endif /* Enter PROM map into pmap_kernel() */ pmap_enter_kpage(prom_map[i].vstart + j, (prom_map[i].tte + j) | TLB_EXEC | @@ -1529,6 +1522,9 @@ pmap_activate_pmap(struct pmap *pmap) if (pmap_ctx(pmap) == 0) { (void) ctx_alloc(pmap); } + DPRINTF(PDB_ACTIVATE, + ("%s: cpu%d activating ctx %d\n", __func__, + cpu_number(), pmap_ctx(pmap))); dmmu_set_secondary_context(pmap_ctx(pmap)); } @@ -1538,6 +1534,10 @@ pmap_activate_pmap(struct pmap *pmap) void pmap_deactivate(struct lwp *l) { + + DPRINTF(PDB_ACTIVATE, + ("%s: cpu%d deactivating ctx %d\n", __func__, + cpu_number(), pmap_ctx(l->l_proc->p_vmspace->vm_map.pmap))); } /* @@ -1595,7 +1595,7 @@ pmap_kenter_pa(vaddr_t va, paddr_t pa, v (long long)ptp); pmap_free_page_noflush(ptp); } -#ifdef DEBUG +#ifdef PMAP_DEBUG i = ptelookup_va(va); if (pmapdebug & PDB_ENTER) prom_printf("pmap_kenter_pa: va=%08x data=%08x:%08x " @@ -1873,7 +1873,7 @@ pmap_enter(struct pmap *pm, vaddr_t va, } mutex_exit(&pmap_lock); -#ifdef DEBUG +#ifdef PMAP_DEBUG i = ptelookup_va(va); if (pmapdebug & PDB_ENTER) prom_printf("pmap_enter: va=%08x data=%08x:%08x " @@ -2125,7 +2125,7 @@ pmap_protect(struct pmap *pm, vaddr_t sv sva = trunc_page(sva); mutex_enter(&pmap_lock); for (; sva < eva; sva += PAGE_SIZE) { -#ifdef DEBUG +#ifdef PMAP_DEBUG /* * Is this part of the permanent 4MB mapping? */ @@ -2222,7 +2222,6 @@ pmap_extract(struct pmap *pm, vaddr_t va } else { data = pseg_get(pm, va); pa = data & TLB_PA_MASK; -#ifdef DEBUG if (pmapdebug & PDB_EXTRACT) { paddr_t npa = ldxa((vaddr_t)&pm->pm_segs[va_to_seg(va)], ASI_PHYS_CACHED); @@ -2250,7 +2249,6 @@ pmap_extract(struct pmap *pm, vaddr_t va } printf(" pseg_get: %lx\n", (long)pa); } -#endif } if ((data & TLB_V) == 0) return (FALSE);