[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