X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/fde1aeb2eee5a780dd6f91f3f55568543873e719..c2714ef59c9198e2c0d7aaf2cb07b9daddbf4490:/sys/i386/i386/autoconf.c diff --git a/sys/i386/i386/autoconf.c b/sys/i386/i386/autoconf.c index 917137c30a..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.5 1993/11/25 01:30:46 wollman Exp $ + * $Id: autoconf.c,v 1.11 1994/03/21 15:02:47 ache Exp $ */ /* @@ -79,12 +79,14 @@ configure() isa_configure(); #endif -#if GENERICxxx +#if GENERICxxx && !defined(DISKLESS) if ((boothowto & RB_ASKNAME) == 0) setroot(); setconf(); #else +#ifndef DISKLESS setroot(); +#endif #endif /* * Configure swap area and related system @@ -102,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++) { @@ -120,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) @@ -133,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 */ @@ -140,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. @@ -161,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); /* @@ -174,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++) {