`mem' is now a pointer, not an array. Fixes kernel coredumps.

This commit is contained in:
eeh 2000-08-01 16:49:47 +00:00
parent c8c5d91d87
commit a8cd48f9e6
1 changed files with 4 additions and 11 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: machdep.c,v 1.85 2000/08/01 00:40:18 eeh Exp $ */ /* $NetBSD: machdep.c,v 1.86 2000/08/01 16:49:47 eeh Exp $ */
/*- /*-
* Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
@ -881,7 +881,7 @@ dumpsys()
register int (*dump) __P((dev_t, daddr_t, caddr_t, size_t)); register int (*dump) __P((dev_t, daddr_t, caddr_t, size_t));
int error = 0; int error = 0;
register struct mem_region *mp; register struct mem_region *mp;
extern struct mem_region mem[]; extern struct mem_region *mem;
/* copy registers to memory */ /* copy registers to memory */
snapshot(cpcb); snapshot(cpcb);
@ -924,16 +924,15 @@ printf("starting dump, blkno %d\n", blkno);
unsigned i = 0, n; unsigned i = 0, n;
paddr_t maddr = mp->start; paddr_t maddr = mp->start;
#if 0
/* Remind me: why don't we dump page 0 ? */
if (maddr == 0) { if (maddr == 0) {
/* Skip first page at physical address 0 */ /* Skip first page at physical address 0 */
maddr += NBPG; maddr += NBPG;
i += NBPG; i += NBPG;
blkno += btodb(NBPG); blkno += btodb(NBPG);
} }
#if 0
printf("dumping segment at %llx\n", maddr);
#endif #endif
for (; i < mp->size; i += n) { for (; i < mp->size; i += n) {
n = mp->size - i; n = mp->size - i;
if (n > BYTES_PER_DUMP) if (n > BYTES_PER_DUMP)
@ -944,14 +943,8 @@ printf("dumping segment at %llx\n", maddr);
printf("%d ", i / (1024*1024)); printf("%d ", i / (1024*1024));
(void) pmap_enter(pmap_kernel(), dumpspace, maddr, (void) pmap_enter(pmap_kernel(), dumpspace, maddr,
VM_PROT_READ, VM_PROT_READ|PMAP_WIRED); VM_PROT_READ, VM_PROT_READ|PMAP_WIRED);
#if 0
printf("calling dump of %llx\n", maddr);
#endif
error = (*dump)(dumpdev, blkno, error = (*dump)(dumpdev, blkno,
(caddr_t)dumpspace, (int)n); (caddr_t)dumpspace, (int)n);
#if 0
printf("%llx done\n", maddr);
#endif
pmap_remove(pmap_kernel(), dumpspace, dumpspace + n); pmap_remove(pmap_kernel(), dumpspace, dumpspace + n);
if (error) if (error)
break; break;