aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Alex <andy@r-tt.com>2014-02-23 23:16:52 +0400
committerH. Peter Anvin <hpa@linux.intel.com>2014-02-26 20:01:55 -0800
commit2702e0bdb70c4b6de530ad2205858154e47f2b33 (patch)
tree40b9e7784f05be970c9ddb62f21f1b0e2b39a30c
parent046f19cbffec3516d4f934863820fc242f33da3c (diff)
downloadsyslinux-2702e0bdb70c4b6de530ad2205858154e47f2b33.tar.gz
syslinux-2702e0bdb70c4b6de530ad2205858154e47f2b33.tar.xz
syslinux-2702e0bdb70c4b6de530ad2205858154e47f2b33.zip
core, bios: Incorrect detection of EDD in /core/fs/diskio_bios.csyslinux-6.03-pre3
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>
-rw-r--r--core/fs/diskio_bios.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/core/fs/diskio_bios.c b/core/fs/diskio_bios.c
index eba5a176..7feb7fc4 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);