commit-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[1724] 2008-07-21 Bean <address@hidden>


From: Bean
Subject: [1724] 2008-07-21 Bean <address@hidden>
Date: Mon, 21 Jul 2008 10:40:02 +0000

Revision: 1724
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=1724
Author:   bean
Date:     2008-07-21 10:40:01 +0000 (Mon, 21 Jul 2008)

Log Message:
-----------
2008-07-21  Bean  <address@hidden>

        * kern/i386/pc/startup.S (gate_a20_try_bios): Change test order for
        a20. Run keyboard test last, as it will cause macbook to halt.

Modified Paths:
--------------
    trunk/grub2/ChangeLog
    trunk/grub2/kern/i386/pc/startup.S

Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog       2008-07-18 16:11:35 UTC (rev 1723)
+++ trunk/grub2/ChangeLog       2008-07-21 10:40:01 UTC (rev 1724)
@@ -1,3 +1,8 @@
+2008-07-21  Bean  <address@hidden>
+
+       * kern/i386/pc/startup.S (gate_a20_try_bios): Change test order for
+       a20. Run keyboard test last, as it will cause macbook to halt.
+
 2008-07-18  Pavel Roskin  <address@hidden>
 
        * kern/dl.c: Go back to using GRUB_CPU_SIZEOF_VOID_P.  We cannot

Modified: trunk/grub2/kern/i386/pc/startup.S
===================================================================
--- trunk/grub2/kern/i386/pc/startup.S  2008-07-18 16:11:35 UTC (rev 1723)
+++ trunk/grub2/kern/i386/pc/startup.S  2008-07-21 10:40:01 UTC (rev 1724)
@@ -386,9 +386,32 @@
        popl    %ebp
        call    gate_a20_check_state
        cmpb    %al, %dl
-       jnz     gate_a20_try_keyboard_controller
+       jnz     gate_a20_try_system_control_port_a
        ret
        
+gate_a20_try_system_control_port_a:
+       /*
+        * In macbook, the keyboard test would hang the machine, so we move
+        * this forward.
+        */
+       /* fourth, try the system control port A */
+       inb     $0x92
+       andb    $(~0x03), %al
+       testb   %dl, %dl
+       jz      6f
+       orb     $0x02, %al
+6:     outb    $0x92
+
+       /* When turning off Gate A20, do not check the state strictly,
+          because a failure is not fatal usually, and Gate A20 is always
+          on some modern machines.  */
+       testb   %dl, %dl
+       jz      7f
+       call    gate_a20_check_state
+       cmpb    %al, %dl
+       jnz     gate_a20_try_keyboard_controller
+7:     ret
+
 gate_a20_flush_keyboard_buffer:
        inb     $0x64
        andb    $0x02, %al
@@ -427,28 +450,9 @@
 
        call    gate_a20_check_state
        cmpb    %al, %dl
-       jnz     gate_a20_try_system_control_port_a
-       ret
-
-gate_a20_try_system_control_port_a:
-       /* fourth, try the system control port A */
-       inb     $0x92
-       andb    $(~0x03), %al
-       testb   %dl, %dl
-       jz      6f
-       orb     $0x02, %al
-6:     outb    $0x92
-
-       /* When turning off Gate A20, do not check the state strictly,
-          because a failure is not fatal usually, and Gate A20 is always
-          on some modern machines.  */
-       testb   %dl, %dl
-       jz      7f      
-       call    gate_a20_check_state
-       cmpb    %al, %dl
        /* everything failed, so restart from the beginning */
        jnz     gate_a20_try_bios
-7:     ret
+       ret
        
 gate_a20_check_state:
        /* iterate the checking for a while */






reply via email to

[Prev in Thread] Current Thread [Next in Thread]