sys/boot: Simplify MAKEBOOTDEV macro
authorzrj <rimvydas.jasinskas@gmail.com>
Wed, 10 Feb 2016 13:44:40 +0000 (15:44 +0200)
committerzrj <zrj@dragonflybsd.org>
Wed, 10 Feb 2016 21:06:47 +0000 (23:06 +0200)
Treat slice as a single part of bootdev.
Previous implementation artificially slit it into
adaptor and controller fields.

No functional change intended.
Taken-from: FreeBSD

sys/boot/pc32/boot2/boot2.c
sys/boot/pc32/libi386/bioscd.c
sys/boot/pc32/libi386/biosdisk.c
sys/boot/pc32/loader/main.c
sys/platform/pc64/include/bootinfo.h
sys/sys/reboot.h

index 1ea9632..20e1932 100644 (file)
@@ -430,7 +430,7 @@ load(void)
     bootinfo.bi_kernelname = VTOP(kname);
     bootinfo.bi_bios_dev = dsk.drive;
     __exec((caddr_t)addr, opts & RBX_MASK,
-          MAKEBOOTDEV(dev_maj[dsk.type], 0, dsk.slice, dsk.unit, dsk.part),
+          MAKEBOOTDEV(dev_maj[dsk.type], dsk.slice, dsk.unit, dsk.part),
           0, 0, 0, VTOP(&bootinfo));
 }
 
index afe47ef..278e507 100644 (file)
@@ -361,7 +361,7 @@ bc_getdev(struct i386_devdesc *dev)
     unit = 0;  /* XXX */
 
     /* XXX: Assume partition 'a'. */
-    rootdev = MAKEBOOTDEV(major, 0, 0, unit, 0);
+    rootdev = MAKEBOOTDEV(major, 0, unit, 0);
     DEBUG("dev is 0x%x\n", rootdev);
     return(rootdev);
 }
index 0962c86..76b305b 100644 (file)
@@ -1397,10 +1397,7 @@ bd_getdev(struct i386_devdesc *dev)
            unit = i;
     }
 
