From 77bcd272073b2f4dad88b58a2b869804b7655866 Mon Sep 17 00:00:00 2001 From: proski Date: Fri, 28 Mar 2008 17:06:29 +0000 Subject: [PATCH] 2008-03-28 Pavel Roskin * kern/i386/pc/startup.S (grub_biosdisk_get_diskinfo_int13_extensions): When converting data block address to the real mode, keep offset minimal. This works around a bug in AWARD BIOS on old Athlon systems, which makes CD detection hang. --- ChangeLog | 8 ++++++++ kern/i386/pc/startup.S | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8fbff3129..d94121968 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-03-28 Pavel Roskin + + * kern/i386/pc/startup.S + (grub_biosdisk_get_diskinfo_int13_extensions): When converting + data block address to the real mode, keep offset minimal. This + works around a bug in AWARD BIOS on old Athlon systems, which + makes CD detection hang. + 2008-03-26 Pavel Roskin * normal/color.c (grub_parse_color_name_pair): Make `name' a diff --git a/kern/i386/pc/startup.S b/kern/i386/pc/startup.S index 35b19fda7..635630d94 100644 --- a/kern/i386/pc/startup.S +++ b/kern/i386/pc/startup.S @@ -806,7 +806,7 @@ FUNCTION(grub_biosdisk_get_diskinfo_int13_extensions) /* compute the address of drive parameters */ movw %dx, %si - xorw %dx, %dx + andl $0xf, %esi shrl $4, %edx movw %dx, %bx /* save the segment into %bx */ /* drive */