diff options
| author | Yoshihiro Takahashi <nyan@FreeBSD.org> | 2002-10-14 13:15:14 +0000 |
|---|---|---|
| committer | Yoshihiro Takahashi <nyan@FreeBSD.org> | 2002-10-14 13:15:14 +0000 |
| commit | 89335c9f4674ea7c69ad2c6ec520c327bec88188 (patch) | |
| tree | 73f7c02c8ce25f3eda5665080ad971f277b19f1e /lib | |
| parent | 1860696e5aaa79069adfa70d52945c2ea6eb9412 (diff) | |
Notes
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/libdisk/change.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/libdisk/change.c b/lib/libdisk/change.c index ca3df9975533..18b8bc3570b6 100644 --- a/lib/libdisk/change.c +++ b/lib/libdisk/change.c @@ -26,7 +26,6 @@ Set_Bios_Geom(struct disk *disk, u_long cyl, u_long hd, u_long sect) disk->bios_sect = sect; } -/* XXX - parameters should change to fit for PC-98, but I'm not sure */ void Sanitize_Bios_Geom(struct disk *disk) { @@ -34,11 +33,19 @@ Sanitize_Bios_Geom(struct disk *disk) sane = 1; +#ifdef PC98 + if (disk->bios_cyl >= 65536) +#else if (disk->bios_cyl > 1024) +#endif sane = 0; if (disk->bios_hd > 16) sane = 0; +#ifdef PC98 + if (disk->bios_sect >= 256) +#else if (disk->bios_sect > 63) +#endif sane = 0; if (disk->bios_cyl*disk->bios_hd*disk->bios_sect != disk->chunks->size) sane = 0; @@ -50,11 +57,21 @@ Sanitize_Bios_Geom(struct disk *disk) disk->bios_hd = 16; disk->bios_cyl = disk->chunks->size / (disk->bios_sect*disk->bios_hd); +#ifdef PC98 + if (disk->bios_cyl < 65536) +#else if (disk->bios_cyl < 1024) +#endif return; /* Hmm, try harder... */ +#ifdef PC98 + /* Assume standard SCSI parameter */ + disk->bios_sect = 128; + disk->bios_hd = 8; +#else disk->bios_hd = 255; +#endif disk->bios_cyl = disk->chunks->size / (disk->bios_sect*disk->bios_hd); return; |
