diff --git a/bl1/aarch32/bl1_context_mgmt.c b/bl1/aarch32/bl1_context_mgmt.c index b5a6a34..85d35a7 100644 --- a/bl1/aarch32/bl1_context_mgmt.c +++ b/bl1/aarch32/bl1_context_mgmt.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2016-2020, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -53,10 +53,10 @@ return &bl1_cpu_context[security_state]; } -void cm_set_next_context(void *cpu_context) +void cm_set_next_context(void *context) { - assert(cpu_context); - bl1_next_cpu_context_ptr = cpu_context; + assert(context != NULL); + bl1_next_cpu_context_ptr = context; } void *cm_get_next_context(void) @@ -103,21 +103,21 @@ void bl1_prepare_next_image(unsigned int image_id) { unsigned int security_state, mode = MODE32_svc; - image_desc_t *image_desc; + image_desc_t *desc; entry_point_info_t *next_bl_ep; /* Get the image descriptor. */ - image_desc = bl1_plat_get_image_desc(image_id); - assert(image_desc); + desc = bl1_plat_get_image_desc(image_id); + assert(desc != NULL); /* Get the entry point info. */ - next_bl_ep = &image_desc->ep_info; + next_bl_ep = &desc->ep_info; /* Get the image security state. */ security_state = GET_SECURITY_STATE(next_bl_ep->h.attr); /* Prepare the SPSR for the next BL image. */ - if ((security_state != SECURE) && (GET_VIRT_EXT(read_id_pfr1()))) { + if ((security_state != SECURE) && (GET_VIRT_EXT(read_id_pfr1()) != 0U)) { mode = MODE32_hyp; } @@ -166,7 +166,7 @@ flush_smc_and_cpu_ctx(); /* Indicate that image is in execution state. */ - image_desc->state = IMAGE_STATE_EXECUTED; + desc->state = IMAGE_STATE_EXECUTED; print_entry_point_info(next_bl_ep); } diff --git a/bl1/aarch64/bl1_context_mgmt.c b/bl1/aarch64/bl1_context_mgmt.c index 210c358..fec513d 100644 --- a/bl1/aarch64/bl1_context_mgmt.c +++ b/bl1/aarch64/bl1_context_mgmt.c @@ -43,7 +43,7 @@ void bl1_prepare_next_image(unsigned int image_id) { unsigned int security_state, mode = MODE_EL1; - image_desc_t *image_desc; + image_desc_t *desc; entry_point_info_t *next_bl_ep; #if CTX_INCLUDE_AARCH32_REGS @@ -59,11 +59,11 @@ #endif /* Get the image descriptor. */ - image_desc = bl1_plat_get_image_desc(image_id); - assert(image_desc); + desc = bl1_plat_get_image_desc(image_id); + assert(desc != NULL); /* Get the entry point info. */ - next_bl_ep = &image_desc->ep_info; + next_bl_ep = &desc->ep_info; /* Get the image security state. */ security_state = GET_SECURITY_STATE(next_bl_ep->h.attr); @@ -77,7 +77,7 @@ mode = MODE_EL2; } - next_bl_ep->spsr = SPSR_64(mode, MODE_SP_ELX, + next_bl_ep->spsr = (uint32_t)SPSR_64(mode, MODE_SP_ELX, DISABLE_ALL_EXCEPTIONS); /* Allow platform to make change */ @@ -88,7 +88,7 @@ cm_prepare_el3_exit(security_state); /* Indicate that image is in execution state. */ - image_desc->state = IMAGE_STATE_EXECUTED; + desc->state = IMAGE_STATE_EXECUTED; print_entry_point_info(next_bl_ep); } diff --git a/bl1/bl1_fwu.c b/bl1/bl1_fwu.c index 42a3ded..b70bffd 100644 --- a/bl1/bl1_fwu.c +++ b/bl1/bl1_fwu.c @@ -67,28 +67,32 @@ switch (smc_fid) { case FWU_SMC_IMAGE_COPY: - SMC_RET1(handle, bl1_fwu_image_copy(x1, x2, x3, x4, flags)); + SMC_RET1(handle, bl1_fwu_image_copy((uint32_t)x1, x2, + (uint32_t)x3, (uint32_t)x4, flags)); case FWU_SMC_IMAGE_AUTH: - SMC_RET1(handle, bl1_fwu_image_auth(x1, x2, x3, flags)); + SMC_RET1(handle, bl1_fwu_image_auth((uint32_t)x1, x2, + (uint32_t)x3, flags)); case FWU_SMC_IMAGE_EXECUTE: - SMC_RET1(handle, bl1_fwu_image_execute(x1, &handle, flags)); + SMC_RET1(handle, bl1_fwu_image_execute((uint32_t)x1, &handle, + flags)); case FWU_SMC_IMAGE_RESUME: - SMC_RET1(handle, bl1_fwu_image_resume((register_t)x1, &handle, flags)); + SMC_RET1(handle, bl1_fwu_image_resume((register_t)x1, &handle, + flags)); case FWU_SMC_SEC_IMAGE_DONE: SMC_RET1(handle, bl1_fwu_sec_image_done(&handle, flags)); case FWU_SMC_IMAGE_RESET: - SMC_RET1(handle, bl1_fwu_image_reset(x1, flags)); + SMC_RET1(handle, bl1_fwu_image_reset((uint32_t)x1, flags)); case FWU_SMC_UPDATE_DONE: bl1_fwu_done((void *)x1, NULL); default: - assert(0); /* Unreachable */ + assert(false); /* Unreachable */ break; } @@ -159,14 +163,14 @@ ******************************************************************************/ static int bl1_fwu_image_check_overlaps(unsigned int image_id) { - const image_desc_t *image_desc, *checked_image_desc; + const image_desc_t *desc, *checked_desc; const image_info_t *info, *checked_info; uintptr_t image_base, image_end; uintptr_t checked_image_base, checked_image_end; - checked_image_desc = bl1_plat_get_image_desc(image_id); - checked_info = &checked_image_desc->image_info; + checked_desc = bl1_plat_get_image_desc(image_id); + checked_info = &checked_desc->image_info; /* Image being checked mustn't be empty. */ assert(checked_info->image_size != 0); @@ -182,12 +186,12 @@ (bl1_fwu_loaded_ids[i] == image_id)) continue; - image_desc = bl1_plat_get_image_desc(bl1_fwu_loaded_ids[i]); + desc = bl1_plat_get_image_desc(bl1_fwu_loaded_ids[i]); /* Only check images that are loaded or being loaded. */ - assert (image_desc && image_desc->state != IMAGE_STATE_RESET); + assert ((desc != NULL) && (desc->state != IMAGE_STATE_RESET)); - info = &image_desc->image_info; + info = &desc->image_info; /* There cannot be overlaps with an empty image. */ if (info->image_size == 0) @@ -203,10 +207,10 @@ assert (image_end > image_base); /* Check if there are overlaps. */ - if (!(image_end < checked_image_base || - checked_image_end < image_base)) { + if (!((image_end < checked_image_base) || + (checked_image_end < image_base))) { VERBOSE("Image with ID %d overlaps existing image with ID %d", - checked_image_desc->image_id, image_desc->image_id); + checked_desc->image_id, desc->image_id); return -EPERM; } } @@ -225,10 +229,11 @@ { uintptr_t dest_addr; unsigned int remaining; + image_desc_t *desc; /* Get the image descriptor. */ - image_desc_t *image_desc = bl1_plat_get_image_desc(image_id); - if (!image_desc) { + desc = bl1_plat_get_image_desc(image_id); + if (desc == NULL) { WARN("BL1-FWU: Invalid image ID %u\n", image_id); return -EPERM; } @@ -241,66 +246,66 @@ WARN("BL1-FWU: Copy not allowed from secure world.\n"); return -EPERM; } - if (GET_SECURITY_STATE(image_desc->ep_info.h.attr) == NON_SECURE) { + if (GET_SECURITY_STATE(desc->ep_info.h.attr) == NON_SECURE) { WARN("BL1-FWU: Copy not allowed for non-secure images.\n"); return -EPERM; } /* Check whether the FWU state machine is in the correct state. */ - if ((image_desc->state != IMAGE_STATE_RESET) && - (image_desc->state != IMAGE_STATE_COPYING)) { + if ((desc->state != IMAGE_STATE_RESET) && + (desc->state != IMAGE_STATE_COPYING)) { WARN("BL1-FWU: Copy not allowed at this point of the FWU" " process.\n"); return -EPERM; } - if ((!image_src) || (!block_size) || + if ((image_src == 0U) || (block_size == 0U) || check_uptr_overflow(image_src, block_size - 1)) { WARN("BL1-FWU: Copy not allowed due to invalid image source" " or block size\n"); return -ENOMEM; } - if (image_desc->state == IMAGE_STATE_COPYING) { + if (desc->state == IMAGE_STATE_COPYING) { /* * There must have been at least 1 copy operation for this image * previously. */ - assert(image_desc->copied_size != 0); + assert(desc->copied_size != 0U); /* * The image size must have been recorded in the 1st copy * operation. */ - image_size = image_desc->image_info.image_size; + image_size = desc->image_info.image_size; assert(image_size != 0); - assert(image_desc->copied_size < image_size); + assert(desc->copied_size < image_size); INFO("BL1-FWU: Continuing image copy in blocks\n"); - } else { /* image_desc->state == IMAGE_STATE_RESET */ + } else { /* desc->state == IMAGE_STATE_RESET */ INFO("BL1-FWU: Initial call to copy an image\n"); /* * image_size is relevant only for the 1st copy request, it is * then ignored for subsequent calls for this image. */ - if (!image_size) { + if (image_size == 0) { WARN("BL1-FWU: Copy not allowed due to invalid image" " size\n"); return -ENOMEM; } /* Check that the image size to load is within limit */ - if (image_size > image_desc->image_info.image_max_size) { + if (image_size > desc->image_info.image_max_size) { WARN("BL1-FWU: Image size out of bounds\n"); return -ENOMEM; } /* Save the given image size. */ - image_desc->image_info.image_size = image_size; + desc->image_info.image_size = image_size; /* Make sure the image doesn't overlap other images. */ - if (bl1_fwu_image_check_overlaps(image_id)) { - image_desc->image_info.image_size = 0; + if (bl1_fwu_image_check_overlaps(image_id) != 0) { + desc->image_info.image_size = 0; WARN("BL1-FWU: This image overlaps another one\n"); return -EPERM; } @@ -310,32 +315,32 @@ * FWU code doesn't necessarily do it when it resets the state * machine. */ - image_desc->copied_size = 0; + desc->copied_size = 0; } /* * If the given block size is more than the total image size * then clip the former to the latter. */ - remaining = image_size - image_desc->copied_size; + remaining = image_size - desc->copied_size; if (block_size > remaining) { WARN("BL1-FWU: Block size is too big, clipping it.\n"); block_size = remaining; } /* Make sure the source image is mapped in memory. */ - if (bl1_plat_mem_check(image_src, block_size, flags)) { + if (bl1_plat_mem_check(image_src, block_size, flags) != 0) { WARN("BL1-FWU: Source image is not mapped.\n"); return -ENOMEM; } - if (bl1_fwu_add_loaded_id(image_id)) { + if (bl1_fwu_add_loaded_id(image_id) != 0) { WARN("BL1-FWU: Too many images loaded at the same time.\n"); return -ENOMEM; } /* Allow the platform to handle pre-image load before copying */ - if (image_desc->state == IMAGE_STATE_RESET) { + if (desc->state == IMAGE_STATE_RESET) { if (bl1_plat_handle_pre_image_load(image_id) != 0) { ERROR("BL1-FWU: Failure in pre-image load of image id %d\n", image_id); @@ -344,12 +349,12 @@ } /* Everything looks sane. Go ahead and copy the block of data. */ - dest_addr = image_desc->image_info.image_base + image_desc->copied_size; - memcpy((void *) dest_addr, (const void *) image_src, block_size); + dest_addr = desc->image_info.image_base + desc->copied_size; + (void)memcpy((void *) dest_addr, (const void *) image_src, block_size); flush_dcache_range(dest_addr, block_size); - image_desc->copied_size += block_size; - image_desc->state = (block_size == remaining) ? + desc->copied_size += block_size; + desc->state = (block_size == remaining) ? IMAGE_STATE_COPIED : IMAGE_STATE_COPYING; INFO("BL1-FWU: Copy operation successful.\n"); @@ -367,27 +372,28 @@ int result; uintptr_t base_addr; unsigned int total_size; + image_desc_t *desc; /* Get the image descriptor. */ - image_desc_t *image_desc = bl1_plat_get_image_desc(image_id); - if (!image_desc) + desc = bl1_plat_get_image_desc(image_id); + if (desc == NULL) return -EPERM; if (GET_SECURITY_STATE(flags) == SECURE) { - if (image_desc->state != IMAGE_STATE_RESET) { + if (desc->state != IMAGE_STATE_RESET) { WARN("BL1-FWU: Authentication from secure world " "while in invalid state\n"); return -EPERM; } } else { - if (GET_SECURITY_STATE(image_desc->ep_info.h.attr) == SECURE) { - if (image_desc->state != IMAGE_STATE_COPIED) { + if (GET_SECURITY_STATE(desc->ep_info.h.attr) == SECURE) { + if (desc->state != IMAGE_STATE_COPIED) { WARN("BL1-FWU: Authentication of secure image " "from non-secure world while not in copied state\n"); return -EPERM; } } else { - if (image_desc->state != IMAGE_STATE_RESET) { + if (desc->state != IMAGE_STATE_RESET) { WARN("BL1-FWU: Authentication of non-secure image " "from non-secure world while in invalid state\n"); return -EPERM; @@ -395,15 +401,15 @@ } } - if (image_desc->state == IMAGE_STATE_COPIED) { + if (desc->state == IMAGE_STATE_COPIED) { /* * Image is in COPIED state. * Use the stored address and size. */ - base_addr = image_desc->image_info.image_base; - total_size = image_desc->image_info.image_size; + base_addr = desc->image_info.image_base; + total_size = desc->image_info.image_size; } else { - if ((!image_src) || (!image_size) || + if ((image_src == 0U) || (image_size == 0U) || check_uptr_overflow(image_src, image_size - 1)) { WARN("BL1-FWU: Auth not allowed due to invalid" " image source/size\n"); @@ -415,12 +421,12 @@ * Check the parameters and authenticate the source image in place. */ if (bl1_plat_mem_check(image_src, image_size, \ - image_desc->ep_info.h.attr)) { + desc->ep_info.h.attr) != 0) { WARN("BL1-FWU: Authentication arguments source/size not mapped\n"); return -ENOMEM; } - if (bl1_fwu_add_loaded_id(image_id)) { + if (bl1_fwu_add_loaded_id(image_id) != 0) { WARN("BL1-FWU: Too many images loaded at the same time.\n"); return -ENOMEM; } @@ -429,7 +435,7 @@ total_size = image_size; /* Update the image size in the descriptor. */ - image_desc->image_info.image_size = total_size; + desc->image_info.image_size = total_size; } /* @@ -446,13 +452,13 @@ * This is to prevent an attack where this contains * some malicious code that can somehow be executed later. */ - if (image_desc->state == IMAGE_STATE_COPIED) { + if (desc->state == IMAGE_STATE_COPIED) { /* Clear the memory.*/ zero_normalmem((void *)base_addr, total_size); flush_dcache_range(base_addr, total_size); /* Indicate that image can be copied again*/ - image_desc->state = IMAGE_STATE_RESET; + desc->state = IMAGE_STATE_RESET; } /* @@ -460,12 +466,12 @@ * The image cannot be in RESET state here, it is checked at the * beginning of the function. */ - bl1_fwu_remove_loaded_id(image_id); + (void)bl1_fwu_remove_loaded_id(image_id); return -EAUTH; } /* Indicate that image is in authenticated state. */ - image_desc->state = IMAGE_STATE_AUTHENTICATED; + desc->state = IMAGE_STATE_AUTHENTICATED; /* Allow the platform to handle post-image load */ result = bl1_plat_handle_post_image_load(image_id); @@ -483,7 +489,7 @@ * Flush image_info to memory so that other * secure world images can see changes. */ - flush_dcache_range((uintptr_t)&image_desc->image_info, + flush_dcache_range((uintptr_t)&desc->image_info, sizeof(image_info_t)); INFO("BL1-FWU: Authentication was successful\n"); @@ -499,7 +505,7 @@ unsigned int flags) { /* Get the image descriptor. */ - image_desc_t *image_desc = bl1_plat_get_image_desc(image_id); + image_desc_t *desc = bl1_plat_get_image_desc(image_id); /* * Execution is NOT allowed if: @@ -509,11 +515,11 @@ * Image is Non-Executable OR * Image is NOT in AUTHENTICATED state. */ - if ((!image_desc) || + if ((desc == NULL) || (GET_SECURITY_STATE(flags) == SECURE) || - (GET_SECURITY_STATE(image_desc->ep_info.h.attr) == NON_SECURE) || - (EP_GET_EXE(image_desc->ep_info.h.attr) == NON_EXECUTABLE) || - (image_desc->state != IMAGE_STATE_AUTHENTICATED)) { + (GET_SECURITY_STATE(desc->ep_info.h.attr) == NON_SECURE) || + (EP_GET_EXE(desc->ep_info.h.attr) == NON_EXECUTABLE) || + (desc->state != IMAGE_STATE_AUTHENTICATED)) { WARN("BL1-FWU: Execution not allowed due to invalid state/args\n"); return -EPERM; } @@ -547,37 +553,37 @@ void **handle, unsigned int flags) { - image_desc_t *image_desc; + image_desc_t *desc; unsigned int resume_sec_state; unsigned int caller_sec_state = GET_SECURITY_STATE(flags); /* Get the image descriptor for last executed secure image id. */ - image_desc = bl1_plat_get_image_desc(sec_exec_image_id); + desc = bl1_plat_get_image_desc(sec_exec_image_id); if (caller_sec_state == NON_SECURE) { - if (!image_desc) { + if (desc == NULL) { WARN("BL1-FWU: Resume not allowed due to no available" "secure image\n"); return -EPERM; } } else { - /* image_desc must be valid for secure world callers */ - assert(image_desc); + /* desc must be valid for secure world callers */ + assert(desc != NULL); } - assert(GET_SECURITY_STATE(image_desc->ep_info.h.attr) == SECURE); - assert(EP_GET_EXE(image_desc->ep_info.h.attr) == EXECUTABLE); + assert(GET_SECURITY_STATE(desc->ep_info.h.attr) == SECURE); + assert(EP_GET_EXE(desc->ep_info.h.attr) == EXECUTABLE); if (caller_sec_state == SECURE) { - assert(image_desc->state == IMAGE_STATE_EXECUTED); + assert(desc->state == IMAGE_STATE_EXECUTED); /* Update the flags. */ - image_desc->state = IMAGE_STATE_INTERRUPTED; + desc->state = IMAGE_STATE_INTERRUPTED; resume_sec_state = NON_SECURE; } else { - assert(image_desc->state == IMAGE_STATE_INTERRUPTED); + assert(desc->state == IMAGE_STATE_INTERRUPTED); /* Update the flags. */ - image_desc->state = IMAGE_STATE_EXECUTED; + desc->state = IMAGE_STATE_EXECUTED; resume_sec_state = SECURE; } @@ -612,7 +618,7 @@ ******************************************************************************/ static int bl1_fwu_sec_image_done(void **handle, unsigned int flags) { - image_desc_t *image_desc; + image_desc_t *desc; /* Make sure caller is from the secure world */ if (GET_SECURITY_STATE(flags) == NON_SECURE) { @@ -621,13 +627,13 @@ } /* Get the image descriptor for last executed secure image id */ - image_desc = bl1_plat_get_image_desc(sec_exec_image_id); + desc = bl1_plat_get_image_desc(sec_exec_image_id); - /* image_desc must correspond to a valid secure executing image */ - assert(image_desc); - assert(GET_SECURITY_STATE(image_desc->ep_info.h.attr) == SECURE); - assert(EP_GET_EXE(image_desc->ep_info.h.attr) == EXECUTABLE); - assert(image_desc->state == IMAGE_STATE_EXECUTED); + /* desc must correspond to a valid secure executing image */ + assert(desc != NULL); + assert(GET_SECURITY_STATE(desc->ep_info.h.attr) == SECURE); + assert(EP_GET_EXE(desc->ep_info.h.attr) == EXECUTABLE); + assert(desc->state == IMAGE_STATE_EXECUTED); #if ENABLE_ASSERTIONS int rc = bl1_fwu_remove_loaded_id(sec_exec_image_id); @@ -637,7 +643,7 @@ #endif /* Update the flags. */ - image_desc->state = IMAGE_STATE_RESET; + desc->state = IMAGE_STATE_RESET; sec_exec_image_id = INVALID_IMAGE_ID; INFO("BL1-FWU: Resuming Normal world context\n"); @@ -676,7 +682,7 @@ * Call platform done function. */ bl1_plat_fwu_done(client_cookie, reserved); - assert(0); + assert(false); } /******************************************************************************* @@ -685,14 +691,14 @@ ******************************************************************************/ static int bl1_fwu_image_reset(unsigned int image_id, unsigned int flags) { - image_desc_t *image_desc = bl1_plat_get_image_desc(image_id); + image_desc_t *desc = bl1_plat_get_image_desc(image_id); - if ((!image_desc) || (GET_SECURITY_STATE(flags) == SECURE)) { + if ((desc == NULL) || (GET_SECURITY_STATE(flags) == SECURE)) { WARN("BL1-FWU: Reset not allowed due to invalid args\n"); return -EPERM; } - switch (image_desc->state) { + switch (desc->state) { case IMAGE_STATE_RESET: /* Nothing to do. */ @@ -703,25 +709,26 @@ case IMAGE_STATE_COPIED: case IMAGE_STATE_COPYING: - if (bl1_fwu_remove_loaded_id(image_id)) { + if (bl1_fwu_remove_loaded_id(image_id) != 0) { WARN("BL1-FWU: Image reset couldn't find the image ID\n"); return -EPERM; } - if (image_desc->copied_size) { + if (desc->copied_size != 0U) { /* Clear the memory if the image is copied */ - assert(GET_SECURITY_STATE(image_desc->ep_info.h.attr) == SECURE); + assert(GET_SECURITY_STATE(desc->ep_info.h.attr) + == SECURE); - zero_normalmem((void *)image_desc->image_info.image_base, - image_desc->copied_size); - flush_dcache_range(image_desc->image_info.image_base, - image_desc->copied_size); + zero_normalmem((void *)desc->image_info.image_base, + desc->copied_size); + flush_dcache_range(desc->image_info.image_base, + desc->copied_size); } /* Reset status variables */ - image_desc->copied_size = 0; - image_desc->image_info.image_size = 0; - image_desc->state = IMAGE_STATE_RESET; + desc->copied_size = 0; + desc->image_info.image_size = 0; + desc->state = IMAGE_STATE_RESET; /* Clear authentication state */ auth_img_flags[image_id] = 0; @@ -730,7 +737,7 @@ case IMAGE_STATE_EXECUTED: default: - assert(0); /* Unreachable */ + assert(false); /* Unreachable */ break; } diff --git a/bl1/bl1_main.c b/bl1/bl1_main.c index e11ead6..1479a96 100644 --- a/bl1/bl1_main.c +++ b/bl1/bl1_main.c @@ -90,8 +90,7 @@ NOTICE("BL1: %s\n", version_string); NOTICE("BL1: %s\n", build_message); - INFO("BL1: RAM %p - %p\n", (void *)BL1_RAM_BASE, - (void *)BL1_RAM_LIMIT); + INFO("BL1: RAM %p - %p\n", (void *)BL1_RAM_BASE, (void *)BL1_RAM_LIMIT); print_errata_status(); @@ -105,9 +104,9 @@ #else val = read_sctlr(); #endif - assert(val & SCTLR_M_BIT); - assert(val & SCTLR_C_BIT); - assert(val & SCTLR_I_BIT); + assert((val & SCTLR_M_BIT) != 0); + assert((val & SCTLR_C_BIT) != 0); + assert((val & SCTLR_I_BIT) != 0); /* * Check that Cache Writeback Granule (CWG) in CTR_EL0 matches the * provided platform value @@ -166,33 +165,33 @@ ******************************************************************************/ static void bl1_load_bl2(void) { - image_desc_t *image_desc; - image_info_t *image_info; + image_desc_t *desc; + image_info_t *info; int err; /* Get the image descriptor */ - image_desc = bl1_plat_get_image_desc(BL2_IMAGE_ID); - assert(image_desc != NULL); + desc = bl1_plat_get_image_desc(BL2_IMAGE_ID); + assert(desc != NULL); /* Get the image info */ - image_info = &image_desc->image_info; + info = &desc->image_info; INFO("BL1: Loading BL2\n"); err = bl1_plat_handle_pre_image_load(BL2_IMAGE_ID); - if (err) { + if (err != 0) { ERROR("Failure in pre image load handling of BL2 (%d)\n", err); plat_error_handler(err); } - err = load_auth_image(BL2_IMAGE_ID, image_info); - if (err) { + err = load_auth_image(BL2_IMAGE_ID, info); + if (err != 0) { ERROR("Failed to load BL2 firmware.\n"); plat_error_handler(err); } /* Allow platform to handle image information. */ err = bl1_plat_handle_post_image_load(BL2_IMAGE_ID); - if (err) { + if (err != 0) { ERROR("Failure in post image load handling of BL2 (%d)\n", err); plat_error_handler(err); } @@ -258,11 +257,9 @@ SMC_RET1(handle, BL1_SMC_MAJOR_VER | BL1_SMC_MINOR_VER); default: - break; + WARN("Unimplemented BL1 SMC Call: 0x%x\n", smc_fid); + SMC_RET1(handle, SMC_UNK); } - - WARN("Unimplemented BL1 SMC Call: 0x%x \n", smc_fid); - SMC_RET1(handle, SMC_UNK); } /******************************************************************************* diff --git a/bl2/bl2_image_load_v2.c b/bl2/bl2_image_load_v2.c index 81d4b2b..48c9bec 100644 --- a/bl2/bl2_image_load_v2.c +++ b/bl2/bl2_image_load_v2.c @@ -47,8 +47,9 @@ * if indicated in the image attributes AND if NOT * already done before. */ - if (bl2_node_info->image_info->h.attr & IMAGE_ATTRIB_PLAT_SETUP) { - if (plat_setup_done) { + if ((bl2_node_info->image_info->h.attr & + IMAGE_ATTRIB_PLAT_SETUP) != 0U) { + if (plat_setup_done != 0) { WARN("BL2: Platform setup already done!!\n"); } else { INFO("BL2: Doing platform setup\n"); @@ -58,16 +59,17 @@ } err = bl2_plat_handle_pre_image_load(bl2_node_info->image_id); - if (err) { + if (err != 0) { ERROR("BL2: Failure in pre image load handling (%i)\n", err); plat_error_handler(err); } - if (!(bl2_node_info->image_info->h.attr & IMAGE_ATTRIB_SKIP_LOADING)) { + if ((bl2_node_info->image_info->h.attr & + IMAGE_ATTRIB_SKIP_LOADING) == 0U) { INFO("BL2: Loading image id %d\n", bl2_node_info->image_id); err = load_auth_image(bl2_node_info->image_id, bl2_node_info->image_info); - if (err) { + if (err != 0) { ERROR("BL2: Failed to load image id %d (%i)\n", bl2_node_info->image_id, err); plat_error_handler(err); @@ -78,7 +80,7 @@ /* Allow platform to handle image information. */ err = bl2_plat_handle_post_image_load(bl2_node_info->image_id); - if (err) { + if (err != 0) { ERROR("BL2: Failure in post image load handling (%i)\n", err); plat_error_handler(err); } diff --git a/bl2u/bl2u_main.c b/bl2u/bl2u_main.c index d49c9ce..fcb73b9 100644 --- a/bl2u/bl2u_main.c +++ b/bl2u/bl2u_main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -34,7 +34,7 @@ int rc; /* Load the subsequent bootloader images */ rc = bl2u_plat_handle_scp_bl2u(); - if (rc) { + if (rc != 0) { ERROR("Failed to load SCP_BL2U (%i)\n", rc); panic(); } diff --git a/include/arch/aarch32/arch.h b/include/arch/aarch32/arch.h index 2017548..8492b3e 100644 --- a/include/arch/aarch32/arch.h +++ b/include/arch/aarch32/arch.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2016-2020, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -388,13 +388,17 @@ #define GET_M32(mode) (((mode) >> MODE32_SHIFT) & MODE32_MASK) -#define SPSR_MODE32(mode, isa, endian, aif) \ - ((MODE_RW_32 << MODE_RW_SHIFT | \ - ((mode) & MODE32_MASK) << MODE32_SHIFT | \ - ((isa) & SPSR_T_MASK) << SPSR_T_SHIFT | \ - ((endian) & SPSR_E_MASK) << SPSR_E_SHIFT | \ - ((aif) & SPSR_AIF_MASK) << SPSR_AIF_SHIFT) & \ - (~(SPSR_SSBS_BIT))) +#define SPSR_MODE32(mode, isa, endian, aif) \ +( \ + ( \ + (MODE_RW_32 << MODE_RW_SHIFT) | \ + (((mode) & MODE32_MASK) << MODE32_SHIFT) | \ + (((isa) & SPSR_T_MASK) << SPSR_T_SHIFT) | \ + (((endian) & SPSR_E_MASK) << SPSR_E_SHIFT) | \ + (((aif) & SPSR_AIF_MASK) << SPSR_AIF_SHIFT) \ + ) & \ + (~(SPSR_SSBS_BIT)) \ +) /* * TTBR definitions diff --git a/include/arch/aarch64/arch.h b/include/arch/aarch64/arch.h index 2b2c116..19dd8c5 100644 --- a/include/arch/aarch64/arch.h +++ b/include/arch/aarch64/arch.h @@ -264,8 +264,8 @@ (U(1) << 22) | (U(1) << 18) | (U(1) << 16) | \ (U(1) << 11) | (U(1) << 5) | (U(1) << 4)) -#define SCTLR_EL1_RES1 ((U(1) << 29) | (U(1) << 28) | (U(1) << 23) | \ - (U(1) << 22) | (U(1) << 20) | (U(1) << 11)) +#define SCTLR_EL1_RES1 ((UL(1) << 29) | (UL(1) << 28) | (UL(1) << 23) | \ + (UL(1) << 22) | (UL(1) << 20) | (UL(1) << 11)) #define SCTLR_AARCH32_EL1_RES1 \ ((U(1) << 23) | (U(1) << 22) | (U(1) << 11) | \ (U(1) << 4) | (U(1) << 3)) diff --git a/include/lib/smccc.h b/include/lib/smccc.h index 5e13e6f..26509ae 100644 --- a/include/lib/smccc.h +++ b/include/lib/smccc.h @@ -122,18 +122,18 @@ */ #define DEFINE_SVC_UUID2(_name, _tl, _tm, _th, _cl, _ch, \ _n0, _n1, _n2, _n3, _n4, _n5) \ - CASSERT((uint32_t)(_tl) != (uint32_t) SMC_UNK, invalid_svc_uuid);\ + CASSERT((uint32_t)(_tl) != (uint32_t)SMC_UNK, invalid_svc_uuid);\ static const uuid_t _name = { \ - {(_tl >> 24) & 0xFF, \ - (_tl >> 16) & 0xFF, \ - (_tl >> 8) & 0xFF, \ - (_tl & 0xFF)}, \ - {(_tm >> 8) & 0xFF, \ - (_tm & 0xFF)}, \ - {(_th >> 8) & 0xFF, \ - (_th & 0xFF)}, \ - _cl, _ch, \ - { _n0, _n1, _n2, _n3, _n4, _n5 } \ + {((_tl) >> 24) & 0xFF, \ + ((_tl) >> 16) & 0xFF, \ + ((_tl) >> 8) & 0xFF, \ + ((_tl) & 0xFF)}, \ + {((_tm) >> 8) & 0xFF, \ + ((_tm) & 0xFF)}, \ + {((_th) >> 8) & 0xFF, \ + ((_th) & 0xFF)}, \ + (_cl), (_ch), \ + { (_n0), (_n1), (_n2), (_n3), (_n4), (_n5) } \ } /* diff --git a/include/lib/utils_def.h b/include/lib/utils_def.h index 09ae399..2d0e9c0 100644 --- a/include/lib/utils_def.h +++ b/include/lib/utils_def.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2016-2020, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2020, NVIDIA Corporation. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -17,7 +17,7 @@ #define IS_POWER_OF_TWO(x) \ (((x) & ((x) - 1)) == 0) -#define SIZE_FROM_LOG2_WORDS(n) (4 << (n)) +#define SIZE_FROM_LOG2_WORDS(n) (U(4) << (n)) #define BIT_32(nr) (U(1) << (nr)) #define BIT_64(nr) (ULL(1) << (nr))