commit
d70a7d0ce0
|
@ -4,6 +4,7 @@
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "../bl1_private.h"
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* TODO: Function that does the first bit of architectural setup.
|
* TODO: Function that does the first bit of architectural setup.
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
#include <platform.h>
|
#include <platform.h>
|
||||||
#include <smcc_helpers.h>
|
#include <smcc_helpers.h>
|
||||||
|
#include "../bl1_private.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Following arrays will be used for context management.
|
* Following arrays will be used for context management.
|
||||||
|
@ -26,13 +27,13 @@ static void *bl1_next_cpu_context_ptr;
|
||||||
static void *bl1_next_smc_context_ptr;
|
static void *bl1_next_smc_context_ptr;
|
||||||
|
|
||||||
/* Following functions are used for SMC context handling */
|
/* Following functions are used for SMC context handling */
|
||||||
void *smc_get_ctx(int security_state)
|
void *smc_get_ctx(unsigned int security_state)
|
||||||
{
|
{
|
||||||
assert(sec_state_is_valid(security_state));
|
assert(sec_state_is_valid(security_state));
|
||||||
return &bl1_smc_context[security_state];
|
return &bl1_smc_context[security_state];
|
||||||
}
|
}
|
||||||
|
|
||||||
void smc_set_next_ctx(int security_state)
|
void smc_set_next_ctx(unsigned int security_state)
|
||||||
{
|
{
|
||||||
assert(sec_state_is_valid(security_state));
|
assert(sec_state_is_valid(security_state));
|
||||||
bl1_next_smc_context_ptr = &bl1_smc_context[security_state];
|
bl1_next_smc_context_ptr = &bl1_smc_context[security_state];
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#include <arch.h>
|
#include <arch.h>
|
||||||
#include <arch_helpers.h>
|
#include <arch_helpers.h>
|
||||||
|
#include "../bl1_private.h"
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Function that does the first bit of architectural setup that affects
|
* Function that does the first bit of architectural setup that affects
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include <context_mgmt.h>
|
#include <context_mgmt.h>
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
#include <platform.h>
|
#include <platform.h>
|
||||||
|
#include "../bl1_private.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Following array will be used for context management.
|
* Following array will be used for context management.
|
||||||
|
|
|
@ -52,8 +52,6 @@ static unsigned int sec_exec_image_id = INVALID_IMAGE_ID;
|
||||||
/* Authentication status of each image. */
|
/* Authentication status of each image. */
|
||||||
extern unsigned int auth_img_flags[];
|
extern unsigned int auth_img_flags[];
|
||||||
|
|
||||||
void cm_set_next_context(void *cpu_context);
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Top level handler for servicing FWU SMCs.
|
* Top level handler for servicing FWU SMCs.
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
|
@ -34,13 +34,13 @@ static smc_ctx_t sp_min_smc_context[PLATFORM_CORE_COUNT];
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Define the smcc helper library API's
|
* Define the smcc helper library API's
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
void *smc_get_ctx(int security_state)
|
void *smc_get_ctx(unsigned int security_state)
|
||||||
{
|
{
|
||||||
assert(security_state == NON_SECURE);
|
assert(security_state == NON_SECURE);
|
||||||
return &sp_min_smc_context[plat_my_core_pos()];
|
return &sp_min_smc_context[plat_my_core_pos()];
|
||||||
}
|
}
|
||||||
|
|
||||||
void smc_set_next_ctx(int security_state)
|
void smc_set_next_ctx(unsigned int security_state)
|
||||||
{
|
{
|
||||||
assert(security_state == NON_SECURE);
|
assert(security_state == NON_SECURE);
|
||||||
/* SP_MIN stores only non secure smc context. Nothing to do here */
|
/* SP_MIN stores only non secure smc context. Nothing to do here */
|
||||||
|
|
|
@ -19,10 +19,10 @@ static const timer_ops_t *ops;
|
||||||
***********************************************************/
|
***********************************************************/
|
||||||
void udelay(uint32_t usec)
|
void udelay(uint32_t usec)
|
||||||
{
|
{
|
||||||
assert(ops != 0 &&
|
assert(ops != NULL &&
|
||||||
(ops->clk_mult != 0) &&
|
(ops->clk_mult != 0) &&
|
||||||
(ops->clk_div != 0) &&
|
(ops->clk_div != 0) &&
|
||||||
(ops->get_timer_value != 0));
|
(ops->get_timer_value != NULL));
|
||||||
|
|
||||||
uint32_t start, delta, total_delta;
|
uint32_t start, delta, total_delta;
|
||||||
|
|
||||||
|
@ -57,10 +57,10 @@ void mdelay(uint32_t msec)
|
||||||
***********************************************************/
|
***********************************************************/
|
||||||
void timer_init(const timer_ops_t *ops_ptr)
|
void timer_init(const timer_ops_t *ops_ptr)
|
||||||
{
|
{
|
||||||
assert(ops_ptr != 0 &&
|
assert(ops_ptr != NULL &&
|
||||||
(ops_ptr->clk_mult != 0) &&
|
(ops_ptr->clk_mult != 0) &&
|
||||||
(ops_ptr->clk_div != 0) &&
|
(ops_ptr->clk_div != 0) &&
|
||||||
(ops_ptr->get_timer_value != 0));
|
(ops_ptr->get_timer_value != NULL));
|
||||||
|
|
||||||
ops = ops_ptr;
|
ops = ops_ptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include <bl_common.h>
|
#include <bl_common.h>
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
#include <delay_timer.h>
|
#include <delay_timer.h>
|
||||||
|
#include <generic_delay_timer.h>
|
||||||
#include <platform.h>
|
#include <platform.h>
|
||||||
|
|
||||||
/* Ticks elapsed in one second by a signal of 1 MHz */
|
/* Ticks elapsed in one second by a signal of 1 MHz */
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
#include <io_driver.h>
|
#include <io_driver.h>
|
||||||
|
#include <io_dummy.h>
|
||||||
#include <io_storage.h>
|
#include <io_storage.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -18,7 +19,7 @@ struct file_state {
|
||||||
static struct file_state current_file = {0};
|
static struct file_state current_file = {0};
|
||||||
|
|
||||||
/* Identify the device type as dummy */
|
/* Identify the device type as dummy */
|
||||||
io_type_t device_type_dummy(void)
|
static io_type_t device_type_dummy(void)
|
||||||
{
|
{
|
||||||
return IO_TYPE_DUMMY;
|
return IO_TYPE_DUMMY;
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,7 +94,7 @@ static void set_handle(uintptr_t *handle, io_entity_t *entity)
|
||||||
static int find_first_entity(const io_entity_t *entity, unsigned int *index_out)
|
static int find_first_entity(const io_entity_t *entity, unsigned int *index_out)
|
||||||
{
|
{
|
||||||
int result = -ENOENT;
|
int result = -ENOENT;
|
||||||
for (int index = 0; index < MAX_IO_HANDLES; ++index) {
|
for (unsigned int index = 0; index < MAX_IO_HANDLES; ++index) {
|
||||||
if (entity_map[index] == entity) {
|
if (entity_map[index] == entity) {
|
||||||
result = 0;
|
result = 0;
|
||||||
*index_out = index;
|
*index_out = index;
|
||||||
|
|
|
@ -144,10 +144,10 @@ CASSERT(SMC_CTX_SIZE == sizeof(smc_ctx_t), assert_smc_ctx_size_mismatch);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Get the pointer to `smc_ctx_t` corresponding to the security state. */
|
/* Get the pointer to `smc_ctx_t` corresponding to the security state. */
|
||||||
void *smc_get_ctx(int security_state);
|
void *smc_get_ctx(unsigned int security_state);
|
||||||
|
|
||||||
/* Set the next `smc_ctx_t` corresponding to the security state. */
|
/* Set the next `smc_ctx_t` corresponding to the security state. */
|
||||||
void smc_set_next_ctx(int security_state);
|
void smc_set_next_ctx(unsigned int security_state);
|
||||||
|
|
||||||
/* Get the pointer to next `smc_ctx_t` already set by `smc_set_next_ctx()`. */
|
/* Get the pointer to next `smc_ctx_t` already set by `smc_set_next_ctx()`. */
|
||||||
void *smc_get_next_ctx(void);
|
void *smc_get_next_ctx(void);
|
||||||
|
|
|
@ -86,6 +86,7 @@ static inline void cm_set_next_context(void *context)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
void *cm_get_next_context(void);
|
void *cm_get_next_context(void);
|
||||||
|
void cm_set_next_context(void *context);
|
||||||
#endif /* AARCH32 */
|
#endif /* AARCH32 */
|
||||||
|
|
||||||
#endif /* __CM_H__ */
|
#endif /* __CM_H__ */
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#include <platform.h>
|
#include <platform.h>
|
||||||
#include "psci_private.h"
|
#include "psci_private.h"
|
||||||
|
|
||||||
void psci_system_off(void)
|
void __dead2 psci_system_off(void)
|
||||||
{
|
{
|
||||||
psci_print_power_domain_map();
|
psci_print_power_domain_map();
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ void psci_system_off(void)
|
||||||
/* This function does not return. We should never get here */
|
/* This function does not return. We should never get here */
|
||||||
}
|
}
|
||||||
|
|
||||||
void psci_system_reset(void)
|
void __dead2 psci_system_reset(void)
|
||||||
{
|
{
|
||||||
psci_print_power_domain_map();
|
psci_print_power_domain_map();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue