SPM: Library mode SPM processing optimisations
This patch moves the bulk of SPM processing in Library mode
to request or return from a secure partition from Handler
to Secure Privileged Thread mode. It also allows the SPM
functions to be pre-empted by secure IRQs in order to reduce
interrupts servicing latency.
Signed-off-by: Antonio de Angelis <antonio.deangelis@arm.com>
Change-Id: Iadd96438514d3ffb62f4a60050460617a2b83846
diff --git a/secure_fw/spm/include/tfm_arch_v8m.h b/secure_fw/spm/include/tfm_arch_v8m.h
index cd0950d..5fbc2b2 100644
--- a/secure_fw/spm/include/tfm_arch_v8m.h
+++ b/secure_fw/spm/include/tfm_arch_v8m.h
@@ -21,6 +21,7 @@
#define EXC_RETURN_FPU_FRAME_BASIC (1 << 4)
#define EXC_RETURN_MODE_THREAD (1 << 3)
#define EXC_RETURN_STACK_PROCESS (1 << 2)
+#define EXC_RETURN_STACK_MAIN (0 << 2)
#define EXC_RETURN_RES0 (0 << 1)
#define EXC_RETURN_EXC_SECURE (1)
@@ -32,6 +33,13 @@
EXC_RETURN_STACK_PROCESS | EXC_RETURN_RES0 | \
EXC_RETURN_EXC_SECURE
+#define EXC_RETURN_THREAD_S_MSP \
+ EXC_RETURN_INDICATOR | EXC_RETURN_RES1 | \
+ EXC_RETURN_SECURE_STACK | EXC_RETURN_STACK_RULE | \
+ EXC_RETURN_FPU_FRAME_BASIC | EXC_RETURN_MODE_THREAD | \
+ EXC_RETURN_STACK_MAIN | EXC_RETURN_RES0 | \
+ EXC_RETURN_EXC_SECURE
+
#if defined(__ARM_ARCH_8_1M_MAIN__) || defined(__ARM_ARCH_8M_MAIN__)
struct tfm_arch_ctx_t {
uint32_t r4;