summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile13
-rw-r--r--bl31/context_mgmt.c37
-rw-r--r--docs/user-guide.md8
-rw-r--r--include/common/asm_macros.S4
-rw-r--r--include/plat/common/common_def.h9
5 files changed, 40 insertions, 31 deletions
diff --git a/Makefile b/Makefile
index 3ac03ba1..7a4be44a 100644
--- a/Makefile
+++ b/Makefile
@@ -87,8 +87,8 @@ TRUSTED_BOARD_BOOT := 0
# By default, consider that the platform's reset address is not programmable.
# The platform Makefile is free to override this value.
PROGRAMMABLE_RESET_ADDRESS := 0
-# Build flag to warn about usage of deprecated platform and framework APIs
-WARN_DEPRECATED := 0
+# Build flag to treat usage of deprecated platform and framework APIs as error.
+ERROR_DEPRECATED := 0
################################################################################
@@ -346,7 +346,7 @@ $(eval $(call assert_boolean,SAVE_KEYS))
$(eval $(call assert_boolean,TRUSTED_BOARD_BOOT))
$(eval $(call assert_boolean,PROGRAMMABLE_RESET_ADDRESS))
$(eval $(call assert_boolean,PSCI_EXTENDED_STATE_ID))
-$(eval $(call assert_boolean,WARN_DEPRECATED))
+$(eval $(call assert_boolean,ERROR_DEPRECATED))
$(eval $(call assert_boolean,ENABLE_PLAT_COMPAT))
@@ -368,7 +368,7 @@ $(eval $(call add_define,USE_COHERENT_MEM))
$(eval $(call add_define,TRUSTED_BOARD_BOOT))
$(eval $(call add_define,PROGRAMMABLE_RESET_ADDRESS))
$(eval $(call add_define,PSCI_EXTENDED_STATE_ID))
-$(eval $(call add_define,WARN_DEPRECATED))
+$(eval $(call add_define,ERROR_DEPRECATED))
$(eval $(call add_define,ENABLE_PLAT_COMPAT))
@@ -404,6 +404,11 @@ all: msg_start
msg_start:
@echo "Building ${PLAT}"
+# Check if deprecated declarations should be treated as error or not.
+ifeq (${ERROR_DEPRECATED},0)
+ CFLAGS += -Wno-error=deprecated-declarations
+endif
+
# Expand build macros for the different images
ifeq (${NEED_BL1},yes)
$(eval $(call MAKE_BL,1))
diff --git a/bl31/context_mgmt.c b/bl31/context_mgmt.c
index a0fd1b65..6d405343 100644
--- a/bl31/context_mgmt.c
+++ b/bl31/context_mgmt.c
@@ -90,6 +90,14 @@ void cm_set_context_by_index(unsigned int cpu_idx, void *context,
set_cpu_data_by_index(cpu_idx, cpu_context[security_state], context);
}
+#if !ERROR_DEPRECATED
+/*
+ * These context management helpers are deprecated but are maintained for use
+ * by SPDs which have not migrated to the new API. If ERROR_DEPRECATED
+ * is enabled, these are excluded from the build so as to force users to
+ * migrate to the new API.
+ */
+
/*******************************************************************************
* This function returns a pointer to the most recent 'cpu_context' structure
* for the CPU identified by MPIDR that was set as the context for the specified
@@ -115,6 +123,21 @@ void cm_set_context_by_mpidr(uint64_t mpidr, void *context, uint32_t security_st
}
/*******************************************************************************
+ * The following function provides a compatibility function for SPDs using the
+ * existing cm library routines. This function is expected to be invoked for
+ * initializing the cpu_context for the CPU specified by MPIDR for first use.
+ ******************************************************************************/
+void cm_init_context(unsigned long mpidr, const entry_point_info_t *ep)
+{
+ if ((mpidr & MPIDR_AFFINITY_MASK) ==
+ (read_mpidr_el1() & MPIDR_AFFINITY_MASK))
+ cm_init_my_context(ep);
+ else
+ cm_init_context_by_index(platform_get_core_pos(mpidr), ep);
+}
+#endif
+
+/*******************************************************************************
* This function is used to program the context that's used for exception
* return. This initializes the SP_EL3 to a pointer to a 'cpu_context' set for
* the required security state
@@ -261,20 +284,6 @@ void cm_init_my_context(const entry_point_info_t *ep)
}
/*******************************************************************************
- * The following function provides a compatibility function for SPDs using the
- * existing cm library routines. This function is expected to be invoked for
- * initializing the cpu_context for the CPU specified by MPIDR for first use.
- ******************************************************************************/
-void cm_init_context(unsigned long mpidr, const entry_point_info_t *ep)
-{
- if ((mpidr & MPIDR_AFFINITY_MASK) ==
- (read_mpidr_el1() & MPIDR_AFFINITY_MASK))
- cm_init_my_context(ep);
- else
- cm_init_context_by_index(platform_get_core_pos(mpidr), ep);
-}
-
-/*******************************************************************************
* Prepare the CPU system registers for first entry into secure or normal world
*
* If execution is requested to EL2 or hyp mode, SCTLR_EL2 is initialized
diff --git a/docs/user-guide.md b/docs/user-guide.md
index 7987d10e..a7a0c11f 100644
--- a/docs/user-guide.md
+++ b/docs/user-guide.md
@@ -367,10 +367,10 @@ performed.
and it governs the return value of PSCI_FEATURES API for CPU_SUSPEND
smc function id.
-* `WARN_DEPRECATED`: This option decides whether to warn the usage of
- deprecated platform APIs and context management helpers within Trusted
- Firmware. It can take the value 1 (warn the use of deprecated APIs) or
- 0. The default is 0.
+* `ERROR_DEPRECATED`: This option decides whether to treat the usage of
+ deprecated platform APIs, helper functions or drivers within Trusted
+ Firmware as error. It can take the value 1 (flag the use of deprecated
+ APIs as error) or 0. The default is 0.
#### ARM development platform specific build options
diff --git a/include/common/asm_macros.S b/include/common/asm_macros.S
index 128259f1..a331c051 100644
--- a/include/common/asm_macros.S
+++ b/include/common/asm_macros.S
@@ -101,10 +101,10 @@
/*
* Theses macros are used to create function labels for deprecated
- * APIs. If WARN_DEPRECATED is non zero, the callers of these APIs
+ * APIs. If ERROR_DEPRECATED is non zero, the callers of these APIs
* will fail to link and cause build failure.
*/
-#if WARN_DEPRECATED
+#if ERROR_DEPRECATED
.macro func_deprecated _name
func deprecated\_name
.endm
diff --git a/include/plat/common/common_def.h b/include/plat/common/common_def.h
index 077080df..43c69cc8 100644
--- a/include/plat/common/common_def.h
+++ b/include/plat/common/common_def.h
@@ -69,15 +69,10 @@
/*
* Macros to wrap declarations of deprecated APIs within Trusted Firmware.
- * The callers of these APIs will continue to compile as long as the build
- * flag WARN_DEPRECATED is zero. Else the compiler will emit a warning
- * when the callers of these APIs are compiled.
+ * The callers of these APIs will continue to compile with a warning as long
+ * as the build flag ERROR_DEPRECATED is zero.
*/
-#if WARN_DEPRECATED
#define __warn_deprecated __attribute__ ((deprecated))
-#else
-#define __warn_deprecated
-#endif
#endif /* __COMMON_DEF_H__ */