new bootdev macros, check controller; off by one
authorMike Karels <karels@ucbvax.Berkeley.EDU>
Tue, 9 Feb 1988 05:40:35 +0000 (21:40 -0800)
committerMike Karels <karels@ucbvax.Berkeley.EDU>
Tue, 9 Feb 1988 05:40:35 +0000 (21:40 -0800)
SCCS-vsn: sys/tahoe/tahoe/autoconf.c 1.16
SCCS-vsn: sys/vax/vax/autoconf.c 7.13

usr/src/sys/tahoe/tahoe/autoconf.c
usr/src/sys/vax/vax/autoconf.c

index 0e76e32..12b4eb5 100644 (file)
@@ -1,4 +1,4 @@
-/*     autoconf.c      1.15    87/06/30        */
+/*     autoconf.c      1.16    88/02/08        */
 
 /*
  * Setup the system to run on the current machine.
 
 /*
  * Setup the system to run on the current machine.
@@ -486,19 +486,20 @@ static    char devname[][2] = {
  */
 setroot()
 {
  */
 setroot()
 {
-       int  majdev, mindev, unit, part, adaptor;
+       int  majdev, mindev, unit, part, controller, adaptor;
        dev_t temp, orootdev;
        struct swdevt *swp;
 
        if (boothowto & RB_DFLTROOT ||
            (bootdev & B_MAGICMASK) != (u_long)B_DEVMAGIC)
                return;
        dev_t temp, orootdev;
        struct swdevt *swp;
 
        if (boothowto & RB_DFLTROOT ||
            (bootdev & B_MAGICMASK) != (u_long)B_DEVMAGIC)
                return;
-       majdev = (bootdev >> B_TYPESHIFT) & B_TYPEMASK;
-       if (majdev > sizeof(devname) / sizeof(devname[0]))
+       majdev = B_TYPE(bootdev);
+       if (majdev >= sizeof(devname) / sizeof(devname[0]))
                return;
                return;
-       adaptor = (bootdev >> B_ADAPTORSHIFT) & B_ADAPTORMASK;
-       part = (bootdev >> B_PARTITIONSHIFT) & B_PARTITIONMASK;
-       unit = (bootdev >> B_UNITSHIFT) & B_UNITMASK;
+       adaptor = B_ADAPTOR(bootdev);
+       controller = B_CONTROLLER(bootdev);
+       part = B_PARTITION(bootdev);
+       unit = B_UNIT(bootdev);
        /*
         * Search Versabus devices.
         *
        /*
         * Search Versabus devices.
         *
@@ -509,6 +510,7 @@ setroot()
 
                for (vbap = vbdinit; vbap->ui_driver; vbap++)
                        if (vbap->ui_alive && vbap->ui_slave == unit &&
 
                for (vbap = vbdinit; vbap->ui_driver; vbap++)
                        if (vbap->ui_alive && vbap->ui_slave == unit &&
+                          vbap->ui_ctlr == controller &&
                           vbap->ui_vbanum == adaptor &&
                           vbap->ui_driver->ud_dname[0] == devname[majdev][0] &&
                           vbap->ui_driver->ud_dname[1] == devname[majdev][1])
                           vbap->ui_vbanum == adaptor &&
                           vbap->ui_driver->ud_dname[0] == devname[majdev][0] &&
                           vbap->ui_driver->ud_dname[1] == devname[majdev][1])
index c368811..0e0d885 100644 (file)
@@ -3,7 +3,7 @@
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
- *     @(#)autoconf.c  7.12 (Berkeley) %G%
+ *     @(#)autoconf.c  7.13 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -1056,19 +1056,20 @@ static  char devname[][2] = {
  */
 setroot()
 {
  */
 setroot()
 {
-       int  majdev, mindev, unit, part, adaptor;
+       int  majdev, mindev, unit, part, controller, adaptor;
        dev_t temp, orootdev;
        struct swdevt *swp;
 
        if (boothowto & RB_DFLTROOT ||
            (bootdev & B_MAGICMASK) != (u_long)B_DEVMAGIC)
                return;
        dev_t temp, orootdev;
        struct swdevt *swp;
 
        if (boothowto & RB_DFLTROOT ||
            (bootdev & B_MAGICMASK) != (u_long)B_DEVMAGIC)
                return;
-       majdev = (bootdev >> B_TYPESHIFT) & B_TYPEMASK;
-       if (majdev > sizeof(devname) / sizeof(devname[0]))
+       majdev = B_TYPE(bootdev);
+       if (majdev >= sizeof(devname) / sizeof(devname[0]))
                return;
                return;
-       adaptor = (bootdev >> B_ADAPTORSHIFT) & B_ADAPTORMASK;
-       part = (bootdev >> B_PARTITIONSHIFT) & B_PARTITIONMASK;
-       unit = (bootdev >> B_UNITSHIFT) & B_UNITMASK;
+       adaptor = B_ADAPTOR(bootdev);
+       controller = B_CONTROLLER(bootdev);
+       part = B_PARTITION(bootdev);
+       unit = B_UNIT(bootdev);
        if (majdev == 0) {      /* MBA device */
 #if NMBA > 0
                register struct mba_device *mbap;
        if (majdev == 0) {      /* MBA device */
 #if NMBA > 0
                register struct mba_device *mbap;
@@ -1115,6 +1116,7 @@ setroot()
 
                for (ubap = ubdinit; ubap->ui_driver; ubap++)
                        if (ubap->ui_alive && ubap->ui_slave == unit &&
 
                for (ubap = ubdinit; ubap->ui_driver; ubap++)
                        if (ubap->ui_alive && ubap->ui_slave == unit &&
+                          ubap->ui_ctlr == controller &&
                           ubap->ui_ubanum == adaptor &&
                           ubap->ui_driver->ud_dname[0] == devname[majdev][0] &&
                           ubap->ui_driver->ud_dname[1] == devname[majdev][1])
                           ubap->ui_ubanum == adaptor &&
                           ubap->ui_driver->ud_dname[0] == devname[majdev][0] &&
                           ubap->ui_driver->ud_dname[1] == devname[majdev][1])