[syslinux] [PATCH] core: Incorrect detection of EDD in /core/fs/diskio_bios.c
Andy Alex
andy at r-tt.com
Thu Feb 20 01:23:36 PST 2014
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>
---
diff -uprN syslinux-6.02.orig/core/fs/diskio_bios.c syslinux-6.02/core/fs/diskio_bios.c
--- syslinux-6.02.orig/core/fs/diskio_bios.c 2013-10-13 21:59:03.000000000 +0400
+++ syslinux-6.02/core/fs/diskio_bios.c 2014-02-20 12:15:08.000000000 +0400
@@ -337,7 +337,7 @@ struct disk *bios_disk_init(void *privat
/* Get EBIOS support */
ireg.eax.b[1] = 0x41;
ireg.ebx.w[0] = 0x55aa;
- ireg.eflags.b[0] = 0x3; /* CF set */
+ ireg.edx.b[0] = devno;
__intcall(0x13,&ireg,&oreg);
@@ -353,6 +353,7 @@ struct disk *bios_disk_init(void *privat
edd_params.len = sizeof edd_params;
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
mailing list