[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