Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/arch/i386/i386/autoconf.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/arch/i386/i386/autoconf.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.8 retrieving revision 1.8.2.2 diff -u -p -r1.8 -r1.8.2.2 --- src/sys/arch/i386/i386/autoconf.c 1993/12/15 09:31:29 1.8 +++ src/sys/arch/i386/i386/autoconf.c 1994/08/15 07:00:21 1.8.2.2 @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)autoconf.c 7.1 (Berkeley) 5/9/91 - * $Id: autoconf.c,v 1.8 1993/12/15 09:31:29 mycroft Exp $ + * $Id: autoconf.c,v 1.8.2.2 1994/08/15 07:00:21 mycroft Exp $ */ /* @@ -45,15 +45,16 @@ * devices are determined (from possibilities mentioned in ioconf.c), * and the drivers are initialized. */ -#include "param.h" -#include "systm.h" -#include "buf.h" -#include "dkstat.h" -#include "conf.h" -#include "dmap.h" -#include "reboot.h" +#include +#include +#include +#include +#include +#include +#include +#include -#include "machine/pte.h" +#include /* * The following several variables are related to @@ -86,6 +87,7 @@ configure() * parameter based on device(s) used. */ swapconf(); + dumpconf(); cold = 0; } @@ -97,27 +99,19 @@ swapconf() register struct swdevt *swp; register int nblks; - for (swp = swdevt; swp->sw_dev > 0; swp++) - { - unsigned d = major(swp->sw_dev); - - if (d > nblkdev) break; - if (bdevsw[d].d_psize) { - nblks = (*bdevsw[d].d_psize)(swp->sw_dev); - if (nblks > 0 && + for (swp = swdevt; swp->sw_dev != NODEV; swp++) { + int maj = major(swp->sw_dev); + + if (maj > nblkdev) + break; + if (bdevsw[maj].d_psize) { + nblks = (*bdevsw[maj].d_psize)(swp->sw_dev); + if (nblks != -1 && (swp->sw_nblks == 0 || swp->sw_nblks > nblks)) swp->sw_nblks = nblks; - else - swp->sw_nblks = 0; + swp->sw_nblks = ctod(dtoc(swp->sw_nblks)); } - swp->sw_nblks = ctod(dtoc(swp->sw_nblks)); } - if (dumplo == 0 && bdevsw[major(dumpdev)].d_psize) - /*dumplo = (*bdevsw[major(dumpdev)].d_psize)(dumpdev) - physmem;*/ - dumplo = (*bdevsw[major(dumpdev)].d_psize)(dumpdev) - - ctob(physmem)/DEV_BSIZE; - if (dumplo < 0) - dumplo = 0; } #define DOSWAP /* change swdevt and dumpdev */ @@ -131,9 +125,6 @@ static char devname[][2] = { 's','d', /* 4 = sd -- new SCSI system */ }; -#define PARTITIONMASK 0x7 -#define PARTITIONSHIFT 3 - /* * Attempt to find the device from which we were booted. * If we can do so, and not instructed not to do so, @@ -155,7 +146,7 @@ setroot() adaptor = (bootdev >> B_ADAPTORSHIFT) & B_ADAPTORMASK; part = (bootdev >> B_PARTITIONSHIFT) & B_PARTITIONMASK; unit = (bootdev >> B_UNITSHIFT) & B_UNITMASK; - mindev = (unit << PARTITIONSHIFT) + part; + mindev = (unit * MAXPARTITIONS) + part; orootdev = rootdev; rootdev = makedev(majdev, mindev); /* @@ -166,24 +157,25 @@ setroot() return; printf("changing root device to %c%c%d%c\n", devname[majdev][0], devname[majdev][1], - mindev >> PARTITIONSHIFT, part + 'a'); + unit, part + 'a'); + #ifdef DOSWAP - mindev &= ~PARTITIONMASK; - for (swp = swdevt; swp->sw_dev; swp++) { + for (swp = swdevt; swp->sw_dev != NODEV; swp++) { if (majdev == major(swp->sw_dev) && - mindev == (minor(swp->sw_dev) & ~PARTITIONMASK)) { - + (mindev / MAXPARTITIONS) + == (minor(swp->sw_dev) / MAXPARTITIONS)) { temp = swdevt[0].sw_dev; swdevt[0].sw_dev = swp->sw_dev; swp->sw_dev = temp; break; } } - if (swp->sw_dev == 0) + if (swp->sw_dev == NODEV) return; + /* - * If dumpdev was the same as the old primary swap - * device, move it to the new primary swap device. + * If dumpdev was the same as the old primary swap device, move + * it to the new primary swap device. */ if (temp == dumpdev) dumpdev = swdevt[0].sw_dev;