1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2022, Arm Limited. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef TRP_HELPERS_H 8*91f16700Schasinglulu #define TRP_HELPERS_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu /* Definitions to help the assembler access the SMC/ERET args structure */ 11*91f16700Schasinglulu #define TRP_ARGS_SIZE TRP_ARGS_END 12*91f16700Schasinglulu #define TRP_ARG0 0x0 13*91f16700Schasinglulu #define TRP_ARG1 0x8 14*91f16700Schasinglulu #define TRP_ARG2 0x10 15*91f16700Schasinglulu #define TRP_ARG3 0x18 16*91f16700Schasinglulu #define TRP_ARG4 0x20 17*91f16700Schasinglulu #define TRP_ARG5 0x28 18*91f16700Schasinglulu #define TRP_ARG6 0x30 19*91f16700Schasinglulu #define TRP_ARG7 0x38 20*91f16700Schasinglulu #define TRP_ARGS_END 0x40 21*91f16700Schasinglulu 22*91f16700Schasinglulu #ifndef __ASSEMBLER__ 23*91f16700Schasinglulu 24*91f16700Schasinglulu #include <platform_def.h> 25*91f16700Schasinglulu 26*91f16700Schasinglulu /* Data structure to hold SMC arguments */ 27*91f16700Schasinglulu typedef struct trp_args { 28*91f16700Schasinglulu uint64_t regs[TRP_ARGS_END >> 3]; 29*91f16700Schasinglulu } __aligned(CACHE_WRITEBACK_GRANULE) trp_args_t; 30*91f16700Schasinglulu 31*91f16700Schasinglulu trp_args_t *set_smc_args(uint64_t arg0, 32*91f16700Schasinglulu uint64_t arg1, 33*91f16700Schasinglulu uint64_t arg2, 34*91f16700Schasinglulu uint64_t arg3, 35*91f16700Schasinglulu uint64_t arg4, 36*91f16700Schasinglulu uint64_t arg5, 37*91f16700Schasinglulu uint64_t arg6, 38*91f16700Schasinglulu uint64_t arg7); 39*91f16700Schasinglulu 40*91f16700Schasinglulu __dead2 void trp_boot_abort(uint64_t err); 41*91f16700Schasinglulu 42*91f16700Schasinglulu /* TRP SMC result registers X0-X4 */ 43*91f16700Schasinglulu #define TRP_SMC_RESULT_REGS 5 44*91f16700Schasinglulu 45*91f16700Schasinglulu struct trp_smc_result { 46*91f16700Schasinglulu unsigned long long x[TRP_SMC_RESULT_REGS]; 47*91f16700Schasinglulu }; 48*91f16700Schasinglulu 49*91f16700Schasinglulu #endif /* __ASSEMBLER __ */ 50*91f16700Schasinglulu #endif /* TRP_HELPERS_H */ 51