[syslinux:master] core, bios: Incorrect detection of EDD in /core /fs/diskio_bios.c

syslinux-bot for Andy Alex andy at r-tt.com
Wed Feb 26 20:03:04 PST 2014


Commit-ID:  2702e0bdb70c4b6de530ad2205858154e47f2b33
Gitweb:     http://www.syslinux.org/commit/2702e0bdb70c4b6de530ad2205858154e47f2b33
Author:     Andy Alex <andy at r-tt.com>
AuthorDate: Sun, 23 Feb 2014 23:16:52 +0400
Committer:  H. Peter Anvin <hpa at linux.intel.com>
CommitDate: Wed, 26 Feb 2014 20:01:55 -0800

core, bios: Incorrect detection of EDD in /core/fs/diskio_bios.c

DL register is not set to drive number when detecting EDD for drive,
so detection may fail.

Signed-off-by: Andy Alex <andy at r-tt.com>

---
 core/fs/diskio_bios.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/core/fs/diskio_bios.c b/core/fs/diskio_bios.c
index eba5a17..7feb7fc 100644
--- a/core/fs/diskio_bios.c
+++ b/core/fs/diskio_bios.c
@@ -338,6 +338,7 @@ struct disk *bios_disk_init(void *private)
 	/* Get EBIOS support */
 	ireg.eax.b[1] = 0x41;
 	ireg.ebx.w[0] = 0x55aa;
+	ireg.edx.b[0] = devno;
 	ireg.eflags.b[0] = 0x3;	/* CF set */
 
 	__intcall(0x13, &ireg, &oreg);
@@ -355,6 +356,7 @@ struct disk *bios_disk_init(void *private)
 
             memset(&ireg, 0, sizeof ireg);
 	    ireg.eax.b[1] = 0x48;
+	    ireg.edx.b[0] = devno;
 	    ireg.ds = SEG(&edd_params);
 	    ireg.esi.w[0] = OFFS(&edd_params);
 	    __intcall(0x13, &ireg, &oreg);


More information about the Syslinux-commits mailing list