EFI_CONSOLE_CONTROL_PROTOCOL structs in console_text_mode() should be declared...
authorKeshav Padram <the.ridikulus.rat@gmail.com>
Sun, 16 Jun 2013 16:31:59 +0000 (18:31 +0200)
committerKay Sievers <kay@vrfy.org>
Sun, 16 Jun 2013 16:31:59 +0000 (18:31 +0200)
    EFI_CONSOLE_CONTROL_PROTOCOL structs in console_text_mode() previously
    were not declared as EFIAPI, due to which gummiboot compiled
    with gnu-efi 3.0t (with GNU_EFI_USE_MS_ABI enabled) hanged. Fix this by
    declaring EFI_CONSOLE_CONTROL_PROTOCOL_{GET_MODE,SET_MODE,LOCK_STD_IN}
    as EFIAPI.

    Tested in Lenovo Thinkpad E430, UEFI 2.3.1, x86_64 firmware.

src/efi/gummiboot.c

index 20da9ce..ecba84f 100644 (file)
@@ -575,19 +575,19 @@ static EFI_STATUS console_text_mode(VOID) {
                 EfiConsoleControlScreenMaxValue,
         } EFI_CONSOLE_CONTROL_SCREEN_MODE;
 
-        typedef EFI_STATUS (*EFI_CONSOLE_CONTROL_PROTOCOL_GET_MODE)(
+        typedef EFI_STATUS (EFIAPI *EFI_CONSOLE_CONTROL_PROTOCOL_GET_MODE)(
                 struct _EFI_CONSOLE_CONTROL_PROTOCOL *This,
                 EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,
                 BOOLEAN *UgaExists,
                 BOOLEAN *StdInLocked
         );
 
-        typedef EFI_STATUS (*EFI_CONSOLE_CONTROL_PROTOCOL_SET_MODE)(
+        typedef EFI_STATUS (EFIAPI *EFI_CONSOLE_CONTROL_PROTOCOL_SET_MODE)(
                 struct _EFI_CONSOLE_CONTROL_PROTOCOL *This,
                 EFI_CONSOLE_CONTROL_SCREEN_MODE Mode
         );
 
-        typedef EFI_STATUS (*EFI_CONSOLE_CONTROL_PROTOCOL_LOCK_STD_IN)(
+        typedef EFI_STATUS (EFIAPI *EFI_CONSOLE_CONTROL_PROTOCOL_LOCK_STD_IN)(
                 struct _EFI_CONSOLE_CONTROL_PROTOCOL *This,
                 CHAR16 *Password
         );