|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v11 07/13] x86: add multiboot2 protocol support for EFI platforms
On 05/12/16 22:25, Daniel Kiper wrote:
> diff --git a/xen/arch/x86/efi/stub.c b/xen/arch/x86/efi/stub.c
> index 4158124..6ea6aa1 100644
> --- a/xen/arch/x86/efi/stub.c
> +++ b/xen/arch/x86/efi/stub.c
> @@ -3,6 +3,44 @@
> #include <xen/init.h>
> #include <xen/lib.h>
> #include <asm/page.h>
> +#include <asm/efibind.h>
> +#include <efi/efidef.h>
> +#include <efi/eficapsule.h>
> +#include <efi/eficon.h>
> +#include <efi/efidevp.h>
> +#include <efi/efiapi.h>
> +
> +/*
> + * Here we are in EFI stub. EFI calls are not supported due to lack
> + * of relevant functionality in compiler and/or linker.
> + *
> + * efi_multiboot2() is an exception. Please look below for more details.
> + */
> +
> +paddr_t __init noreturn efi_multiboot2(EFI_HANDLE ImageHandle,
> + EFI_SYSTEM_TABLE *SystemTable)
> +{
> + CHAR16 *err = L"Xen does not have EFI code build in!!!\r\nSystem
> halted!!!\r\n";
> + SIMPLE_TEXT_OUTPUT_INTERFACE *StdErr;
> +
> + StdErr = SystemTable->StdErr ? SystemTable->StdErr : SystemTable->ConOut;
> +
> + /*
> + * Print error message and halt the system.
> + *
> + * We have to open code MS x64 calling convention
> + * in assembly because here this convention may
> + * not be directly supported by C compiler.
> + */
> + asm volatile(
> + " call %2 \n"
This should be `call *%2`, because otherwise gcc complains with:
stub.c: Assembler messages:
stub.c:35: Warning: indirect call without `*'
Interestingly, it isn't fatal to the build which is why I didn't spot it
earlier. I also can't work out why it isn't fatal to the build, because
I'd have thought the -Werror should have been enough.
~Andrew
> + "0: hlt \n"
> + " jmp 0b \n"
> + : "+c" (StdErr), "+d" (err) : "g" (StdErr->OutputString)
> + : "rax", "r8", "r9", "r10", "r11", "memory");
> +
> + unreachable();
> +}
>
> bool efi_enabled(unsigned int feature)
> {
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |