pmap.c (95232) | pmap.c (95710) |
---|---|
1/* 2 * Copyright (c) 1991 Regents of the University of California. 3 * All rights reserved. 4 * Copyright (c) 1994 John S. Dyson 5 * All rights reserved. 6 * Copyright (c) 1994 David Greenman 7 * All rights reserved. 8 * --- 25 unchanged lines hidden (view full) --- 34 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 35 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 38 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 39 * SUCH DAMAGE. 40 * 41 * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 | 1/* 2 * Copyright (c) 1991 Regents of the University of California. 3 * All rights reserved. 4 * Copyright (c) 1994 John S. Dyson 5 * All rights reserved. 6 * Copyright (c) 1994 David Greenman 7 * All rights reserved. 8 * --- 25 unchanged lines hidden (view full) --- 34 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 35 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 38 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 39 * SUCH DAMAGE. 40 * 41 * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 |
42 * $FreeBSD: head/sys/sparc64/sparc64/pmap.c 95232 2002-04-21 22:57:42Z jake $ | 42 * $FreeBSD: head/sys/sparc64/sparc64/pmap.c 95710 2002-04-29 07:43:16Z peter $ |
43 */ 44 45/* 46 * Manages physical address maps. 47 * 48 * In addition to hardware address maps, this module is called upon to 49 * provide software-use-only maps which may or may not be stored in the 50 * same form as hardware maps. These pseudo-maps are used to store --- 350 unchanged lines hidden (view full) --- 401 402 /* 403 * Initialize the kernel pmap (which is statically allocated). 404 */ 405 pm = kernel_pmap; 406 for (i = 0; i < MAXCPU; i++) 407 pm->pm_context[i] = TLB_CTX_KERNEL; 408 pm->pm_active = ~0; | 43 */ 44 45/* 46 * Manages physical address maps. 47 * 48 * In addition to hardware address maps, this module is called upon to 49 * provide software-use-only maps which may or may not be stored in the 50 * same form as hardware maps. These pseudo-maps are used to store --- 350 unchanged lines hidden (view full) --- 401 402 /* 403 * Initialize the kernel pmap (which is statically allocated). 404 */ 405 pm = kernel_pmap; 406 for (i = 0; i < MAXCPU; i++) 407 pm->pm_context[i] = TLB_CTX_KERNEL; 408 pm->pm_active = ~0; |
409 pm->pm_count = 1; | |
410 TAILQ_INIT(&pm->pm_pvlist); 411 412 /* XXX flush all non-locked tlb entries */ 413} 414 415void 416pmap_map_tsb(void) 417{ --- 693 unchanged lines hidden (view full) --- 1111void 1112pmap_pinit0(pmap_t pm) 1113{ 1114 int i; 1115 1116 for (i = 0; i < MAXCPU; i++) 1117 pm->pm_context[i] = 0; 1118 pm->pm_active = 0; | 409 TAILQ_INIT(&pm->pm_pvlist); 410 411 /* XXX flush all non-locked tlb entries */ 412} 413 414void 415pmap_map_tsb(void) 416{ --- 693 unchanged lines hidden (view full) --- 1110void 1111pmap_pinit0(pmap_t pm) 1112{ 1113 int i; 1114 1115 for (i = 0; i < MAXCPU; i++) 1116 pm->pm_context[i] = 0; 1117 pm->pm_active = 0; |
1119 pm->pm_count = 1; | |
1120 pm->pm_tsb = NULL; 1121 pm->pm_tsb_obj = NULL; 1122 TAILQ_INIT(&pm->pm_pvlist); 1123 bzero(&pm->pm_stats, sizeof(pm->pm_stats)); 1124} 1125 1126/* 1127 * Initialize a preallocated and zeroed pmap structure, uch as one in a --- 34 unchanged lines hidden (view full) --- 1162 1163 ma[i] = m; 1164 } 1165 pmap_qenter((vm_offset_t)pm->pm_tsb, ma, TSB_PAGES); 1166 1167 for (i = 0; i < MAXCPU; i++) 1168 pm->pm_context[i] = -1; 1169 pm->pm_active = 0; | 1118 pm->pm_tsb = NULL; 1119 pm->pm_tsb_obj = NULL; 1120 TAILQ_INIT(&pm->pm_pvlist); 1121 bzero(&pm->pm_stats, sizeof(pm->pm_stats)); 1122} 1123 1124/* 1125 * Initialize a preallocated and zeroed pmap structure, uch as one in a --- 34 unchanged lines hidden (view full) --- 1160 1161 ma[i] = m; 1162 } 1163 pmap_qenter((vm_offset_t)pm->pm_tsb, ma, TSB_PAGES); 1164 1165 for (i = 0; i < MAXCPU; i++) 1166 pm->pm_context[i] = -1; 1167 pm->pm_active = 0; |
1170 pm->pm_count = 1; | |
1171 TAILQ_INIT(&pm->pm_pvlist); 1172 bzero(&pm->pm_stats, sizeof(pm->pm_stats)); 1173} 1174 1175void 1176pmap_pinit2(pmap_t pmap) 1177{ 1178 /* XXX: Remove this stub when no longer called */ --- 36 unchanged lines hidden (view full) --- 1215 * Grow the number of kernel page table entries. Unneeded. 1216 */ 1217void 1218pmap_growkernel(vm_offset_t addr) 1219{ 1220} 1221 1222/* | 1168 TAILQ_INIT(&pm->pm_pvlist); 1169 bzero(&pm->pm_stats, sizeof(pm->pm_stats)); 1170} 1171 1172void 1173pmap_pinit2(pmap_t pmap) 1174{ 1175 /* XXX: Remove this stub when no longer called */ --- 36 unchanged lines hidden (view full) --- 1212 * Grow the number of kernel page table entries. Unneeded. 1213 */ 1214void 1215pmap_growkernel(vm_offset_t addr) 1216{ 1217} 1218 1219/* |
1223 * Retire the given physical map from service. Pmaps are always allocated 1224 * as part of a larger structure, so this never happens. 1225 */ 1226void 1227pmap_destroy(pmap_t pm) 1228{ 1229 panic("pmap_destroy: unimplemented"); 1230} 1231 1232/* 1233 * Add a reference to the specified pmap. 1234 */ 1235void 1236pmap_reference(pmap_t pm) 1237{ 1238 if (pm != NULL) 1239 pm->pm_count++; 1240} 1241 1242/* | |
1243 * This routine is very drastic, but can save the system 1244 * in a pinch. 1245 */ 1246void 1247pmap_collect(void) 1248{ 1249 static int warningdone; 1250 vm_page_t m; --- 584 unchanged lines hidden --- | 1220 * This routine is very drastic, but can save the system 1221 * in a pinch. 1222 */ 1223void 1224pmap_collect(void) 1225{ 1226 static int warningdone; 1227 vm_page_t m; --- 584 unchanged lines hidden --- |