No functional changes.
Change-Id: I9638e02acb9b22eb794ebf45aad84348a710287e
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
* timestamp collection will need to do cache maintenance prior
* to timestamp update.
*/
- pmf_calc_timestamp_addr rt_instr_svc RT_INSTR_EXIT_HW_LOW_PWR
+ pmf_calc_timestamp_addr rt_instr_svc, RT_INSTR_EXIT_HW_LOW_PWR
mrs x1, cntpct_el0
str x1, [x0]
#endif
bl psci_warmboot_entrypoint
#if ENABLE_RUNTIME_INSTRUMENTATION
- pmf_calc_timestamp_addr rt_instr_svc RT_INSTR_EXIT_PSCI
+ pmf_calc_timestamp_addr rt_instr_svc, RT_INSTR_EXIT_PSCI
mov x19, x0
/*
uintptr_t page_align(uintptr_t value, unsigned dir)
{
/* Round up the limit to the next page boundary */
- if (value & (PAGE_SIZE - 1)) {
- value &= ~(PAGE_SIZE - 1);
+ if ((value & (PAGE_SIZE - 1U)) != 0U) {
+ value &= ~(PAGE_SIZE - 1U);
if (dir == UP)
value += PAGE_SIZE;
}
uintptr_t dev_handle;
uintptr_t image_handle;
uintptr_t image_spec;
- size_t image_size = 0;
+ size_t image_size = 0U;
int io_result;
/* Obtain a reference to the image by querying the platform layer */
/* Find the size of the image */
io_result = io_size(image_handle, &image_size);
- if ((io_result != 0) || (image_size == 0)) {
+ if ((io_result != 0) || (image_size == 0U)) {
WARN("Failed to determine the size of the image id=%u (%i)\n",
image_id, io_result);
}
return io_result;
}
- INFO("Loading image id=%u at address %p\n", image_id,
- (void *) image_base);
+ INFO("Loading image id=%u at address 0x%lx\n", image_id, image_base);
/* Find the size of the image */
io_result = io_size(image_handle, &image_size);
- if ((io_result != 0) || (image_size == 0)) {
+ if ((io_result != 0) || (image_size == 0U)) {
WARN("Failed to determine the size of the image id=%u (%i)\n",
image_id, io_result);
goto exit;
goto exit;
}
- image_data->image_size = image_size;
+ /*
+ * image_data->image_max_size is a uint32_t so image_size will always
+ * fit in image_data->image_size.
+ */
+ image_data->image_size = (uint32_t)image_size;
/* We have enough space so load the image now */
/* TODO: Consider whether to try to recover/retry a partially successful read */
goto exit;
}
- INFO("Image id=%u loaded: %p - %p\n", image_id, (void *) image_base,
- (void *) (image_base + image_size));
+ INFO("Image id=%u loaded: 0x%lx - 0x%lx\n", image_id, image_base,
+ (uintptr_t)(image_base + image_size));
exit:
- io_close(image_handle);
+ (void)io_close(image_handle);
/* Ignore improbable/unrecoverable error in 'close' */
/* TODO: Consider maintaining open device connection from this bootloader stage */
- io_dev_close(dev_handle);
+ (void)io_dev_close(dev_handle);
/* Ignore improbable/unrecoverable error in 'dev_close' */
return io_result;
* the file has been successfully loaded and authenticated and flush
* only for child images, not for the parents (certificates).
*/
- if (!is_parent_image) {
+ if (is_parent_image == 0) {
flush_dcache_range(image_data->image_base,
image_data->image_size);
}
do {
err = load_auth_image_internal(image_id, image_data, 0);
- } while (err != 0 && plat_try_next_boot_source());
+ } while ((err != 0) && (plat_try_next_boot_source() != 0));
return err;
}
******************************************************************************/
void print_entry_point_info(const entry_point_info_t *ep_info)
{
- INFO("Entry point address = %p\n", (void *)ep_info->pc);
+ INFO("Entry point address = 0x%lx\n", ep_info->pc);
INFO("SPSR = 0x%x\n", ep_info->spsr);
#define PRINT_IMAGE_ARG(n) \
******************************************************************************/
int get_bl_params_node_index(unsigned int image_id)
{
- int index;
+ unsigned int index;
assert(image_id != INVALID_IMAGE_ID);
- for (index = 0; index < bl_mem_params_desc_num; index++) {
+ for (index = 0U; index < bl_mem_params_desc_num; index++) {
if (bl_mem_params_desc_ptr[index].image_id == image_id)
- return index;
+ return (int)index;
}
return -1;
******************************************************************************/
bl_load_info_t *get_bl_load_info_from_mem_params_desc(void)
{
- int index = 0;
+ unsigned int index = 0;
/* If there is no image to start with, return NULL */
- if (!bl_mem_params_desc_num)
+ if (bl_mem_params_desc_num == 0U)
return NULL;
/* Assign initial data structures */
bl_load_info_node_t *bl_node_info =
&bl_mem_params_desc_ptr[index].load_node_mem;
bl_load_info.head = bl_node_info;
- SET_PARAM_HEAD(&bl_load_info, PARAM_BL_LOAD_INFO, VERSION_2, 0);
+ SET_PARAM_HEAD(&bl_load_info, PARAM_BL_LOAD_INFO, VERSION_2, 0U);
/* Go through the image descriptor array and create the list */
for (; index < bl_mem_params_desc_num; index++) {
bl_node_info->image_info = &bl_mem_params_desc_ptr[index].image_info;
/* Link next image if present */
- if ((index + 1) < bl_mem_params_desc_num) {
+ if ((index + 1U) < bl_mem_params_desc_num) {
/* Get the memory and link the next node */
bl_node_info->next_load_info =
- &bl_mem_params_desc_ptr[index + 1].load_node_mem;
+ &bl_mem_params_desc_ptr[index + 1U].load_node_mem;
bl_node_info = bl_node_info->next_load_info;
}
}
******************************************************************************/
bl_params_t *get_next_bl_params_from_mem_params_desc(void)
{
- int count;
- unsigned int img_id = 0;
- int link_index = 0;
+ unsigned int count;
+ unsigned int img_id = 0U;
+ unsigned int link_index = 0U;
bl_params_node_t *bl_current_exec_node = NULL;
bl_params_node_t *bl_last_exec_node = NULL;
bl_mem_params_node_t *desc_ptr;
/* If there is no image to start with, return NULL */
- if (!bl_mem_params_desc_num)
+ if (bl_mem_params_desc_num == 0U)
return NULL;
/* Get the list HEAD */
- for (count = 0; count < bl_mem_params_desc_num; count++) {
+ for (count = 0U; count < bl_mem_params_desc_num; count++) {
desc_ptr = &bl_mem_params_desc_ptr[count];
assert(next_bl_params.head != NULL);
/* Populate the HEAD information */
- SET_PARAM_HEAD(&next_bl_params, PARAM_BL_PARAMS, VERSION_2, 0);
+ SET_PARAM_HEAD(&next_bl_params, PARAM_BL_PARAMS, VERSION_2, 0U);
/*
* Go through the image descriptor array and create the list.
* This bounded loop is to make sure that we are not looping forever.
*/
- for (count = 0 ; count < bl_mem_params_desc_num; count++) {
+ for (count = 0U; count < bl_mem_params_desc_num; count++) {
desc_ptr = &bl_mem_params_desc_ptr[link_index];
bl_current_exec_node->image_info = &desc_ptr->image_info;
bl_current_exec_node->ep_info = &desc_ptr->ep_info;
- if (bl_last_exec_node) {
+ if (bl_last_exec_node != NULL) {
/* Assert if loop detected */
assert(bl_last_exec_node->next_params_info == NULL);
/* Get the index for the next hand-off image */
link_index = get_bl_params_node_index(img_id);
- assert((link_index > 0) &&
+ assert((link_index > 0U) &&
(link_index < bl_mem_params_desc_num));
}
* overwriting the previous initialisations.
*/
if (params_node == bl2_to_next_bl_params->head) {
- if (params_node->ep_info->args.arg1 == 0)
+ if (params_node->ep_info->args.arg1 == 0U)
params_node->ep_info->args.arg1 =
fw_config_base;
- if (params_node->ep_info->args.arg2 == 0)
+ if (params_node->ep_info->args.arg2 == 0U)
params_node->ep_info->args.arg2 =
hw_config_base;
} else {
- if (params_node->ep_info->args.arg0 == 0)
+ if (params_node->ep_info->args.arg0 == 0U)
params_node->ep_info->args.arg0 =
fw_config_base;
- if (params_node->ep_info->args.arg1 == 0)
+ if (params_node->ep_info->args.arg1 == 0U)
params_node->ep_info->args.arg1 =
hw_config_base;
}
unsigned int flags)
{
u_register_t x1, x2, x3, x4;
- int index;
+ unsigned int index;
unsigned int idx;
const rt_svc_desc_t *rt_svc_descs;
- assert(handle);
+ assert(handle != NULL);
idx = get_unique_oen_from_smc_fid(smc_fid);
assert(idx < MAX_RT_SVCS);
index = rt_svc_descs_indices[idx];
- if (index < 0 || index >= (int)RT_SVC_DECS_NUM)
+ if (index >= RT_SVC_DECS_NUM)
SMC_RET1(handle, SMC_UNK);
rt_svc_descs = (rt_svc_desc_t *) RT_SVC_DESCS_START;
void __init runtime_svc_init(void)
{
int rc = 0;
- unsigned int index, start_idx, end_idx;
+ uint8_t index, start_idx, end_idx;
rt_svc_desc_t *rt_svc_descs;
/* Assert the number of descriptors detected are less than maximum indices */
return;
/* Initialise internal variables to invalid state */
- memset(rt_svc_descs_indices, -1, sizeof(rt_svc_descs_indices));
+ (void)memset(rt_svc_descs_indices, -1, sizeof(rt_svc_descs_indices));
rt_svc_descs = (rt_svc_desc_t *) RT_SVC_DESCS_START;
- for (index = 0; index < RT_SVC_DECS_NUM; index++) {
+ for (index = 0U; index < RT_SVC_DECS_NUM; index++) {
rt_svc_desc_t *service = &rt_svc_descs[index];
/*
* of this service.
*/
rc = validate_rt_svc_desc(service);
- if (rc) {
+ if (rc != 0) {
ERROR("Invalid runtime service descriptor %p\n",
(void *) service);
panic();
* an initialisation routine defined. Call the initialisation
* routine for this runtime service, if it is defined.
*/
- if (service->init) {
+ if (service->init != NULL) {
rc = service->init();
- if (rc) {
+ if (rc != 0) {
ERROR("Error initializing runtime service %s\n",
service->name);
continue;
* entity range.
*/
#if SMCCC_MAJOR_VERSION == 1
- start_idx = get_unique_oen(service->start_oen,
- service->call_type);
- end_idx = get_unique_oen(service->end_oen,
- service->call_type);
+ start_idx = (uint8_t)get_unique_oen(service->start_oen,
+ service->call_type);
+ end_idx = (uint8_t)get_unique_oen(service->end_oen,
+ service->call_type);
#elif SMCCC_MAJOR_VERSION == 2
- start_idx = get_rt_desc_idx(service->start_oen,
- service->is_vendor);
- end_idx = get_rt_desc_idx(service->end_oen,
- service->is_vendor);
+ start_idx = (uint8_t)get_rt_desc_idx(service->start_oen,
+ service->is_vendor);
+ end_idx = (uint8_t)get_rt_desc_idx(service->end_oen,
+ service->is_vendor);
#endif
assert(start_idx <= end_idx);
assert(end_idx < MAX_RT_SVCS);
#include <param_header.h>
#include <utils_def.h>
-#define UP 1
-#define DOWN 0
+#define UP U(1)
+#define DOWN U(0)
/*******************************************************************************
* Constants to identify the location of a memory region in a given memory
* layout.
******************************************************************************/
-#define TOP 0x1
-#define BOTTOM !TOP
+#define TOP U(0x1)
+#define BOTTOM U(0x0)
/*
* The following are used for image state attributes.
* Image can only be in one of the following state.
*/
-#define IMAGE_STATE_RESET 0
-#define IMAGE_STATE_COPIED 1
-#define IMAGE_STATE_COPYING 2
-#define IMAGE_STATE_AUTHENTICATED 3
-#define IMAGE_STATE_EXECUTED 4
-#define IMAGE_STATE_INTERRUPTED 5
+#define IMAGE_STATE_RESET U(0)
+#define IMAGE_STATE_COPIED U(1)
+#define IMAGE_STATE_COPYING U(2)
+#define IMAGE_STATE_AUTHENTICATED U(3)
+#define IMAGE_STATE_EXECUTED U(4)
+#define IMAGE_STATE_INTERRUPTED U(5)
#define IMAGE_ATTRIB_SKIP_LOADING U(0x02)
#define IMAGE_ATTRIB_PLAT_SETUP U(0x04)
/*******************************************************************************
* Constants to indicate type of exception to the common exception handler.
******************************************************************************/
-#define SYNC_EXCEPTION_SP_EL0 0x0
-#define IRQ_SP_EL0 0x1
-#define FIQ_SP_EL0 0x2
-#define SERROR_SP_EL0 0x3
-#define SYNC_EXCEPTION_SP_ELX 0x4
-#define IRQ_SP_ELX 0x5
-#define FIQ_SP_ELX 0x6
-#define SERROR_SP_ELX 0x7
-#define SYNC_EXCEPTION_AARCH64 0x8
-#define IRQ_AARCH64 0x9
-#define FIQ_AARCH64 0xa
-#define SERROR_AARCH64 0xb
-#define SYNC_EXCEPTION_AARCH32 0xc
-#define IRQ_AARCH32 0xd
-#define FIQ_AARCH32 0xe
-#define SERROR_AARCH32 0xf
+#define SYNC_EXCEPTION_SP_EL0 U(0x0)
+#define IRQ_SP_EL0 U(0x1)
+#define FIQ_SP_EL0 U(0x2)
+#define SERROR_SP_EL0 U(0x3)
+#define SYNC_EXCEPTION_SP_ELX U(0x4)
+#define IRQ_SP_ELX U(0x5)
+#define FIQ_SP_ELX U(0x6)
+#define SERROR_SP_ELX U(0x7)
+#define SYNC_EXCEPTION_AARCH64 U(0x8)
+#define IRQ_AARCH64 U(0x9)
+#define FIQ_AARCH64 U(0xa)
+#define SERROR_AARCH64 U(0xb)
+#define SYNC_EXCEPTION_AARCH32 U(0xc)
+#define IRQ_AARCH32 U(0xd)
+#define FIQ_AARCH32 U(0xe)
+#define SERROR_AARCH32 U(0xf)
#ifndef __ASSEMBLY__
#include <cassert.h>
#define __FDT_WRAPPERS__
/* Number of cells, given total length in bytes. Each cell is 4 bytes long */
-#define NCELLS(len) ((len) / 4)
+#define NCELLS(len) ((len) / 4U)
int fdtw_read_cells(const void *dtb, int node, const char *prop,
unsigned int cells, void *value);
* descriptor
*/
#ifdef AARCH32
-#define RT_SVC_SIZE_LOG2 4
-#define RT_SVC_DESC_INIT 8
-#define RT_SVC_DESC_HANDLE 12
+#define RT_SVC_SIZE_LOG2 U(4)
+#define RT_SVC_DESC_INIT U(8)
+#define RT_SVC_DESC_HANDLE U(12)
#else
-#define RT_SVC_SIZE_LOG2 5
-#define RT_SVC_DESC_INIT 16
-#define RT_SVC_DESC_HANDLE 24
+#define RT_SVC_SIZE_LOG2 U(5)
+#define RT_SVC_DESC_INIT U(16)
+#define RT_SVC_DESC_HANDLE U(24)
#endif /* AARCH32 */
-#define SIZEOF_RT_SVC_DESC (1 << RT_SVC_SIZE_LOG2)
+#define SIZEOF_RT_SVC_DESC (U(1) << RT_SVC_SIZE_LOG2)
/*
* handler and so the total number of runtime services is 32.
*/
#if SMCCC_MAJOR_VERSION == 1
-#define MAX_RT_SVCS 128
+#define MAX_RT_SVCS U(128)
#elif SMCCC_MAJOR_VERSION == 2
-#define MAX_RT_SVCS 32
+#define MAX_RT_SVCS U(32)
#endif
#ifndef __ASSEMBLY__
#if SMCCC_MAJOR_VERSION == 1
/*
- * This macro combines the call type and the owning entity number corresponding
- * to a runtime service to generate a unique owning entity number. This unique
- * oen is used to access an entry in the 'rt_svc_descs_indices' array. The entry
- * contains the index of the service descriptor in the 'rt_svc_descs' array.
+ * This function combines the call type and the owning entity number
+ * corresponding to a runtime service to generate a unique owning entity number.
+ * This unique oen is used to access an entry in the 'rt_svc_descs_indices'
+ * array. The entry contains the index of the service descriptor in the
+ * 'rt_svc_descs' array.
*/
-#define get_unique_oen(oen, call_type) \
- (((uint32_t)(oen) & FUNCID_OEN_MASK) | \
- (((uint32_t)(call_type) & FUNCID_TYPE_MASK) << FUNCID_OEN_WIDTH))
+static inline uint32_t get_unique_oen(uint32_t oen, uint32_t call_type)
+{
+ return ((call_type & FUNCID_TYPE_MASK) << FUNCID_OEN_WIDTH) |
+ (oen & FUNCID_OEN_MASK);
+}
/*
- * This macro generates the unique owning entity number from the SMC Function
+ * This function generates the unique owning entity number from the SMC Function
* ID. This unique oen is used to access an entry in the 'rt_svc_descs_indices'
* array to invoke the corresponding runtime service handler during SMC
* handling.
*/
-#define get_unique_oen_from_smc_fid(fid) \
- get_unique_oen(GET_SMC_OEN(fid), GET_SMC_TYPE(fid))
+static inline uint32_t get_unique_oen_from_smc_fid(uint32_t fid)
+{
+ return get_unique_oen(GET_SMC_OEN(fid), GET_SMC_TYPE(fid));
+}
#elif SMCCC_MAJOR_VERSION == 2
/*
- * This macro combines the owning entity number corresponding to a runtime
+ * This function combines the owning entity number corresponding to a runtime
* service with one extra bit for the vendor namespace to generate an index into
* the 'rt_svc_descs_indices' array. The entry contains the index of the service
* descriptor in the 'rt_svc_descs' array.
*/
-#define get_rt_desc_idx(oen, is_vendor) \
- (((uint32_t)(oen) & FUNCID_OEN_MASK) | \
- (((uint32_t)(is_vendor) & 1U) << FUNCID_OEN_WIDTH))
+static inline uint32_t get_rt_desc_idx(uint32_t oen, uint32_t is_vendor)
+{
+ return ((is_vendor & 1U) << FUNCID_OEN_WIDTH) |
+ (oen & FUNCID_OEN_MASK);
+}
#endif
#include <smccc.h>
/* These are offsets to registers in smc_ctx_t */
-#define SMC_CTX_GPREG_R0 0x0
-#define SMC_CTX_GPREG_R1 0x4
-#define SMC_CTX_GPREG_R2 0x8
-#define SMC_CTX_GPREG_R3 0xC
-#define SMC_CTX_GPREG_R4 0x10
-#define SMC_CTX_GPREG_R5 0x14
-#define SMC_CTX_SP_USR 0x34
-#define SMC_CTX_SPSR_MON 0x78
-#define SMC_CTX_SP_MON 0x7C
-#define SMC_CTX_LR_MON 0x80
-#define SMC_CTX_SCR 0x84
-#define SMC_CTX_PMCR 0x88
-#define SMC_CTX_SIZE 0x90
+#define SMC_CTX_GPREG_R0 U(0x0)
+#define SMC_CTX_GPREG_R1 U(0x4)
+#define SMC_CTX_GPREG_R2 U(0x8)
+#define SMC_CTX_GPREG_R3 U(0xC)
+#define SMC_CTX_GPREG_R4 U(0x10)
+#define SMC_CTX_GPREG_R5 U(0x14)
+#define SMC_CTX_SP_USR U(0x34)
+#define SMC_CTX_SPSR_MON U(0x78)
+#define SMC_CTX_SP_MON U(0x7C)
+#define SMC_CTX_LR_MON U(0x80)
+#define SMC_CTX_SCR U(0x84)
+#define SMC_CTX_PMCR U(0x88)
+#define SMC_CTX_SIZE U(0x90)
#ifndef __ASSEMBLY__
#include <cassert.h>
CASSERT(SMC_CTX_SPSR_MON == __builtin_offsetof(smc_ctx_t, spsr_mon), \
assert_smc_ctx_spsr_mon_offset_mismatch);
-CASSERT((sizeof(smc_ctx_t) & 0x7) == 0, assert_smc_ctx_not_aligned);
+CASSERT((sizeof(smc_ctx_t) & 0x7U) == 0U, assert_smc_ctx_not_aligned);
CASSERT(SMC_CTX_SIZE == sizeof(smc_ctx_t), assert_smc_ctx_size_mismatch);
/* Convenience macros to return from SMC handler */
#ifndef __ASSEMBLY__
#include <context.h>
+#include <stdbool.h>
/* Convenience macros to return from SMC handler */
#define SMC_RET0(_h) { \
_x2 = read_ctx_reg(regs, CTX_GPREG_X2); \
_x3 = read_ctx_reg(regs, CTX_GPREG_X3); \
_x4 = read_ctx_reg(regs, CTX_GPREG_X4); \
- } while (0)
+ } while (false)
#endif /*__ASSEMBLY__*/
/*
- * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
* for the given service name and local timestamp id.
* Clobbers: x0 - x9
*/
- .macro pmf_calc_timestamp_addr _name _tid
+ .macro pmf_calc_timestamp_addr _name, _tid
mov x9, x30
bl plat_my_core_pos
mov x30, x9
/*
- * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef __RUNTIME_INSTR_H__
#define __RUNTIME_INSTR_H__
-#define RT_INSTR_ENTER_PSCI 0
-#define RT_INSTR_EXIT_PSCI 1
-#define RT_INSTR_ENTER_HW_LOW_PWR 2
-#define RT_INSTR_EXIT_HW_LOW_PWR 3
-#define RT_INSTR_ENTER_CFLUSH 4
-#define RT_INSTR_EXIT_CFLUSH 5
-#define RT_INSTR_TOTAL_IDS 6
+#include <utils_def.h>
+
+#define RT_INSTR_ENTER_PSCI U(0)
+#define RT_INSTR_EXIT_PSCI U(1)
+#define RT_INSTR_ENTER_HW_LOW_PWR U(2)
+#define RT_INSTR_EXIT_HW_LOW_PWR U(3)
+#define RT_INSTR_ENTER_CFLUSH U(4)
+#define RT_INSTR_EXIT_CFLUSH U(5)
+#define RT_INSTR_TOTAL_IDS U(6)
#ifndef __ASSEMBLY__
PMF_DECLARE_CAPTURE_TIMESTAMP(rt_instr_svc)
#include <bl_common.h>
#include <platform_def.h>
+#include <utils_def.h>
#include <xlat_tables_defs.h>
/******************************************************************************
#define BL2_RO_DATA_END round_up(BL2_ROM_END, PAGE_SIZE)
#endif /* BL2_IN_XIP_MEM */
#else
-#define BL_RO_DATA_BASE 0
-#define BL_RO_DATA_END 0
+#define BL_RO_DATA_BASE UL(0)
+#define BL_RO_DATA_END UL(0)
#define BL1_CODE_END round_up(BL1_ROM_END, PAGE_SIZE)
#if BL2_IN_XIP_MEM
-#define BL2_RO_DATA_BASE 0
-#define BL2_RO_DATA_END 0
+#define BL2_RO_DATA_BASE UL(0)
+#define BL2_RO_DATA_END UL(0)
#define BL2_CODE_END round_up(BL2_ROM_END, PAGE_SIZE)
#endif /* BL2_IN_XIP_MEM */
#endif /* SEPARATE_CODE_AND_RODATA */