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 */ 25SYM_FUNC_START(__tdcall) 26 TDX_MODULE_CALL host=0 27SYM_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 */ 43SYM_FUNC_START(__tdcall_ret) 44 TDX_MODULE_CALL host=0 ret=1 45SYM_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 */ 61SYM_FUNC_START(__tdcall_saved_ret) 62 TDX_MODULE_CALL host=0 ret=1 saved=1 63SYM_FUNC_END(__tdcall_saved_ret) 64