diff --git a/include/services/spm_svc.h b/include/services/spm_svc.h index 7a69b28..763b24e 100644 --- a/include/services/spm_svc.h +++ b/include/services/spm_svc.h @@ -7,6 +7,8 @@ #ifndef SPM_SVC_H #define SPM_SVC_H +#if SPM_DEPRECATED + #include #define SPM_VERSION_MAJOR U(0) @@ -59,12 +61,16 @@ #define SPM_DENIED -3 #define SPM_NO_MEMORY -5 +#endif /* SPM_DEPRECATED */ + #ifndef __ASSEMBLY__ #include int32_t spm_setup(void); +#if SPM_DEPRECATED + uint64_t spm_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, @@ -77,6 +83,8 @@ /* Helper to enter a Secure Partition */ uint64_t spm_sp_call(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint64_t x3); +#endif /* SPM_DEPRECATED */ + #endif /* __ASSEMBLY__ */ #endif /* SPM_SVC_H */ diff --git a/services/std_svc/spm/README.rst b/services/std_svc/spm/README.rst new file mode 100644 index 0000000..63406a3 --- /dev/null +++ b/services/std_svc/spm/README.rst @@ -0,0 +1,3 @@ +This is a prototype loosely based on the SPCI Alpha and SPRT pre-alpha +specifications. Any interface / platform API introduced for this is subject to +change as it evolves. diff --git a/services/std_svc/spm/spm_main.c b/services/std_svc/spm/spm_main.c index d80775f..460d1fb 100644 --- a/services/std_svc/spm/spm_main.c +++ b/services/std_svc/spm/spm_main.c @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include @@ -356,53 +355,3 @@ return 0; } - -/******************************************************************************* - * Secure Partition Manager SMC handler. - ******************************************************************************/ -uint64_t spm_smc_handler(uint32_t smc_fid, - uint64_t x1, - uint64_t x2, - uint64_t x3, - uint64_t x4, - void *cookie, - void *handle, - uint64_t flags) -{ - unsigned int ns; - - /* Determine which security state this SMC originated from */ - ns = is_caller_non_secure(flags); - - if (ns == SMC_FROM_SECURE) { - - /* Handle SMCs from Secure world. */ - - assert(handle == cm_get_context(SECURE)); - - /* Make next ERET jump to S-EL0 instead of S-EL1. */ - cm_set_elr_spsr_el3(SECURE, read_elr_el1(), read_spsr_el1()); - - switch (smc_fid) { - - case SPM_VERSION_AARCH32: - SMC_RET1(handle, SPM_VERSION_COMPILED); - - default: - break; - } - } else { - - /* Handle SMCs from Non-secure world. */ - - assert(handle == cm_get_context(NON_SECURE)); - - switch (smc_fid) { - - default: - break; - } - } - - SMC_RET1(handle, SMC_UNK); -} diff --git a/services/std_svc/std_svc_setup.c b/services/std_svc/std_svc_setup.c index 1a81a0a..86ecdf7 100644 --- a/services/std_svc/std_svc_setup.c +++ b/services/std_svc/std_svc_setup.c @@ -102,7 +102,7 @@ SMC_RET1(handle, ret); } -#if ENABLE_SPM +#if ENABLE_SPM && SPM_DEPRECATED /* * Dispatch SPM calls to SPM SMC handler and return its return * value