[SeaBIOS] [PATCH 1/2] floppy: Fix incorrect LBA to CHS translation.
Kevin O'Connor
kevin at koconnor.net
Mon Dec 9 18:40:54 CET 2013
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 <kevin at koconnor.net>
---
src/hw/floppy.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
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);
--
1.8.3.1
More information about the SeaBIOS
mailing list