From: Kevin O'Connor Date: Sat, 7 Dec 2013 16:46:37 +0000 (-0500) Subject: floppy: Fix incorrect LBA to CHS translation. X-Git-Tag: rel-1.7.4~10 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=302a6e82dc9e8c6f1028f98e578336aed07d8f66;p=seabios.git floppy: Fix incorrect LBA to CHS translation. The floppy LBA to CHS translation was incorrect for the last sector of a given cylinder. This wasn't a problem under QEMU as it came to the same results anyway, but it causes errors of real floppy controllers. Signed-off-by: Kevin O'Connor --- diff --git a/src/hw/floppy.c b/src/hw/floppy.c index d43b489..c5118ec 100644 --- a/src/hw/floppy.c +++ b/src/hw/floppy.c @@ -496,11 +496,10 @@ static struct chs_s lba2chs(struct disk_op_s *op) { struct chs_s res = { }; - u32 lba = op->lba; - u32 tmp = lba + 1; + u32 tmp = op->lba; u16 nls = GET_GLOBALFLAT(op->drive_gf->lchs.sector); - res.sector = tmp % nls; + res.sector = (tmp % nls) + 1; tmp /= nls; u16 nlh = GET_GLOBALFLAT(op->drive_gf->lchs.head);