On Wed, May 7, 2008 at 8:55 PM, Robert Millan <[EMAIL PROTECTED]> wrote:
> I think it'd be nice to have a comment there explaining why this is done.
Hi,
You're right, here is the patch with comment:
diff --git a/kern/i386/pc/startup.S b/kern/i386/pc/startup.S
index 5d4bbcb..a67bf6d 100644
--- a/kern/i386/pc/startup.S
+++ b/kern/i386/pc/startup.S
@@ -1240,6 +1240,26 @@ FUNCTION(grub_console_getkey)
call prot_to_real
.code16
+ /*
+ * Due to a bug in apple's bootcamp implementation, INT 16/AH = 0 would
+ * cause the machine to hang at the second keystroke. However, we can
+ * work around this problem by ensuring the presence of keystroke with
+ * INT 16/AH = 1 before calling INT 16/AH = 0.
+ */
+
+ pushfw
+ sti
+
+1:
+ movb $1, %ah
+ int $0x16
+ jnz 2f
+ hlt
+ jmp 1b
+
+2:
+ popfw
+ movb $0, %ah
int $0x16
movw %ax, %dx /* real_to_prot uses %eax */
--
Bean
_______________________________________________
Grub-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel