15096aeb2SMarc Bonnici /* 25096aeb2SMarc Bonnici * Copyright (c) 2022, ARM Limited and Contributors. All rights reserved. 35096aeb2SMarc Bonnici * 45096aeb2SMarc Bonnici * SPDX-License-Identifier: BSD-3-Clause 55096aeb2SMarc Bonnici */ 65096aeb2SMarc Bonnici 75096aeb2SMarc Bonnici #ifndef SPMC_SVC_H 85096aeb2SMarc Bonnici #define SPMC_SVC_H 95096aeb2SMarc Bonnici 105096aeb2SMarc Bonnici #ifndef __ASSEMBLER__ 115096aeb2SMarc Bonnici #include <stdint.h> 125096aeb2SMarc Bonnici 135096aeb2SMarc Bonnici #include <lib/utils_def.h> 145096aeb2SMarc Bonnici #include <services/ffa_svc.h> 15*6da76075SMarc Bonnici #include <services/spm_core_manifest.h> 165096aeb2SMarc Bonnici 175096aeb2SMarc Bonnici int spmc_setup(void); 18*6da76075SMarc Bonnici void spmc_populate_attrs(spmc_manifest_attribute_t *spmc_attrs); 195096aeb2SMarc Bonnici void *spmc_get_config_addr(void); 205096aeb2SMarc Bonnici 215096aeb2SMarc Bonnici void spmc_set_config_addr(uintptr_t soc_fw_config); 225096aeb2SMarc Bonnici 235096aeb2SMarc Bonnici uint64_t spmc_smc_handler(uint32_t smc_fid, 245096aeb2SMarc Bonnici bool secure_origin, 255096aeb2SMarc Bonnici uint64_t x1, 265096aeb2SMarc Bonnici uint64_t x2, 275096aeb2SMarc Bonnici uint64_t x3, 285096aeb2SMarc Bonnici uint64_t x4, 295096aeb2SMarc Bonnici void *cookie, 305096aeb2SMarc Bonnici void *handle, 315096aeb2SMarc Bonnici uint64_t flags); 325096aeb2SMarc Bonnici is_spmc_at_el3(void)335096aeb2SMarc Bonnicistatic inline bool is_spmc_at_el3(void) 345096aeb2SMarc Bonnici { 355096aeb2SMarc Bonnici return SPMC_AT_EL3 == 1; 365096aeb2SMarc Bonnici } 375096aeb2SMarc Bonnici 385096aeb2SMarc Bonnici #endif /* __ASSEMBLER__ */ 395096aeb2SMarc Bonnici 405096aeb2SMarc Bonnici #endif /* SPMC_SVC_H */ 41