[syslinux] [PATCH] core: Incorrect detection of EDD in /core/fs/diskio_bios.c

Geert Stappers stappers at stappers.nl
Sat Feb 22 04:59:01 PST 2014


Op 2014-02-20 om 13:23 schreef Andy Alex:
> 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 */

I don't understand where the removal of that line matches
with 'DL register is not set' from the description of this patch.


> +        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);
> 



Groeten
Geert Stappers
-- 
Leven en laten leven


More information about the Syslinux mailing list