-    rootdev = MAKEBOOTDEV(major,
-                         (dev->d_kind.biosdisk.slice + 1) >> 4,        /* XXX slices may be wrong here */
-                         (dev->d_kind.biosdisk.slice + 1) & 0xf, 
-                         unit,
+    rootdev = MAKEBOOTDEV(major, dev->d_kind.biosdisk.slice + 1, unit,
                          dev->d_kind.biosdisk.partition);
     DEBUG("dev is 0x%x\n", rootdev);
     return(rootdev);
index 9789ad9..b81bb23 100644 (file)
@@ -319,8 +319,7 @@ extract_currdev(void)
        new_currdev.d_kind.biosdisk.partition = 0;
        biosdev = -1;
     } else {
-       new_currdev.d_kind.biosdisk.slice = (B_ADAPTOR(initial_bootdev) << 4) +
-                                            B_CONTROLLER(initial_bootdev) - 1;
+       new_currdev.d_kind.biosdisk.slice = B_SLICE(initial_bootdev) - 1;
        new_currdev.d_kind.biosdisk.partition = B_PARTITION(initial_bootdev);
        biosdev = initial_bootinfo->bi_bios_dev;
 
index 5c1a9e8..8500043 100644 (file)
@@ -79,17 +79,11 @@ extern struct bootinfo      bootinfo;
  * for backward compatibility.  Except for that of the "magic
  * number", each mask applies to the shifted value.
  * Format:
- *      (4) (4) (4) (4)  (8)     (8)
+ *      (4)   (8)   (4)  (8)     (8)
  *     --------------------------------
- *     |MA | AD| CT| UN| PART  | TYPE |
+ *     |MA | SLICE | UN| PART  | TYPE |
  *     --------------------------------
  */
-#define        B_ADAPTORSHIFT          24
-#define        B_ADAPTORMASK           0x0f
-#define        B_ADAPTOR(val)          (((val) >> B_ADAPTORSHIFT) & B_ADAPTORMASK)
-#define B_CONTROLLERSHIFT      20
-#define B_CONTROLLERMASK       0xf
-#define        B_CONTROLLER(val)       (((val)>>B_CONTROLLERSHIFT) & B_CONTROLLERMASK)
 #define B_SLICESHIFT           20
 #define B_SLICEMASK            0xff
 #define B_SLICE(val)           (((val)>>B_SLICESHIFT) & B_SLICEMASK)
@@ -106,10 +100,10 @@ extern struct bootinfo    bootinfo;
 #define        B_MAGICMASK     0xf0000000
 #define        B_DEVMAGIC      0xa0000000
 
-#define MAKEBOOTDEV(type, adaptor, controller, unit, partition) \
-       (((type) << B_TYPESHIFT) | ((adaptor) << B_ADAPTORSHIFT) | \
-       ((controller) << B_CONTROLLERSHIFT) | ((unit) << B_UNITSHIFT) | \
-       ((partition) << B_PARTITIONSHIFT) | B_DEVMAGIC)
+#define        MAKEBOOTDEV(type, slice, unit, partition) \
+       (((type) << B_TYPESHIFT) | ((slice) << B_SLICESHIFT) | \
+       ((unit) << B_UNITSHIFT) | ((partition) << B_PARTITIONSHIFT) | \
+       B_DEVMAGIC)
 
 #define        BASE_SLICE              2
 #define        COMPATIBILITY_SLICE     0
@@ -117,4 +111,3 @@ extern struct bootinfo      bootinfo;
 #define        WHOLE_DISK_SLICE        1
 
 #endif /* !_MACHINE_BOOTINFO_H_ */
-
index 72fbdb7..7159444 100644 (file)
 #define RB_VIDEO       0x20000000      /* use video console */
 #define        RB_BOOTINFO     0x80000000      /* have `struct bootinfo *' arg */
 
-/*
- * Constants for converting boot-style device number to type,
- * adaptor (uba, mba, etc), unit number and partition number.
- * Type (== major device number) is in the low byte
- * for backward compatibility.  Except for that of the "magic
- * number", each mask applies to the shifted value.
- * Format:
- *      (4) (4) (4) (4)  (8)     (8)
- *     --------------------------------
- *     |MA | AD| CT| UN| PART  | TYPE |
- *     --------------------------------
- */
-#define        B_ADAPTORSHIFT          24
-#define        B_ADAPTORMASK           0x0f
-#define        B_ADAPTOR(val)          (((val) >> B_ADAPTORSHIFT) & B_ADAPTORMASK)
-#define B_CONTROLLERSHIFT      20
-#define B_CONTROLLERMASK       0xf
-#define        B_CONTROLLER(val)       (((val)>>B_CONTROLLERSHIFT) & B_CONTROLLERMASK)
-#define B_SLICESHIFT           20
-#define B_SLICEMASK            0xff
-#define B_SLICE(val)           (((val)>>B_SLICESHIFT) & B_SLICEMASK)
-#define B_UNITSHIFT            16
-#define B_UNITMASK             0xf
-#define        B_UNIT(val)             (((val) >> B_UNITSHIFT) & B_UNITMASK)
-#define B_PARTITIONSHIFT       8
-#define B_PARTITIONMASK                0xff
-#define        B_PARTITION(val)        (((val) >> B_PARTITIONSHIFT) & B_PARTITIONMASK)
-#define        B_TYPESHIFT             0
-#define        B_TYPEMASK              0xff
-#define        B_TYPE(val)             (((val) >> B_TYPESHIFT) & B_TYPEMASK)
-
-#define        B_MAGICMASK     0xf0000000
-#define        B_DEVMAGIC      0xa0000000
-
-#define MAKEBOOTDEV(type, adaptor, controller, unit, partition) \
-       (((type) << B_TYPESHIFT) | ((adaptor) << B_ADAPTORSHIFT) | \
-       ((controller) << B_CONTROLLERSHIFT) | ((unit) << B_UNITSHIFT) | \
-       ((partition) << B_PARTITIONSHIFT) | B_DEVMAGIC)
-
 #endif