From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Graf Date: Mon, 18 Sep 2017 22:58:29 +0200 Subject: [U-Boot] [PATCH] efi_loader: EFI entry point should be EFIAPI In-Reply-To: <20170918174801.31792-1-robdclark@gmail.com> References: <20170918174801.31792-1-robdclark@gmail.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 18.09.17 19:47, Rob Clark wrote: > This is needed to run 'bootefi' from sandbox. I suspect StartImage() > must have been broken too on x86. > > Signed-off-by: Rob Clark > --- > cmd/bootefi.c | 2 +- > include/efi.h | 2 +- > lib/efi_loader/efi_boottime.c | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/cmd/bootefi.c b/cmd/bootefi.c > index fb8ba9be6a..3c9a466e20 100644 > --- a/cmd/bootefi.c > +++ b/cmd/bootefi.c > @@ -96,7 +96,7 @@ static void *copy_fdt(void *fdt) > > static ulong efi_do_enter(void *image_handle, > struct efi_system_table *st, > - asmlinkage ulong (*entry)(void *image_handle, > + EFIAPI ulong (*entry)(void *image_handle, > struct efi_system_table *st)) > { > efi_status_t ret = EFI_LOAD_ERROR; > diff --git a/include/efi.h b/include/efi.h > index 04e83220b4..47c2c8f398 100644 > --- a/include/efi.h > +++ b/include/efi.h > @@ -19,7 +19,7 @@ > #include > #include > > -#ifdef CONFIG_EFI_STUB_64BIT > +#if defined(CONFIG_EFI_STUB_64BIT) || defined(CONFIG_SANDBOX) This is incorrect for sandbox on non-x86_64 hosts. We should rather fix it in Kconfig I guess. Alex > /* EFI uses the Microsoft ABI which is not the default for GCC */ > #define EFIAPI __attribute__((ms_abi)) > #else > diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c > index 22bb95d738..3e10e6f6b5 100644 > --- a/lib/efi_loader/efi_boottime.c > +++ b/lib/efi_loader/efi_boottime.c > @@ -950,7 +950,7 @@ static efi_status_t EFIAPI efi_start_image(efi_handle_t image_handle, > unsigned long *exit_data_size, > s16 **exit_data) > { > - ulong (*entry)(void *image_handle, struct efi_system_table *st); > + EFIAPI ulong (*entry)(void *image_handle, struct efi_system_table *st); > struct efi_loaded_image *info = image_handle; > > EFI_ENTRY("%p, %p, %p", image_handle, exit_data_size, exit_data); >