Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/x86/coco/tdx/tdcall.S
26489 views
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
65