diff --git a/ChangeLog b/ChangeLog index 326859ab4..68cbd6028 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-01-17 Yoshinori K. Okuji + + * lib/device.c [__linux__] (MAJOR): Support 32 bit and 64 bit + dev_t. This code is stolen from glibc. + Suggested by Shen Feng . + 2004-01-11 Yoshinori K. Okuji * stage2/terminfo.c (ti_set_term): Use a pointer to struct diff --git a/NEWS b/NEWS index 7de94e5c3..e6f2a45e1 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,7 @@ New: * Display "GNU GRUB" instead of "GRUB" in the menu. * Add support for QNX RTP into the grub shell. * Add support for the initrd max address of a kernel header in Linux. +* Support 32 bit and 64 bit dev_t. New in 0.93 - 2002-12-08: * Define the behavior of the boot loader when the load end address is diff --git a/lib/device.c b/lib/device.c index 69a8dab4f..07f7d512d 100644 --- a/lib/device.c +++ b/lib/device.c @@ -59,10 +59,12 @@ struct hd_geometry # define FLOPPY_MAJOR 2 /* the major number for floppy */ # endif /* ! FLOPPY_MAJOR */ # ifndef MAJOR -# ifndef MINORBITS -# define MINORBITS 8 -# endif /* ! MINORBITS */ -# define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS)) +# define MAJOR(dev) \ + ({ \ + unsigned long long __dev = (dev); \ + (unsigned) ((__dev >> 8) & 0xfff) \ + | ((unsigned int) (__dev >> 32) & ~0xfff); \ + }) # endif /* ! MAJOR */ # ifndef CDROM_GET_CAPABILITY # define CDROM_GET_CAPABILITY 0x5331 /* get capabilities */