1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #include <asm/asm-offsets.h> |
3 | #include <asm/asm.h> |
4 | |
5 | #include <linux/linkage.h> |
6 | #include <linux/errno.h> |
7 | |
8 | #include "../../virt/vmx/tdx/tdxcall.S" |
9 | |
10 | .section .noinstr.text, "ax" |
11 | |
12 | /* |
13 | * __tdcall() - Used by TDX guests to request services from the TDX |
14 | * module (does not include VMM services) using TDCALL instruction. |
15 | * |
16 | * __tdcall() function ABI: |
17 | * |
18 | * @fn (RDI) - TDCALL Leaf ID, moved to RAX |
19 | * @args (RSI) - struct tdx_module_args for input |
20 | * |
21 | * Only RCX/RDX/R8-R11 are used as input registers. |
22 | * |
23 | * Return status of TDCALL via RAX. |
24 | */ |
25 | SYM_FUNC_START(__tdcall) |
26 | TDX_MODULE_CALL host=0 |
27 | SYM_FUNC_END(__tdcall) |
28 | |
29 | /* |
30 | * __tdcall_ret() - Used by TDX guests to request services from the TDX |
31 | * module (does not include VMM services) using TDCALL instruction, with |
32 | * saving output registers to the 'struct tdx_module_args' used as input. |
33 | * |
34 | * __tdcall_ret() function ABI: |
35 | * |
36 | * @fn (RDI) - TDCALL Leaf ID, moved to RAX |
37 | * @args (RSI) - struct tdx_module_args for input and output |
38 | * |
39 | * Only RCX/RDX/R8-R11 are used as input/output registers. |
40 | * |
41 | * Return status of TDCALL via RAX. |
42 | */ |
43 | SYM_FUNC_START(__tdcall_ret) |
44 | TDX_MODULE_CALL host=0 ret=1 |
45 | SYM_FUNC_END(__tdcall_ret) |
46 | |
47 | /* |
48 | * __tdcall_saved_ret() - Used by TDX guests to request services from the |
49 | * TDX module (including VMM services) using TDCALL instruction, with |
50 | * saving output registers to the 'struct tdx_module_args' used as input. |
51 | * |
52 | * __tdcall_saved_ret() function ABI: |
53 | * |
54 | * @fn (RDI) - TDCALL leaf ID, moved to RAX |
55 | * @args (RSI) - struct tdx_module_args for input/output |
56 | * |
57 | * All registers in @args are used as input/output registers. |
58 | * |
59 | * On successful completion, return the hypercall error code. |
60 | */ |
61 | SYM_FUNC_START(__tdcall_saved_ret) |
62 | TDX_MODULE_CALL host=0 ret=1 saved=1 |
63 | SYM_FUNC_END(__tdcall_saved_ret) |
64 | |