diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2010-07-16 16:33:39 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2010-07-16 16:33:39 -0700 |
commit | 174d92a09a250c64451d8340219a89593172b056 (patch) | |
tree | 9703e5fe3163fadd14b727abd15ca727fa3c78ec /core/fs | |
parent | bd23fe1f1d376284bf02556d84e6d6fa8111fd00 (diff) | |
download | syslinux-174d92a09a250c64451d8340219a89593172b056.tar.gz |
diskio: expand most fields; cache the number of total tracks
Expand most fields in struct disk to 32 bits -- it makes the code
smaller in general, and struct disk is not a common data element.
Add a field for the number of tracks (number of heads*sectors).
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'core/fs')
-rw-r--r-- | core/fs/diskio.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/core/fs/diskio.c b/core/fs/diskio.c index 51f2f39d..55a9df4d 100644 --- a/core/fs/diskio.c +++ b/core/fs/diskio.c @@ -11,7 +11,7 @@ static inline sector_t chs_max(const struct disk *disk) { - return (disk->h * disk->s) << 10; + return disk->t << 10; } static int chs_rdwr_sectors(struct disk *disk, void *buf, @@ -393,6 +393,7 @@ struct disk *disk_init(uint8_t devno, bool cdrom, sector_t part_start, disk.sector_size = sector_size; disk.sector_shift = ilog2(sector_size); disk.part_start = part_start; + disk.t = disk.h * disk.s; disk.rdwr_sectors = ebios ? edd_rdwr_sectors : chs_rdwr_sectors; if (!MaxTransfer || MaxTransfer > hard_max_transfer) |