Sun Oct 5 02:07:39 2008 UTC ()
pool_cache: use BLOCK_SIZE as alignment.
pmap_pv_cache: use large size groups (PR_LARGECACHE) like x86.


(nakayama)
diff -r1.221 -r1.222 src/sys/arch/sparc64/sparc64/pmap.c

cvs diff -r1.221 -r1.222 src/sys/arch/sparc64/sparc64/pmap.c (expand / switch to unified diff)

--- src/sys/arch/sparc64/sparc64/pmap.c 2008/09/23 21:30:11 1.221
+++ src/sys/arch/sparc64/sparc64/pmap.c 2008/10/05 02:07:39 1.222
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: pmap.c,v 1.221 2008/09/23 21:30:11 martin Exp $ */ 1/* $NetBSD: pmap.c,v 1.222 2008/10/05 02:07:39 nakayama Exp $ */
2/* 2/*
3 * 3 *
4 * Copyright (C) 1996-1999 Eduardo Horvath. 4 * Copyright (C) 1996-1999 Eduardo Horvath.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
10 * are met: 10 * are met:
11 * 1. Redistributions of source code must retain the above copyright 11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer. 12 * notice, this list of conditions and the following disclaimer.
13 * 13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND 14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
@@ -16,27 +16,27 @@ @@ -16,27 +16,27 @@
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE 17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE. 24 * SUCH DAMAGE.
25 * 25 *
26 */ 26 */
27 27
28#include <sys/cdefs.h> 28#include <sys/cdefs.h>
29__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.221 2008/09/23 21:30:11 martin Exp $"); 29__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.222 2008/10/05 02:07:39 nakayama Exp $");
30 30
31#undef NO_VCACHE /* Don't forget the locked TLB in dostart */ 31#undef NO_VCACHE /* Don't forget the locked TLB in dostart */
32#define HWREF 32#define HWREF
33 33
34#include "opt_ddb.h" 34#include "opt_ddb.h"
35#include "opt_multiprocessor.h" 35#include "opt_multiprocessor.h"
36 36
37#include <sys/param.h> 37#include <sys/param.h>
38#include <sys/malloc.h> 38#include <sys/malloc.h>
39#include <sys/queue.h> 39#include <sys/queue.h>
40#include <sys/systm.h> 40#include <sys/systm.h>
41#include <sys/msgbuf.h> 41#include <sys/msgbuf.h>
42#include <sys/pool.h> 42#include <sys/pool.h>
@@ -1249,30 +1249,30 @@ pmap_init() @@ -1249,30 +1249,30 @@ pmap_init()
1249 1 /* priv */, 1249 1 /* priv */,
1250 1 /* Write */, 1250 1 /* Write */,
1251 1 /* Cacheable */, 1251 1 /* Cacheable */,
1252 FORCE_ALIAS /* ALIAS -- Disable D$ */, 1252 FORCE_ALIAS /* ALIAS -- Disable D$ */,
1253 1 /* valid */, 1253 1 /* valid */,
1254 0 /* IE */); 1254 0 /* IE */);
1255 pmap_enter_kpage(va, data); 1255 pmap_enter_kpage(va, data);
1256 va += PAGE_SIZE; 1256 va += PAGE_SIZE;
1257 } 1257 }
1258 1258
1259 /* 1259 /*
1260 * initialize the pmap pools. 1260 * initialize the pmap pools.
1261 */ 1261 */
1262 pool_cache_bootstrap(&pmap_cache, sizeof(struct pmap), 0, 0, 0, 1262 pool_cache_bootstrap(&pmap_cache, sizeof(struct pmap), BLOCK_SIZE, 0,
1263 "pmappl", NULL, IPL_NONE, NULL, NULL, NULL); 1263 0, "pmappl", NULL, IPL_NONE, NULL, NULL, NULL);
1264 pool_cache_bootstrap(&pmap_pv_cache, sizeof(struct pv_entry), 0, 0, 0, 1264 pool_cache_bootstrap(&pmap_pv_cache, sizeof(struct pv_entry), 0, 0,
1265 "pv_entry", NULL, IPL_NONE, NULL, NULL, NULL); 1265 PR_LARGECACHE, "pv_entry", NULL, IPL_NONE, NULL, NULL, NULL);
1266 1266
1267 vm_first_phys = avail_start; 1267 vm_first_phys = avail_start;
1268 vm_num_phys = avail_end - avail_start; 1268 vm_num_phys = avail_end - avail_start;
1269 1269
1270 mutex_init(&pmap_lock, MUTEX_DEFAULT, IPL_NONE); 1270 mutex_init(&pmap_lock, MUTEX_DEFAULT, IPL_NONE);
1271} 1271}
1272 1272
1273/* 1273/*
1274 * How much virtual space is available to the kernel? 1274 * How much virtual space is available to the kernel?
1275 */ 1275 */
1276static vaddr_t kbreak; /* End of kernel VA */ 1276static vaddr_t kbreak; /* End of kernel VA */
1277void 1277void
1278pmap_virtual_space(start, end) 1278pmap_virtual_space(start, end)