1*5096aeb2SMarc Bonnici /* 2*5096aeb2SMarc Bonnici * Copyright (c) 2022, ARM Limited and Contributors. All rights reserved. 3*5096aeb2SMarc Bonnici * 4*5096aeb2SMarc Bonnici * SPDX-License-Identifier: BSD-3-Clause 5*5096aeb2SMarc Bonnici */ 6*5096aeb2SMarc Bonnici 7*5096aeb2SMarc Bonnici #ifndef SPMC_SVC_H 8*5096aeb2SMarc Bonnici #define SPMC_SVC_H 9*5096aeb2SMarc Bonnici 10*5096aeb2SMarc Bonnici #ifndef __ASSEMBLER__ 11*5096aeb2SMarc Bonnici #include <stdint.h> 12*5096aeb2SMarc Bonnici 13*5096aeb2SMarc Bonnici #include <lib/utils_def.h> 14*5096aeb2SMarc Bonnici #include <services/ffa_svc.h> 15*5096aeb2SMarc Bonnici 16*5096aeb2SMarc Bonnici int spmc_setup(void); 17*5096aeb2SMarc Bonnici void *spmc_get_config_addr(void); 18*5096aeb2SMarc Bonnici 19*5096aeb2SMarc Bonnici void spmc_set_config_addr(uintptr_t soc_fw_config); 20*5096aeb2SMarc Bonnici 21*5096aeb2SMarc Bonnici uint64_t spmc_smc_handler(uint32_t smc_fid, 22*5096aeb2SMarc Bonnici bool secure_origin, 23*5096aeb2SMarc Bonnici uint64_t x1, 24*5096aeb2SMarc Bonnici uint64_t x2, 25*5096aeb2SMarc Bonnici uint64_t x3, 26*5096aeb2SMarc Bonnici uint64_t x4, 27*5096aeb2SMarc Bonnici void *cookie, 28*5096aeb2SMarc Bonnici void *handle, 29*5096aeb2SMarc Bonnici uint64_t flags); 30*5096aeb2SMarc Bonnici 31*5096aeb2SMarc Bonnici static inline bool is_spmc_at_el3(void) 32*5096aeb2SMarc Bonnici { 33*5096aeb2SMarc Bonnici return SPMC_AT_EL3 == 1; 34*5096aeb2SMarc Bonnici } 35*5096aeb2SMarc Bonnici 36*5096aeb2SMarc Bonnici #endif /* __ASSEMBLER__ */ 37*5096aeb2SMarc Bonnici 38*5096aeb2SMarc Bonnici #endif /* SPMC_SVC_H */ 39