X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/885747433d1b5f3dfe919b77f0da8708b010b28e..c2714ef59c9198e2c0d7aaf2cb07b9daddbf4490:/sys/i386/i386/autoconf.c diff --git a/sys/i386/i386/autoconf.c b/sys/i386/i386/autoconf.c index c9407c1c33..35fcb471a5 100644 --- a/sys/i386/i386/autoconf.c +++ b/sys/i386/i386/autoconf.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)autoconf.c 7.1 (Berkeley) 5/9/91 - * $Id: autoconf.c,v 1.6 1993/12/19 00:49:57 wollman Exp $ + * $Id: autoconf.c,v 1.11 1994/03/21 15:02:47 ache Exp $ */ /* @@ -104,7 +104,7 @@ swapconf() { register struct swdevt *swp; register int nblks; -extern int Maxmem; + extern int Maxmem; for (swp = swdevt; swp->sw_dev > 0; swp++) { @@ -122,7 +122,6 @@ extern int Maxmem; 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) - Maxmem*NBPG/512; if (dumplo < 0) @@ -135,6 +134,7 @@ u_long bootdev = 0; /* should be dev_t, but not until 32 bits */ static char devname[][2] = { 'w','d', /* 0 = wd */ 's','w', /* 1 = sw */ +#define FDMAJOR 2 'f','d', /* 2 = fd */ 'w','t', /* 3 = wt */ 's','d', /* 4 = sd -- new SCSI system */ @@ -142,6 +142,7 @@ static char devname[][2] = { #define PARTITIONMASK 0x7 #define PARTITIONSHIFT 3 +#define FDUNITSHIFT 6 /* * Attempt to find the device from which we were booted. @@ -163,9 +164,15 @@ setroot() if (majdev > sizeof(devname) / sizeof(devname[0])) return; adaptor = (bootdev >> B_ADAPTORSHIFT) & B_ADAPTORMASK; - part = (bootdev >> B_PARTITIONSHIFT) & B_PARTITIONMASK; unit = (bootdev >> B_UNITSHIFT) & B_UNITMASK; - mindev = (unit << PARTITIONSHIFT) + part; + if (majdev == FDMAJOR) { + part = 3; /* raw */ + mindev = unit << FDUNITSHIFT; + } + else { + part = (bootdev >> B_PARTITIONSHIFT) & B_PARTITIONMASK; + mindev = (unit << PARTITIONSHIFT) + part; + } orootdev = rootdev; rootdev = makedev(majdev, mindev); /* @@ -176,7 +183,8 @@ setroot() return; printf("changing root device to %c%c%d%c\n", devname[majdev][0], devname[majdev][1], - mindev >> PARTITIONSHIFT, part + 'a'); + mindev >> (majdev == FDMAJOR ? FDUNITSHIFT : PARTITIONSHIFT), + part + 'a'); #ifdef DOSWAP mindev &= ~PARTITIONMASK; for (swp = swdevt; swp->sw_dev; swp++) {