vm_machdep.c (3436) | vm_machdep.c (5455) |
---|---|
1/*- 2 * Copyright (c) 1982, 1986 The Regents of the University of California. 3 * Copyright (c) 1989, 1990 William Jolitz 4 * Copyright (c) 1994 John Dyson 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to Berkeley by 8 * the Systems Programming Group of the University of Utah Computer --- 24 unchanged lines hidden (view full) --- 33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 37 * SUCH DAMAGE. 38 * 39 * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91 40 * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$ | 1/*- 2 * Copyright (c) 1982, 1986 The Regents of the University of California. 3 * Copyright (c) 1989, 1990 William Jolitz 4 * Copyright (c) 1994 John Dyson 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to Berkeley by 8 * the Systems Programming Group of the University of Utah Computer --- 24 unchanged lines hidden (view full) --- 33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 37 * SUCH DAMAGE. 38 * 39 * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91 40 * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$ |
41 * $Id: vm_machdep.c,v 1.28 1994/09/02 04:12:07 davidg Exp $ | 41 * $Id: vm_machdep.c,v 1.29 1994/10/08 22:19:51 phk Exp $ |
42 */ 43 44#include "npx.h" 45#include <sys/param.h> 46#include <sys/systm.h> 47#include <sys/proc.h> 48#include <sys/malloc.h> 49#include <sys/buf.h> --- 266 unchanged lines hidden (view full) --- 316/* 317 * if any page is above 16MB, then go into bounce-buffer mode 318 */ 319 va = vapstart; 320 for (i = 0; i < countvmpg; i++) { 321 pa = pmap_kextract(va); 322 if (pa >= SIXTEENMEG) 323 ++dobounceflag; | 42 */ 43 44#include "npx.h" 45#include <sys/param.h> 46#include <sys/systm.h> 47#include <sys/proc.h> 48#include <sys/malloc.h> 49#include <sys/buf.h> --- 266 unchanged lines hidden (view full) --- 316/* 317 * if any page is above 16MB, then go into bounce-buffer mode 318 */ 319 va = vapstart; 320 for (i = 0; i < countvmpg; i++) { 321 pa = pmap_kextract(va); 322 if (pa >= SIXTEENMEG) 323 ++dobounceflag; |
324 if( pa == 0) 325 panic("vm_bounce_alloc: Unmapped page"); |
|
324 va += NBPG; 325 } 326 if (dobounceflag == 0) 327 return; 328 329 if (bouncepages < dobounceflag) 330 panic("Not enough bounce buffers!!!"); 331 --- 155 unchanged lines hidden (view full) --- 487 return; 488 489 bounceallocarraysize = (bouncepages + BITS_IN_UNSIGNED - 1) / BITS_IN_UNSIGNED; 490 bounceallocarray = malloc(bounceallocarraysize * sizeof(unsigned), M_TEMP, M_NOWAIT); 491 492 if (!bounceallocarray) 493 panic("Cannot allocate bounce resource array\n"); 494 | 326 va += NBPG; 327 } 328 if (dobounceflag == 0) 329 return; 330 331 if (bouncepages < dobounceflag) 332 panic("Not enough bounce buffers!!!"); 333 --- 155 unchanged lines hidden (view full) --- 489 return; 490 491 bounceallocarraysize = (bouncepages + BITS_IN_UNSIGNED - 1) / BITS_IN_UNSIGNED; 492 bounceallocarray = malloc(bounceallocarraysize * sizeof(unsigned), M_TEMP, M_NOWAIT); 493 494 if (!bounceallocarray) 495 panic("Cannot allocate bounce resource array\n"); 496 |
495 bzero(bounceallocarray, bounceallocarraysize * sizeof(unsigned)); | |
496 bouncepa = malloc(bouncepages * sizeof(vm_offset_t), M_TEMP, M_NOWAIT); 497 if (!bouncepa) 498 panic("Cannot allocate physical memory array\n"); 499 | 497 bouncepa = malloc(bouncepages * sizeof(vm_offset_t), M_TEMP, M_NOWAIT); 498 if (!bouncepa) 499 panic("Cannot allocate physical memory array\n"); 500 |
501 for(i=0;i<bounceallocarraysize;i++) { 502 bounceallocarray[i] = 0xffffffff; 503 } 504 |
|
500 for(i=0;i<bouncepages;i++) { 501 vm_offset_t pa; 502 if( (pa = pmap_kextract((vm_offset_t) bouncememory + i * NBPG)) >= SIXTEENMEG) 503 panic("bounce memory out of range"); 504 if( pa == 0) 505 panic("bounce memory not resident"); 506 bouncepa[i] = pa; | 505 for(i=0;i<bouncepages;i++) { 506 vm_offset_t pa; 507 if( (pa = pmap_kextract((vm_offset_t) bouncememory + i * NBPG)) >= SIXTEENMEG) 508 panic("bounce memory out of range"); 509 if( pa == 0) 510 panic("bounce memory not resident"); 511 bouncepa[i] = pa; |
512 bounceallocarray[i/(8*sizeof(int))] &= ~(1<<(i%(8*sizeof(int)))); |
|
507 } 508 bouncefree = bouncepages; 509 510} 511#endif /* BOUNCE_BUFFERS */ 512/* 513 * quick version of vm_fault 514 */ --- 83 unchanged lines hidden (view full) --- 598 panic("cpu_exit"); 599} 600 601void 602cpu_wait(p) struct proc *p; { 603/* extern vm_map_t upages_map; */ 604 605 /* drop per-process resources */ | 513 } 514 bouncefree = bouncepages; 515 516} 517#endif /* BOUNCE_BUFFERS */ 518/* 519 * quick version of vm_fault 520 */ --- 83 unchanged lines hidden (view full) --- 604 panic("cpu_exit"); 605} 606 607void 608cpu_wait(p) struct proc *p; { 609/* extern vm_map_t upages_map; */ 610 611 /* drop per-process resources */ |
606 pmap_remove(vm_map_pmap(kernel_map), (vm_offset_t) p->p_addr, | 612 pmap_remove(vm_map_pmap(u_map), (vm_offset_t) p->p_addr, |
607 ((vm_offset_t) p->p_addr) + ctob(UPAGES)); | 613 ((vm_offset_t) p->p_addr) + ctob(UPAGES)); |
608 kmem_free(kernel_map, (vm_offset_t)p->p_addr, ctob(UPAGES)); | 614 kmem_free(u_map, (vm_offset_t)p->p_addr, ctob(UPAGES)); |
609 vmspace_free(p->p_vmspace); 610} 611 612/* 613 * Dump the machine specific header information at the start of a core dump. 614 */ 615int 616cpu_coredump(p, vp, cred) --- 255 unchanged lines hidden --- | 615 vmspace_free(p->p_vmspace); 616} 617 618/* 619 * Dump the machine specific header information at the start of a core dump. 620 */ 621int 622cpu_coredump(p, vp, cred) --- 255 unchanged lines hidden --- |