SPM: Remove "spm request" function
Remove the unused "spm request" function.
Move the library-model-only header to its folder.
Change-Id: Iff1daddaa15841903dce51494735c86992b850f0
Signed-off-by: Mingyang Sun <mingyang.sun@arm.com>
diff --git a/secure_fw/spm/cmsis_func/arch.c b/secure_fw/spm/cmsis_func/arch.c
index bf637da..39446c0 100644
--- a/secure_fw/spm/cmsis_func/arch.c
+++ b/secure_fw/spm/cmsis_func/arch.c
@@ -9,7 +9,6 @@
#include "compiler_ext_defs.h"
#include "exception_info.h"
#include "tfm_secure_api.h"
-#include "tfm/tfm_spm_services.h"
#if defined(__ICCARM__)
uint32_t tfm_core_svc_handler(uint32_t *msp, uint32_t *psp, uint32_t exc_return);
@@ -27,20 +26,6 @@
}
__attribute__((naked))
-static int32_t tfm_spm_request(int32_t request_type)
-{
- __ASM volatile(
- "SVC %0\n"
- "BX lr\n"
- : : "I" (TFM_SVC_SPM_REQUEST));
-}
-
-int32_t tfm_spm_request_reset_vote(void)
-{
- return tfm_spm_request((int32_t)TFM_SPM_REQUEST_RESET_VOTE);
-}
-
-__attribute__((naked))
void tfm_enable_irq(psa_signal_t irq_signal)
{
__ASM("SVC %0\n"
diff --git a/secure_fw/spm/cmsis_func/include/spm_func.h b/secure_fw/spm/cmsis_func/include/spm_func.h
index 568b456..72fa860 100644
--- a/secure_fw/spm/cmsis_func/include/spm_func.h
+++ b/secure_fw/spm/cmsis_func/include/spm_func.h
@@ -374,12 +374,6 @@
uint32_t tfm_spm_partition_get_privileged_mode(uint32_t partition_flags);
/**
- * \brief Handle an SPM request by a secure service
- * \param[in] svc_ctx The stacked SVC context
- */
-void tfm_spm_request_handler(const struct tfm_state_context_t *svc_ctx);
-
-/**
* \brief Function to seal the PSP stacks for Function mode.
*/
void tfm_spm_seal_psp_stacks(void);
diff --git a/secure_fw/spm/cmsis_func/include/spm_partition_defs.h b/secure_fw/spm/cmsis_func/include/spm_partition_defs.h
new file mode 100644
index 0000000..54240f1
--- /dev/null
+++ b/secure_fw/spm/cmsis_func/include/spm_partition_defs.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2017-2021, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef __SPM_PARTITION_DEFS_H__
+#define __SPM_PARTITION_DEFS_H__
+
+/* FixMe: allocations to be settled.
+ * 8 bits reserved by TFM for secure partition Id in this prototype
+ */
+#define TFM_SP_BASE 256
+
+/* A reserved partition ID that is used for uninitialised data */
+#define INVALID_PARTITION_ID (~0U)
+
+/* ***** partition ID-s internal to the TFM ***** */
+#define TFM_INTERNAL_PARTITIONS (2)
+
+/* From the SPM point of view the non secure processing environment is handled
+ * as a special secure partition. This simplifies the context switch
+ * operations.
+ */
+#define TFM_SP_NON_SECURE_ID (0)
+
+/* A dummy partition for TFM_SP_CORE is created to handle secure partition
+ * calls done directly from the core, before NS execution started.
+ */
+#define TFM_SP_CORE_ID (1)
+
+#include "psa_manifest/pid.h"
+
+/* This limit is only used to define the size of the database reserved for
+ * partitions. There's no requirement that it match the number of partitions
+ * that get registered in a specific build
+ */
+#define SPM_MAX_PARTITIONS (TFM_MAX_USER_PARTITIONS + TFM_INTERNAL_PARTITIONS)
+
+typedef void(*sp_entry_point)(void);
+
+#endif /* __SPM_PARTITION_DEFS_H__ */
diff --git a/secure_fw/spm/cmsis_func/include/tfm_core_svc.h b/secure_fw/spm/cmsis_func/include/tfm_core_svc.h
index ce4eed8..d732de7 100644
--- a/secure_fw/spm/cmsis_func/include/tfm_core_svc.h
+++ b/secure_fw/spm/cmsis_func/include/tfm_core_svc.h
@@ -16,14 +16,13 @@
#define TFM_SVC_SFN_REQUEST (0x2)
#define TFM_SVC_SFN_RETURN (0x3)
#define TFM_SVC_SFN_COMPLETION (0x4)
-#define TFM_SVC_SPM_REQUEST (0x5)
-#define TFM_SVC_GET_BOOT_DATA (0x6)
-#define TFM_SVC_DEPRIV_REQ (0x7)
-#define TFM_SVC_DEPRIV_RET (0x8)
-#define TFM_SVC_ENABLE_IRQ (0x9)
-#define TFM_SVC_DISABLE_IRQ (0xA)
+#define TFM_SVC_GET_BOOT_DATA (0x5)
+#define TFM_SVC_DEPRIV_REQ (0x6)
+#define TFM_SVC_DEPRIV_RET (0x7)
+#define TFM_SVC_ENABLE_IRQ (0x8)
+#define TFM_SVC_DISABLE_IRQ (0x9)
#if (TFM_SPM_LOG_LEVEL > TFM_SPM_LOG_LEVEL_SILENCE)
-#define TFM_SVC_OUTPUT_UNPRIV_STRING (0xB)
+#define TFM_SVC_OUTPUT_UNPRIV_STRING (0xA)
#endif
#endif /* __TFM_CORE_SVC_H__ */
diff --git a/secure_fw/spm/cmsis_func/include/tfm_spm_services.h b/secure_fw/spm/cmsis_func/include/tfm_spm_services.h
new file mode 100644
index 0000000..a556573
--- /dev/null
+++ b/secure_fw/spm/cmsis_func/include/tfm_spm_services.h
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2018-2021, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef __TFM_SPM_SERVICES_H__
+#define __TFM_SPM_SERVICES_H__
+
+#include <stdint.h>
+
+typedef uint32_t psa_signal_t;
+
+void tfm_enable_irq(psa_signal_t irq_signal);
+void tfm_disable_irq(psa_signal_t irq_signal);
+
+#endif /* __TFM_SPM_SERVICES_H__ */
diff --git a/secure_fw/spm/cmsis_func/spm_func.c b/secure_fw/spm/cmsis_func/spm_func.c
index 252716e..882f517 100644
--- a/secure_fw/spm/cmsis_func/spm_func.c
+++ b/secure_fw/spm/cmsis_func/spm_func.c
@@ -26,7 +26,7 @@
#include "region.h"
#include "spm_partition_defs.h"
#include "psa_manifest/pid.h"
-#include "tfm/tfm_spm_services.h"
+#include "tfm_spm_services.h"
#include "tfm_spm_db_func.inc"
/* Structure to temporarily save iovec parameters from PSA client */
@@ -1372,39 +1372,6 @@
partition->runtime_data.orig_outvec = 0;
}
-void tfm_spm_request_handler(const struct tfm_state_context_t *svc_ctx)
-{
- uint32_t *res_ptr = (uint32_t *)&svc_ctx->r0;
- uint32_t running_partition_flags = 0;
- uint32_t running_partition_idx;
-
- /* Check permissions on request type basis */
-
- switch (svc_ctx->r0) {
- case TFM_SPM_REQUEST_RESET_VOTE:
- running_partition_idx =
- tfm_spm_partition_get_running_partition_idx();
- running_partition_flags = tfm_spm_partition_get_flags(
- running_partition_idx);
-
- /* Currently only PSA Root of Trust services are allowed to make Reset
- * vote request
- */
- if ((running_partition_flags & SPM_PART_FLAG_PSA_ROT) == 0) {
- *res_ptr = (uint32_t)TFM_ERROR_GENERIC;
- }
-
- /* FixMe: this is a placeholder for checks to be performed before
- * allowing execution of reset
- */
- *res_ptr = (uint32_t)TFM_SUCCESS;
-
- break;
- default:
- *res_ptr = (uint32_t)TFM_ERROR_INVALID_PARAMETER;
- }
-}
-
enum spm_err_t tfm_spm_db_init(void)
{
uint32_t i;
diff --git a/secure_fw/spm/cmsis_func/tfm_core_svcalls_func.c b/secure_fw/spm/cmsis_func/tfm_core_svcalls_func.c
index e6412a5..ef37f1b 100644
--- a/secure_fw/spm/cmsis_func/tfm_core_svcalls_func.c
+++ b/secure_fw/spm/cmsis_func/tfm_core_svcalls_func.c
@@ -68,9 +68,6 @@
case TFM_SVC_SFN_COMPLETION:
tfm_spm_partition_completion_handler(svc_args[0], svc_args[1], msp);
break;
- case TFM_SVC_SPM_REQUEST:
- tfm_spm_request_handler((struct tfm_state_context_t *)svc_args);
- break;
case TFM_SVC_DEPRIV_REQ:
retval = tfm_spm_depriv_req_handler(svc_args, exc_return);
break;