xref: /linux/arch/x86/platform/efi/efi_stub_64.S (revision 8a7c601e14576a22c2bbf7f67455ccf3f3d2737f)
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Function calling ABI conversion from Linux to EFI for x86_64
4 *
5 * Copyright (C) 2007 Intel Corp
6 *	Bibo Mao <bibo.mao@intel.com>
7 *	Huang Ying <ying.huang@intel.com>
8 */
9
10#include <linux/linkage.h>
11#include <asm/nospec-branch.h>
12
13SYM_FUNC_START(__efi_call)
14	/*
15	 * The EFI code doesn't have any CFI, annotate away the CFI violation.
16	 */
17	ANNOTATE_NOCFI_SYM
18	pushq %rbp
19	movq %rsp, %rbp
20	and $~0xf, %rsp
21	mov 16(%rbp), %rax
22	subq $48, %rsp
23	mov %r9, 32(%rsp)
24	mov %rax, 40(%rsp)
25	mov %r8, %r9
26	mov %rcx, %r8
27	mov %rsi, %rcx
28	CALL_NOSPEC rdi
29	leave
30	RET
31SYM_FUNC_END(__efi_call)
32