From e6ebfca6181de76b9dc558d5fdcfe14bc53d507a Mon Sep 17 00:00:00 2001 From: Keshav Padram Date: Sun, 16 Jun 2013 18:31:59 +0200 Subject: [PATCH] EFI_CONSOLE_CONTROL_PROTOCOL structs in console_text_mode() should be declared as EFIAPI 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 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/efi/gummiboot.c b/src/efi/gummiboot.c index 20da9ce..ecba84f 100644 --- a/src/efi/gummiboot.c +++ b/src/efi/gummiboot.c @@ -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 ); -- 2.7.4