1/* SPDX-License-Identifier: GPL-2.0 */ 2#include <linux/linkage.h> 3#include <asm/frame.h> 4 5#include "tdxcall.S" 6 7/* 8 * __seamcall() - Host-side interface functions to SEAM software 9 * (the P-SEAMLDR or the TDX module). 10 * 11 * __seamcall() function ABI: 12 * 13 * @fn (RDI) - SEAMCALL Leaf number, moved to RAX 14 * @args (RSI) - struct tdx_module_args for input 15 * 16 * Only RCX/RDX/R8-R11 are used as input registers. 17 * 18 * Return (via RAX) TDX_SEAMCALL_VMFAILINVALID if the SEAMCALL itself 19 * fails, or the completion status of the SEAMCALL leaf function. 20 */ 21SYM_FUNC_START(__seamcall) 22 TDX_MODULE_CALL host=1 23SYM_FUNC_END(__seamcall) 24 25/* 26 * __seamcall_ret() - Host-side interface functions to SEAM software 27 * (the P-SEAMLDR or the TDX module), with saving output registers to 28 * the 'struct tdx_module_args' used as input. 29 * 30 * __seamcall_ret() function ABI: 31 * 32 * @fn (RDI) - SEAMCALL Leaf number, moved to RAX 33 * @args (RSI) - struct tdx_module_args for input and output 34 * 35 * Only RCX/RDX/R8-R11 are used as input/output registers. 36 * 37 * Return (via RAX) TDX_SEAMCALL_VMFAILINVALID if the SEAMCALL itself 38 * fails, or the completion status of the SEAMCALL leaf function. 39 */ 40SYM_FUNC_START(__seamcall_ret) 41 TDX_MODULE_CALL host=1 ret=1 42SYM_FUNC_END(__seamcall_ret) 43 44/* KVM requires non-instrumentable __seamcall_saved_ret() for TDH.VP.ENTER */ 45.section .noinstr.text, "ax" 46 47/* 48 * __seamcall_saved_ret() - Host-side interface functions to SEAM software 49 * (the P-SEAMLDR or the TDX module), with saving output registers to the 50 * 'struct tdx_module_args' used as input. 51 * 52 * __seamcall_saved_ret() function ABI: 53 * 54 * @fn (RDI) - SEAMCALL Leaf number, moved to RAX 55 * @args (RSI) - struct tdx_module_args for input and output 56 * 57 * All registers in @args are used as input/output registers. 58 * 59 * Return (via RAX) TDX_SEAMCALL_VMFAILINVALID if the SEAMCALL itself 60 * fails, or the completion status of the SEAMCALL leaf function. 61 */ 62SYM_FUNC_START(__seamcall_saved_ret) 63 TDX_MODULE_CALL host=1 ret=1 saved=1 64SYM_FUNC_END(__seamcall_saved_ret) 65