mirror of
https://github.com/CTCaer/switch-l4t-atf.git
synced 2024-11-23 17:59:40 +00:00
Remove some MISRA defects in common code
No functional changes. Change-Id: I9638e02acb9b22eb794ebf45aad84348a710287e Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
This commit is contained in:
parent
756fac649b
commit
81542c00d0
@ -124,7 +124,7 @@ func bl31_warm_entrypoint
|
||||
* 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
|
||||
@ -180,7 +180,7 @@ func bl31_warm_entrypoint
|
||||
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
|
||||
|
||||
/*
|
||||
|
@ -48,8 +48,8 @@ static int dyn_is_auth_disabled(void)
|
||||
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;
|
||||
}
|
||||
@ -106,7 +106,7 @@ size_t get_image_size(unsigned int image_id)
|
||||
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 */
|
||||
@ -127,7 +127,7 @@ size_t get_image_size(unsigned int image_id)
|
||||
|
||||
/* 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);
|
||||
}
|
||||
@ -182,12 +182,11 @@ static int load_image(unsigned int image_id, image_info_t *image_data)
|
||||
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;
|
||||
@ -200,7 +199,11 @@ static int load_image(unsigned int image_id, image_info_t *image_data)
|
||||
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 */
|
||||
@ -210,15 +213,15 @@ static int load_image(unsigned int image_id, image_info_t *image_data)
|
||||
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;
|
||||
@ -274,7 +277,7 @@ static int load_auth_image_internal(unsigned int image_id,
|
||||
* 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);
|
||||
}
|
||||
@ -296,7 +299,7 @@ int load_auth_image(unsigned int image_id, image_info_t *image_data)
|
||||
|
||||
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;
|
||||
}
|
||||
@ -306,7 +309,7 @@ int load_auth_image(unsigned int image_id, image_info_t *image_data)
|
||||
******************************************************************************/
|
||||
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) \
|
||||
|
@ -35,12 +35,12 @@ void flush_bl_params_desc(void)
|
||||
******************************************************************************/
|
||||
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;
|
||||
@ -72,17 +72,17 @@ bl_mem_params_node_t *get_bl_mem_params_node(unsigned int image_id)
|
||||
******************************************************************************/
|
||||
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++) {
|
||||
@ -92,10 +92,10 @@ bl_load_info_t *get_bl_load_info_from_mem_params_desc(void)
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -112,19 +112,19 @@ bl_load_info_t *get_bl_load_info_from_mem_params_desc(void)
|
||||
******************************************************************************/
|
||||
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];
|
||||
|
||||
@ -140,13 +140,13 @@ bl_params_t *get_next_bl_params_from_mem_params_desc(void)
|
||||
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];
|
||||
|
||||
@ -161,7 +161,7 @@ bl_params_t *get_next_bl_params_from_mem_params_desc(void)
|
||||
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);
|
||||
|
||||
@ -179,7 +179,7 @@ bl_params_t *get_next_bl_params_from_mem_params_desc(void)
|
||||
|
||||
/* 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));
|
||||
}
|
||||
|
||||
@ -243,17 +243,17 @@ void populate_next_bl_params_config(bl_params_t *bl2_to_next_bl_params)
|
||||
* 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;
|
||||
}
|
||||
|
@ -35,16 +35,16 @@ uintptr_t handle_runtime_svc(uint32_t smc_fid,
|
||||
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;
|
||||
@ -96,7 +96,7 @@ static int32_t validate_rt_svc_desc(const rt_svc_desc_t *desc)
|
||||
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 */
|
||||
@ -108,10 +108,10 @@ void __init runtime_svc_init(void)
|
||||
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];
|
||||
|
||||
/*
|
||||
@ -120,7 +120,7 @@ void __init runtime_svc_init(void)
|
||||
* of this service.
|
||||
*/
|
||||
rc = validate_rt_svc_desc(service);
|
||||
if (rc) {
|
||||
if (rc != 0) {
|
||||
ERROR("Invalid runtime service descriptor %p\n",
|
||||
(void *) service);
|
||||
panic();
|
||||
@ -133,9 +133,9 @@ void __init runtime_svc_init(void)
|
||||
* 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;
|
||||
@ -149,15 +149,15 @@ void __init runtime_svc_init(void)
|
||||
* 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);
|
||||
|
@ -11,26 +11,26 @@
|
||||
#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)
|
||||
@ -40,22 +40,22 @@
|
||||
/*******************************************************************************
|
||||
* 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>
|
||||
|
@ -10,7 +10,7 @@
|
||||
#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);
|
||||
|
@ -21,15 +21,15 @@
|
||||
* 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)
|
||||
|
||||
|
||||
/*
|
||||
@ -43,9 +43,9 @@
|
||||
* 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__
|
||||
@ -146,35 +146,42 @@ CASSERT(RT_SVC_DESC_HANDLE == __builtin_offsetof(rt_svc_desc_t, handle), \
|
||||
|
||||
#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
|
||||
|
||||
|
@ -10,19 +10,19 @@
|
||||
#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>
|
||||
@ -105,7 +105,7 @@ CASSERT(SMC_CTX_LR_MON == __builtin_offsetof(smc_ctx_t, lr_mon), \
|
||||
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 */
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <context.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/* Convenience macros to return from SMC handler */
|
||||
#define SMC_RET0(_h) { \
|
||||
@ -77,7 +78,7 @@
|
||||
_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__*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
@ -14,7 +14,7 @@
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
@ -7,13 +7,15 @@
|
||||
#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)
|
||||
|
@ -8,6 +8,7 @@
|
||||
|
||||
#include <bl_common.h>
|
||||
#include <platform_def.h>
|
||||
#include <utils_def.h>
|
||||
#include <xlat_tables_defs.h>
|
||||
|
||||
/******************************************************************************
|
||||
@ -73,12 +74,12 @@
|
||||
#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 */
|
||||
|
Loading…
Reference in New Issue
Block a user