diff options
author | Antonio Nino Diaz <antonio.ninodiaz@arm.com> | 2017-12-15 14:41:50 +0000 |
---|---|---|
committer | Antonio Nino Diaz <antonio.ninodiaz@arm.com> | 2017-12-15 14:41:50 +0000 |
commit | d261618c6d610b7faf6c8dab916ea8b32646aac4 (patch) | |
tree | 79c7043f85d6ad1f75a9bced36c9d8712ec3b4f9 | |
parent | 1d069ae099d8e2e0f7552d8715238d59b746cdf9 (diff) |
SPM: Fix version header definitions
Rename SP_VERSION macros to MM_VERSION, which is the name used in the MM
specification [1]. Also, a few more helper macros have been added.
MM-specific definitions have been moved to their own header file.
[1] http://infocenter.arm.com/help/topic/com.arm.doc.den0060a/DEN0060A_ARM_MM_Interface_Specification.pdf
Change-Id: Ieb01bce8f5e9658b16c3650b3db074e10a8f732d
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
-rw-r--r-- | cactus/cactus_main.c | 1 | ||||
-rw-r--r-- | include/runtime_services/secure_el0_payloads/mm_svc.h | 31 | ||||
-rw-r--r-- | include/runtime_services/secure_el0_payloads/spm_svc.h | 29 |
3 files changed, 42 insertions, 19 deletions
diff --git a/cactus/cactus_main.c b/cactus/cactus_main.c index bddc5a2..f04b1b4 100644 --- a/cactus/cactus_main.c +++ b/cactus/cactus_main.c @@ -6,6 +6,7 @@ #include <console.h> #include <debug.h> +#include <mm_svc.h> #include <pl011.h> #include <plat_arm.h> #include <platform_def.h> diff --git a/include/runtime_services/secure_el0_payloads/mm_svc.h b/include/runtime_services/secure_el0_payloads/mm_svc.h new file mode 100644 index 0000000..32ddc39 --- /dev/null +++ b/include/runtime_services/secure_el0_payloads/mm_svc.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __MM_SVC_H__ +#define __MM_SVC_H__ + +#include <utils_def.h> + +#define MM_VERSION_MAJOR U(1) +#define MM_VERSION_MAJOR_SHIFT 16 +#define MM_VERSION_MAJOR_MASK U(0x7FFF) +#define MM_VERSION_MINOR U(0) +#define MM_VERSION_MINOR_SHIFT 0 +#define MM_VERSION_MINOR_MASK U(0xFFFF) +#define MM_VERSION_FORM(major, minor) ((major << MM_VERSION_MAJOR_SHIFT) | (minor)) +#define MM_VERSION_COMPILED MM_VERSION_FORM(MM_VERSION_MAJOR, MM_VERSION_MINOR) + +/* + * SMC IDs defined in [1] for accessing MM services from the Non-secure world. + * These FIDs occupy the range 0x40 - 0x5f. + * [1] DEN0060A_ARM_MM_Interface_Specification.pdf + */ +#define MM_VERSION_AARCH32 U(0x84000040) + +#define MM_COMMUNICATE_AARCH64 U(0xC4000041) +#define MM_COMMUNICATE_AARCH32 U(0x84000041) + +#endif /* __MM_SVC_H__ */ diff --git a/include/runtime_services/secure_el0_payloads/spm_svc.h b/include/runtime_services/secure_el0_payloads/spm_svc.h index f876938..9b28945 100644 --- a/include/runtime_services/secure_el0_payloads/spm_svc.h +++ b/include/runtime_services/secure_el0_payloads/spm_svc.h @@ -10,27 +10,27 @@ #include <utils_def.h> #define SPM_VERSION_MAJOR U(0) +#define SPM_VERSION_MAJOR_SHIFT 16 +#define SPM_VERSION_MAJOR_MASK U(0x7FFF) #define SPM_VERSION_MINOR U(1) -#define SPM_VERSION_FORM(major, minor) ((major << 16) | (minor)) +#define SPM_VERSION_MINOR_SHIFT 0 +#define SPM_VERSION_MINOR_MASK U(0xFFFF) +#define SPM_VERSION_FORM(major, minor) ((major << SPM_VERSION_MAJOR_SHIFT) | (minor)) #define SPM_VERSION_COMPILED SPM_VERSION_FORM(SPM_VERSION_MAJOR, SPM_VERSION_MINOR) -#define SP_VERSION_MAJOR U(1) -#define SP_VERSION_MINOR U(0) -#define SP_VERSION_FORM(major, minor) ((major << 16) | (minor)) -#define SP_VERSION_COMPILED SP_VERSION_FORM(SP_VERSION_MAJOR, SP_VERSION_MINOR) - /* The macros below are used to identify SPM calls from the SMC function ID */ #define SPM_FID_MASK U(0xffff) #define SPM_FID_MIN_VALUE U(0x40) -#define SPM_FID_MAX_VALUE U(0x7f) +#define SPM_FID_MAX_VALUE U(0xbf) #define is_spm_fid(_fid) \ ((((_fid) & SPM_FID_MASK) >= SPM_FID_MIN_VALUE) && \ (((_fid) & SPM_FID_MASK) <= SPM_FID_MAX_VALUE)) /* - * SVC IDs defined for accessing services implemented by the Secure Partition + * SMC IDs defined for accessing services implemented by the Secure Partition * Manager from the Secure Partition(s). These services enable a partition to * handle delegated events and request privileged operations from the manager. + * They occupy the range 0x60-0x7f. */ #define SPM_VERSION_AARCH32 U(0x84000060) #define SP_EVENT_COMPLETE_AARCH64 U(0xC4000061) @@ -51,22 +51,13 @@ #define SP_MEMORY_ATTRIBUTES_EXEC (U(0) << 2) #define SP_MEMORY_ATTRIBUTES_NON_EXEC (U(1) << 2) -/* - * SMC IDs defined in [1] for accessing secure partition services from the - * Non-secure world. These FIDs occupy the range 0x40 - 0x5f - * [1] DEN0060A_ARM_MM_Interface_Specification.pdf - */ -#define SP_VERSION_AARCH64 U(0xC4000040) -#define SP_VERSION_AARCH32 U(0x84000040) - -#define MM_COMMUNICATE_AARCH64 U(0xC4000041) -#define MM_COMMUNICATE_AARCH32 U(0x84000041) - /* SPM error codes. */ #define SPM_SUCCESS 0 #define SPM_NOT_SUPPORTED -1 #define SPM_INVALID_PARAMETER -2 #define SPM_DENIED -3 #define SPM_NO_MEMORY -5 +#define SPM_NOT_PRESENT -7 + #endif /* __SPM_SVC_H__ */ |