diff options
Diffstat (limited to 'plat')
-rw-r--r-- | plat/arm/common/arm_common.mk | 2 | ||||
-rw-r--r-- | plat/arm/common/arm_sip_svc.c | 20 | ||||
-rw-r--r-- | plat/arm/common/plat_arm_sip_svc.c | 35 | ||||
-rw-r--r-- | plat/nuvoton/npcm845x/platform.mk | 4 |
4 files changed, 49 insertions, 12 deletions
diff --git a/plat/arm/common/arm_common.mk b/plat/arm/common/arm_common.mk index 41d1b66c1..421c8e98f 100644 --- a/plat/arm/common/arm_common.mk +++ b/plat/arm/common/arm_common.mk @@ -331,9 +331,11 @@ endif ifeq (${ARCH}, aarch64) BL31_SOURCES += plat/arm/common/aarch64/execution_state_switch.c\ plat/arm/common/arm_sip_svc.c \ + plat/arm/common/plat_arm_sip_svc.c \ ${ARM_SVC_HANDLER_SRCS} else BL32_SOURCES += plat/arm/common/arm_sip_svc.c \ + plat/arm/common/plat_arm_sip_svc.c \ ${ARM_SVC_HANDLER_SRCS} endif endif diff --git a/plat/arm/common/arm_sip_svc.c b/plat/arm/common/arm_sip_svc.c index 352d47751..09226f4b7 100644 --- a/plat/arm/common/arm_sip_svc.c +++ b/plat/arm/common/arm_sip_svc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2023, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2016-2023, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -13,9 +13,6 @@ #include <lib/pmf/pmf.h> #include <plat/arm/common/arm_sip_svc.h> #include <plat/arm/common/plat_arm.h> -#if ENABLE_SPMD_LP -#include <services/el3_spmd_logical_sp.h> -#endif #include <tools_share/uuid.h> /* ARM SiP Service UUID */ @@ -136,15 +133,16 @@ static uintptr_t arm_sip_handler(unsigned int smc_fid, SMC_RET2(handle, ARM_SIP_SVC_VERSION_MAJOR, ARM_SIP_SVC_VERSION_MINOR); default: -#if ENABLE_SPMD_LP - return plat_spmd_logical_sp_smc_handler(smc_fid, x1, x2, x3, x4, - cookie, handle, flags); -#else - WARN("Unimplemented ARM SiP Service Call: 0x%x \n", smc_fid); - SMC_RET1(handle, SMC_UNK); -#endif + break; } + /* + * Fall back to allow Arm platform specific handler. + * TODO: Refactor needed to move out generic handlers from this file and + * only keep Arm Platform specific handlers here. + */ + return plat_arm_sip_handler(smc_fid, x1, x2, x3, x4, + cookie, handle, flags); } diff --git a/plat/arm/common/plat_arm_sip_svc.c b/plat/arm/common/plat_arm_sip_svc.c new file mode 100644 index 000000000..33e872b58 --- /dev/null +++ b/plat/arm/common/plat_arm_sip_svc.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2023, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <stdint.h> + +#include <common/debug.h> +#include <common/runtime_svc.h> + +#include <plat/arm/common/arm_sip_svc.h> +#include <plat/common/platform.h> + +#if ENABLE_SPMD_LP +#include <services/el3_spmd_logical_sp.h> +#endif + +uintptr_t plat_arm_sip_handler(uint32_t smc_fid, + u_register_t x1, + u_register_t x2, + u_register_t x3, + u_register_t x4, + void *cookie, + void *handle, + u_register_t flags) +{ +#if ENABLE_SPMD_LP + return plat_spmd_logical_sp_smc_handler(smc_fid, x1, x2, x3, x4, + cookie, handle, flags); +#else + WARN("Unimplemented ARM SiP Service Call: 0x%x\n", smc_fid); + SMC_RET1(handle, SMC_UNK); +#endif +} diff --git a/plat/nuvoton/npcm845x/platform.mk b/plat/nuvoton/npcm845x/platform.mk index 5120cc6c6..cb5a55352 100644 --- a/plat/nuvoton/npcm845x/platform.mk +++ b/plat/nuvoton/npcm845x/platform.mk @@ -1,5 +1,5 @@ # -# Copyright (c) 2015-2023, ARM Limited and Contributors. All rights reserved. +# Copyright (c) 2015-2023, Arm Limited and Contributors. All rights reserved. # # Copyright (c) 2017-2023 Nuvoton Ltd. # @@ -273,9 +273,11 @@ ifeq (${ENABLE_PMF}, 1) ifeq (${ARCH}, aarch64) BL31_SOURCES += plat/arm/common/aarch64/execution_state_switch.c \ plat/arm/common/arm_sip_svc.c \ + plat/arm/common/plat_arm_sip_svc.c \ lib/pmf/pmf_smc.c else BL32_SOURCES += plat/arm/common/arm_sip_svc.c \ + plat/arm/common/plat_arm_sip_svc.c \ lib/pmf/pmf_smc.c endif endif |