diff options
author | jhb <jhb@FreeBSD.org> | 2007-10-24 04:03:25 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2007-10-24 04:03:25 +0000 |
commit | 67997e41d53c8ad1c2b5042fbb90c1324c017ac4 (patch) | |
tree | fdf38b4daaca0d3bae26f2cebbfb7bbbf5eb115e | |
parent | 9bc0f4c6a443721979818bca4ed522cc2dcb24f3 (diff) | |
download | FreeBSD-src-67997e41d53c8ad1c2b5042fbb90c1324c017ac4.zip FreeBSD-src-67997e41d53c8ad1c2b5042fbb90c1324c017ac4.tar.gz |
Slightly cleanup the 'bootdev' concept on x86 by changing the various
macros to treat the 'slice' field as a real part of the bootdev instead
of as hack that spans two other fields (adaptor (sic) and controller)
that are not used in any modern FreeBSD boot code.
MFC after: 1 week
-rw-r--r-- | sys/boot/i386/boot2/boot2.c | 2 | ||||
-rw-r--r-- | sys/boot/i386/gptboot/gptboot.c | 2 | ||||
-rw-r--r-- | sys/boot/i386/libi386/bioscd.c | 2 | ||||
-rw-r--r-- | sys/boot/i386/libi386/biosdisk.c | 7 | ||||
-rw-r--r-- | sys/boot/i386/loader/main.c | 3 | ||||
-rw-r--r-- | sys/boot/pc98/boot2/boot.c | 2 | ||||
-rw-r--r-- | sys/boot/pc98/libpc98/bioscd.c | 2 | ||||
-rw-r--r-- | sys/boot/pc98/libpc98/biosdisk.c | 7 | ||||
-rw-r--r-- | sys/i386/include/bootinfo.h | 18 |
9 files changed, 16 insertions, 29 deletions
diff --git a/sys/boot/i386/boot2/boot2.c b/sys/boot/i386/boot2/boot2.c index df3fe81..f227233 100644 --- a/sys/boot/i386/boot2/boot2.c +++ b/sys/boot/i386/boot2/boot2.c @@ -395,7 +395,7 @@ load(void) bootinfo.bi_kernelname = VTOP(kname); bootinfo.bi_bios_dev = dsk.drive; __exec((caddr_t)addr, RB_BOOTINFO | (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)); } diff --git a/sys/boot/i386/gptboot/gptboot.c b/sys/boot/i386/gptboot/gptboot.c index df3fe81..f227233 100644 --- a/sys/boot/i386/gptboot/gptboot.c +++ b/sys/boot/i386/gptboot/gptboot.c @@ -395,7 +395,7 @@ load(void) bootinfo.bi_kernelname = VTOP(kname); bootinfo.bi_bios_dev = dsk.drive; __exec((caddr_t)addr, RB_BOOTINFO | (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)); } diff --git a/sys/boot/i386/libi386/bioscd.c b/sys/boot/i386/libi386/bioscd.c index 42dfbb3..93de958 100644 --- a/sys/boot/i386/libi386/bioscd.c +++ b/sys/boot/i386/libi386/bioscd.c @@ -350,7 +350,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); } diff --git a/sys/boot/i386/libi386/biosdisk.c b/sys/boot/i386/libi386/biosdisk.c index b65ddd8..18453e2 100644 --- a/sys/boot/i386/libi386/biosdisk.c +++ b/sys/boot/i386/libi386/biosdisk.c @@ -1221,11 +1221,8 @@ 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, - dev->d_kind.biosdisk.partition); + rootdev = MAKEBOOTDEV(major, dev->d_kind.biosdisk.slice + 1, unit, + dev->d_kind.biosdisk.partition); DEBUG("dev is 0x%x\n", rootdev); return(rootdev); } diff --git a/sys/boot/i386/loader/main.c b/sys/boot/i386/loader/main.c index 0c0046f..2083456 100644 --- a/sys/boot/i386/loader/main.c +++ b/sys/boot/i386/loader/main.c @@ -218,8 +218,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; diff --git a/sys/boot/pc98/boot2/boot.c b/sys/boot/pc98/boot2/boot.c index f350b91..4bdfbef 100644 --- a/sys/boot/pc98/boot2/boot.c +++ b/sys/boot/pc98/boot2/boot.c @@ -294,7 +294,7 @@ loadprog(void) * For backwards compatibility, use the previously-unused adaptor * and controller bitfields to hold the slice number. */ - bootdev = MAKEBOOTDEV(maj, (slice >> 4), slice & 0xf, unit, part); + bootdev = MAKEBOOTDEV(maj, slice, unit, part); bootinfo.bi_version = BOOTINFO_VERSION; bootinfo.bi_kernelname = (u_int32_t)(name + ouraddr); diff --git a/sys/boot/pc98/libpc98/bioscd.c b/sys/boot/pc98/libpc98/bioscd.c index 03b38a3..40d455b 100644 --- a/sys/boot/pc98/libpc98/bioscd.c +++ b/sys/boot/pc98/libpc98/bioscd.c @@ -338,7 +338,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); } diff --git a/sys/boot/pc98/libpc98/biosdisk.c b/sys/boot/pc98/libpc98/biosdisk.c index ef89e12..d23d474 100644 --- a/sys/boot/pc98/libpc98/biosdisk.c +++ b/sys/boot/pc98/libpc98/biosdisk.c @@ -1105,11 +1105,8 @@ 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, - dev->d_kind.biosdisk.partition); + rootdev = MAKEBOOTDEV(major, dev->d_kind.biosdisk.slice + 1, unit, + dev->d_kind.biosdisk.partition); DEBUG("dev is 0x%x\n", rootdev); return(rootdev); } diff --git a/sys/i386/include/bootinfo.h b/sys/i386/include/bootinfo.h index 475a09e..09b4e2c 100644 --- a/sys/i386/include/bootinfo.h +++ b/sys/i386/include/bootinfo.h @@ -78,17 +78,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) @@ -105,10 +99,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 |