From: Antonio Nino Diaz Date: Tue, 22 May 2018 09:09:10 +0000 (+0100) Subject: context_mgmt: Make cm_init_context_common public X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=1634cae89d0e62853f6addbbaef8557893ee5613;p=project%2Fbcm63xx%2Fatf.git context_mgmt: Make cm_init_context_common public This function can be currently accessed through the wrappers cm_init_context_by_index() and cm_init_my_context(). However, they only work on contexts that are associated to a CPU. By making this function public, it is possible to set up a context that isn't associated to any CPU. For consistency, it has been renamed to cm_setup_context(). Change-Id: Ib2146105abc8137bab08745a8adb30ca2c4cedf4 Signed-off-by: Antonio Nino Diaz --- diff --git a/include/lib/el3_runtime/context_mgmt.h b/include/lib/el3_runtime/context_mgmt.h index eb7a9534..e3f7726a 100644 --- a/include/lib/el3_runtime/context_mgmt.h +++ b/include/lib/el3_runtime/context_mgmt.h @@ -7,11 +7,11 @@ #ifndef __CM_H__ #define __CM_H__ -#ifndef AARCH32 #include #include +#include +#include #include -#endif /******************************************************************************* * Forward declarations @@ -32,6 +32,7 @@ void cm_set_context(void *context, uint32_t security_state); void cm_init_my_context(const struct entry_point_info *ep); void cm_init_context_by_index(unsigned int cpu_idx, const struct entry_point_info *ep); +void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep); void cm_prepare_el3_exit(uint32_t security_state); #ifndef AARCH32 diff --git a/lib/el3_runtime/aarch32/context_mgmt.c b/lib/el3_runtime/aarch32/context_mgmt.c index c784c225..11ef6e5f 100644 --- a/lib/el3_runtime/aarch32/context_mgmt.c +++ b/lib/el3_runtime/aarch32/context_mgmt.c @@ -41,8 +41,7 @@ void cm_init(void) * entry_point_info structure. * * The security state to initialize is determined by the SECURE attribute - * of the entry_point_info. The function returns a pointer to the initialized - * context and sets this as the next context to return to. + * of the entry_point_info. * * The EE and ST attributes are used to configure the endianness and secure * timer availability for the new execution context. @@ -51,7 +50,7 @@ void cm_init(void) * el3_exit(). For Secure-EL1 cm_prepare_el3_exit() is equivalent to * cm_e1_sysreg_context_restore(). ******************************************************************************/ -static void cm_init_context_common(cpu_context_t *ctx, const entry_point_info_t *ep) +void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep) { unsigned int security_state; uint32_t scr, sctlr; @@ -149,7 +148,7 @@ void cm_init_context_by_index(unsigned int cpu_idx, { cpu_context_t *ctx; ctx = cm_get_context_by_index(cpu_idx, GET_SECURITY_STATE(ep->h.attr)); - cm_init_context_common(ctx, ep); + cm_setup_context(ctx, ep); } /******************************************************************************* @@ -161,7 +160,7 @@ void cm_init_my_context(const entry_point_info_t *ep) { cpu_context_t *ctx; ctx = cm_get_context(GET_SECURITY_STATE(ep->h.attr)); - cm_init_context_common(ctx, ep); + cm_setup_context(ctx, ep); } /******************************************************************************* diff --git a/lib/el3_runtime/aarch64/context_mgmt.c b/lib/el3_runtime/aarch64/context_mgmt.c index d8267e29..f389368d 100644 --- a/lib/el3_runtime/aarch64/context_mgmt.c +++ b/lib/el3_runtime/aarch64/context_mgmt.c @@ -49,8 +49,7 @@ void cm_init(void) * entry_point_info structure. * * The security state to initialize is determined by the SECURE attribute - * of the entry_point_info. The function returns a pointer to the initialized - * context and sets this as the next context to return to. + * of the entry_point_info. * * The EE and ST attributes are used to configure the endianess and secure * timer availability for the new execution context. @@ -59,7 +58,7 @@ void cm_init(void) * el3_exit(). For Secure-EL1 cm_prepare_el3_exit() is equivalent to * cm_e1_sysreg_context_restore(). ******************************************************************************/ -static void cm_init_context_common(cpu_context_t *ctx, const entry_point_info_t *ep) +void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep) { unsigned int security_state; uint32_t scr_el3, pmcr_el0; @@ -258,7 +257,7 @@ void cm_init_context_by_index(unsigned int cpu_idx, { cpu_context_t *ctx; ctx = cm_get_context_by_index(cpu_idx, GET_SECURITY_STATE(ep->h.attr)); - cm_init_context_common(ctx, ep); + cm_setup_context(ctx, ep); } /******************************************************************************* @@ -270,7 +269,7 @@ void cm_init_my_context(const entry_point_info_t *ep) { cpu_context_t *ctx; ctx = cm_get_context(GET_SECURITY_STATE(ep->h.attr)); - cm_init_context_common(ctx, ep); + cm_setup_context(ctx, ep); } /*******************************************************************************