mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-27 07:15:20 +00:00
feat(fvp): new SiP call to set an interrupt pending
This patch introduces an SiP SMC call for FVP platform to set an interrupt pending. This is needed for testing purposes. Change-Id: I3dc68ffbec36d90207c30571dc1fa7ebfb75046e Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
This commit is contained in:
parent
7a2130b4a5
commit
20324013b1
4 changed files with 40 additions and 0 deletions
include/plat/arm/common
plat/arm
|
@ -35,6 +35,13 @@
|
|||
#define ARM_SIP_SVC_VERSION_MAJOR U(0x0)
|
||||
#define ARM_SIP_SVC_VERSION_MINOR U(0x2)
|
||||
|
||||
/*
|
||||
* Arm SiP SMC calls that are primarily used for testing purposes.
|
||||
*/
|
||||
#if PLAT_TEST_SPM
|
||||
#define ARM_SIP_SET_INTERRUPT_PENDING U(0x82000100)
|
||||
#endif
|
||||
|
||||
/* SiP handler specific to each Arm platform. */
|
||||
uintptr_t plat_arm_sip_handler(uint32_t smc_fid,
|
||||
u_register_t x1,
|
||||
|
|
|
@ -35,6 +35,11 @@
|
|||
load_address = <0x7000000>;
|
||||
vcpu_count = <8>;
|
||||
mem_size = <1048576>;
|
||||
/*
|
||||
* Platform specific SiP SMC call handled at EL3. Used
|
||||
* to pend an interrupt for testing purpose.
|
||||
*/
|
||||
smc_whitelist = <0x82000100>;
|
||||
};
|
||||
vm2 {
|
||||
is_ffa_partition;
|
||||
|
|
|
@ -28,6 +28,9 @@ FVP_DT_PREFIX := fvp-base-gicv3-psci
|
|||
# the FVP platform. This option defaults to 256.
|
||||
FVP_TRUSTED_SRAM_SIZE := 256
|
||||
|
||||
# Macro to enable helpers for running SPM tests. Disabled by default.
|
||||
PLAT_TEST_SPM := 0
|
||||
|
||||
# This is a very trickly TEMPORARY fix. Enabling ALL features exceeds BL31's
|
||||
# progbits limit. We need a way to build all useful configurations while waiting
|
||||
# on the fvp to increase its SRAM size. The problem is twofild:
|
||||
|
@ -535,3 +538,6 @@ endif
|
|||
ifeq (${ERRATA_ABI_SUPPORT}, 1)
|
||||
include plat/arm/board/fvp/fvp_cpu_errata.mk
|
||||
endif
|
||||
|
||||
# Build macro necessary for running SPM tests on FVP platform
|
||||
$(eval $(call add_define,PLAT_TEST_SPM))
|
||||
|
|
|
@ -25,6 +25,28 @@ uintptr_t plat_arm_sip_handler(uint32_t smc_fid,
|
|||
void *handle,
|
||||
u_register_t flags)
|
||||
{
|
||||
#if PLAT_TEST_SPM
|
||||
bool secure_origin;
|
||||
|
||||
/* Determine which security state this SMC originated from */
|
||||
secure_origin = is_caller_secure(flags);
|
||||
|
||||
switch (smc_fid) {
|
||||
case ARM_SIP_SET_INTERRUPT_PENDING:
|
||||
if (!secure_origin) {
|
||||
SMC_RET1(handle, SMC_UNK);
|
||||
}
|
||||
|
||||
VERBOSE("SiP Call- Set interrupt pending %d\n", (uint32_t)x1);
|
||||
plat_ic_set_interrupt_pending(x1);
|
||||
|
||||
SMC_RET1(handle, SMC_OK);
|
||||
break; /* Not reached */
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if ENABLE_SPMD_LP
|
||||
return plat_spmd_logical_sp_smc_handler(smc_fid, x1, x2, x3, x4,
|
||||
cookie, handle, flags);
|
||||
|
|
Loading…
Add table
Reference in a new issue