diff --git a/bl1/bl1_fwu.c b/bl1/bl1_fwu.c index 49e4e8e..25be577 100644 --- a/bl1/bl1_fwu.c +++ b/bl1/bl1_fwu.c @@ -24,12 +24,12 @@ * Function declarations. */ static int bl1_fwu_image_copy(unsigned int image_id, - uintptr_t image_addr, + uintptr_t image_src, unsigned int block_size, unsigned int image_size, unsigned int flags); static int bl1_fwu_image_auth(unsigned int image_id, - uintptr_t image_addr, + uintptr_t image_src, unsigned int image_size, unsigned int flags); static int bl1_fwu_image_execute(unsigned int image_id, @@ -50,7 +50,7 @@ static unsigned int sec_exec_image_id = INVALID_IMAGE_ID; /* Authentication status of each image. */ -extern unsigned int auth_img_flags[]; +extern unsigned int auth_img_flags[MAX_NUMBER_IDS]; /******************************************************************************* * Top level handler for servicing FWU SMCs. diff --git a/bl1/tbbr/tbbr_img_desc.c b/bl1/tbbr/tbbr_img_desc.c index f2ed1a1..44f58d3 100644 --- a/bl1/tbbr/tbbr_img_desc.c +++ b/bl1/tbbr/tbbr_img_desc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -7,6 +7,7 @@ #include #include #include +#include image_desc_t bl1_tbbr_image_descs[] = { { diff --git a/bl2/bl2_image_load.c b/bl2/bl2_image_load.c index d5d28a5..d22e9ce 100644 --- a/bl2/bl2_image_load.c +++ b/bl2/bl2_image_load.c @@ -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 */ @@ -182,7 +182,7 @@ * This function loads SCP_BL2/BL3x images and returns the ep_info for * the next executable image. ******************************************************************************/ -entry_point_info_t *bl2_load_images(void) +struct entry_point_info *bl2_load_images(void) { bl31_params_t *bl2_to_bl31_params; entry_point_info_t *bl31_ep_info; diff --git a/bl2/bl2_image_load_v2.c b/bl2/bl2_image_load_v2.c index d95c6b2..0f40785 100644 --- a/bl2/bl2_image_load_v2.c +++ b/bl2/bl2_image_load_v2.c @@ -21,7 +21,7 @@ * This function loads SCP_BL2/BL3x images and returns the ep_info for * the next executable image. ******************************************************************************/ -entry_point_info_t *bl2_load_images(void) +struct entry_point_info *bl2_load_images(void) { bl_params_t *bl2_to_next_bl_params; bl_load_info_t *bl2_load_info; diff --git a/bl32/tsp/tsp_private.h b/bl32/tsp/tsp_private.h index b11570c..dd65a5f 100644 --- a/bl32/tsp/tsp_private.h +++ b/bl32/tsp/tsp_private.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -62,7 +62,7 @@ void tsp_get_magic(uint64_t args[4]); -tsp_args_t *tsp_cpu_resume_main(uint64_t arg0, +tsp_args_t *tsp_cpu_resume_main(uint64_t max_off_pwrlvl, uint64_t arg1, uint64_t arg2, uint64_t arg3, @@ -106,7 +106,47 @@ /* Vector table of jumps */ extern tsp_vectors_t tsp_vector_table; +/* functions */ +int32_t tsp_common_int_handler(void); +int32_t tsp_handle_preemption(void); +tsp_args_t *tsp_abort_smc_handler(uint64_t func, + uint64_t arg1, + uint64_t arg2, + uint64_t arg3, + uint64_t arg4, + uint64_t arg5, + uint64_t arg6, + uint64_t arg7); + +tsp_args_t *tsp_smc_handler(uint64_t func, + uint64_t arg1, + uint64_t arg2, + uint64_t arg3, + uint64_t arg4, + uint64_t arg5, + uint64_t arg6, + uint64_t arg7); + +tsp_args_t *tsp_system_reset_main(uint64_t arg0, + uint64_t arg1, + uint64_t arg2, + uint64_t arg3, + uint64_t arg4, + uint64_t arg5, + uint64_t arg6, + uint64_t arg7); + +tsp_args_t *tsp_system_off_main(uint64_t arg0, + uint64_t arg1, + uint64_t arg2, + uint64_t arg3, + uint64_t arg4, + uint64_t arg5, + uint64_t arg6, + uint64_t arg7); + +uint64_t tsp_main(void); #endif /* __ASSEMBLY__ */ #endif /* __TSP_PRIVATE_H__ */ diff --git a/drivers/auth/auth_mod.c b/drivers/auth/auth_mod.c index 1cea60b..eb537b6 100644 --- a/drivers/auth/auth_mod.c +++ b/drivers/auth/auth_mod.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -30,7 +30,7 @@ /* Pointer to CoT */ extern const auth_img_desc_t *const cot_desc_ptr; -extern unsigned int auth_img_flags[]; +extern unsigned int auth_img_flags[MAX_NUMBER_IDS]; static int cmp_auth_param_type_desc(const auth_param_type_desc_t *a, const auth_param_type_desc_t *b) diff --git a/drivers/auth/crypto_mod.c b/drivers/auth/crypto_mod.c index 3b3e3ac..4cd0550 100644 --- a/drivers/auth/crypto_mod.c +++ b/drivers/auth/crypto_mod.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -9,7 +9,6 @@ #include /* Variable exported by the crypto library through REGISTER_CRYPTO_LIB() */ -extern const crypto_lib_desc_t crypto_lib_desc; /* * The crypto module is responsible for verifying digital signatures and hashes. diff --git a/drivers/auth/mbedtls/mbedtls_common.c b/drivers/auth/mbedtls/mbedtls_common.c index 205c243..c048d00 100644 --- a/drivers/auth/mbedtls/mbedtls_common.c +++ b/drivers/auth/mbedtls/mbedtls_common.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -10,6 +10,7 @@ #include #include #include +#include /* * mbed TLS heap diff --git a/include/bl2/bl2.h b/include/bl2/bl2.h index f2bd07e..89ff06e 100644 --- a/include/bl2/bl2.h +++ b/include/bl2/bl2.h @@ -7,9 +7,6 @@ #ifndef BL2_H__ #define BL2_H__ -struct entry_point_info; - void bl2_main(void); -struct entry_point_info *bl2_load_images(void); #endif /* BL2_H__ */ diff --git a/include/common/tbbr/tbbr_img_def.h b/include/common/tbbr/tbbr_img_def.h index 060198b..273abbe 100644 --- a/include/common/tbbr/tbbr_img_def.h +++ b/include/common/tbbr/tbbr_img_def.h @@ -75,4 +75,7 @@ /* NT_FW_CONFIG */ #define NT_FW_CONFIG_ID 27 +/* Define size of the array */ +#define MAX_NUMBER_IDS 28 + #endif /* __TBBR_IMG_DEF_H__ */ diff --git a/include/drivers/auth/auth_mod.h b/include/drivers/auth/auth_mod.h index bd65098..bb3b8f9 100644 --- a/include/drivers/auth/auth_mod.h +++ b/include/drivers/auth/auth_mod.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -12,6 +12,7 @@ #include #include #include +#include /* * Image flags @@ -41,7 +42,10 @@ #define REGISTER_COT(_cot) \ const auth_img_desc_t *const cot_desc_ptr = \ (const auth_img_desc_t *const)&_cot[0]; \ - unsigned int auth_img_flags[sizeof(_cot)/sizeof(_cot[0])] + unsigned int auth_img_flags[MAX_NUMBER_IDS] + +extern const auth_img_desc_t *const cot_desc_ptr; +extern unsigned int auth_img_flags[MAX_NUMBER_IDS]; #endif /* TRUSTED_BOARD_BOOT */ diff --git a/include/drivers/auth/crypto_mod.h b/include/drivers/auth/crypto_mod.h index 08884ab..f9b44d1 100644 --- a/include/drivers/auth/crypto_mod.h +++ b/include/drivers/auth/crypto_mod.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -43,7 +43,7 @@ void crypto_mod_init(void); int crypto_mod_verify_signature(void *data_ptr, unsigned int data_len, void *sig_ptr, unsigned int sig_len, - void *sig_alg, unsigned int sig_alg_len, + void *sig_alg_ptr, unsigned int sig_alg_len, void *pk_ptr, unsigned int pk_len); int crypto_mod_verify_hash(void *data_ptr, unsigned int data_len, void *digest_info_ptr, unsigned int digest_info_len); @@ -57,4 +57,6 @@ .verify_hash = _verify_hash \ } +extern const crypto_lib_desc_t crypto_lib_desc; + #endif /* __CRYPTO_MOD_H__ */ diff --git a/include/drivers/auth/img_parser_mod.h b/include/drivers/auth/img_parser_mod.h index 347ed62..eaf3e6e 100644 --- a/include/drivers/auth/img_parser_mod.h +++ b/include/drivers/auth/img_parser_mod.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -44,10 +44,10 @@ /* Exported functions */ void img_parser_init(void); int img_parser_check_integrity(img_type_t img_type, - void *img, unsigned int img_len); + void *img_ptr, unsigned int img_len); int img_parser_get_auth_param(img_type_t img_type, const auth_param_type_desc_t *type_desc, - void *img, unsigned int img_len, + void *img_ptr, unsigned int img_len, void **param_ptr, unsigned int *param_len); /* Macro to register an image parser library */ diff --git a/plat/arm/board/fvp/fvp_private.h b/plat/arm/board/fvp/fvp_private.h index c5cd07d..16f10a2 100644 --- a/plat/arm/board/fvp/fvp_private.h +++ b/plat/arm/board/fvp/fvp_private.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -18,6 +18,7 @@ void fvp_interconnect_init(void); void fvp_interconnect_enable(void); void fvp_interconnect_disable(void); +void tsp_early_platform_setup(void); #endif /* __FVP_PRIVATE_H__ */ diff --git a/plat/arm/common/arm_bl1_fwu.c b/plat/arm/common/arm_bl1_fwu.c index 1305934..f2be477 100644 --- a/plat/arm/common/arm_bl1_fwu.c +++ b/plat/arm/common/arm_bl1_fwu.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -19,7 +20,7 @@ unsigned int mem_size; } bl1_mem_info_t; -bl1_mem_info_t fwu_addr_map_secure[] = { +static bl1_mem_info_t fwu_addr_map_secure[] = { { .mem_base = ARM_SHARED_RAM_BASE, .mem_size = ARM_SHARED_RAM_SIZE @@ -29,7 +30,7 @@ } }; -bl1_mem_info_t fwu_addr_map_non_secure[] = { +static bl1_mem_info_t fwu_addr_map_non_secure[] = { { .mem_base = ARM_NS_DRAM1_BASE, .mem_size = ARM_NS_DRAM1_SIZE diff --git a/plat/arm/common/arm_dyn_cfg_helpers.c b/plat/arm/common/arm_dyn_cfg_helpers.c index cfcbf2a..9ba51a3 100644 --- a/plat/arm/common/arm_dyn_cfg_helpers.c +++ b/plat/arm/common/arm_dyn_cfg_helpers.c @@ -4,6 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ +#include #include #include #include diff --git a/plat/arm/css/drivers/scp/css_pm_scmi.c b/plat/arm/css/drivers/scp/css_pm_scmi.c index f8bc20c..c8ce053 100644 --- a/plat/arm/css/drivers/scp/css_pm_scmi.c +++ b/plat/arm/css/drivers/scp/css_pm_scmi.c @@ -76,7 +76,7 @@ * Helper function to suspend a CPU power domain and its parent power domains * if applicable. */ -void css_scp_suspend(const psci_power_state_t *target_state) +void css_scp_suspend(const struct psci_power_state *target_state) { int lvl, ret; uint32_t scmi_pwr_state = 0; diff --git a/plat/arm/css/drivers/scp/css_pm_scpi.c b/plat/arm/css/drivers/scp/css_pm_scpi.c index 545c3fb..23fd80e 100644 --- a/plat/arm/css/drivers/scp/css_pm_scpi.c +++ b/plat/arm/css/drivers/scp/css_pm_scpi.c @@ -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 */ @@ -19,7 +19,7 @@ /* * Helper function to inform power down state to SCP. */ -void css_scp_suspend(const psci_power_state_t *target_state) +void css_scp_suspend(const struct psci_power_state *target_state) { uint32_t cluster_state = scpi_power_on; uint32_t system_state = scpi_power_on; diff --git a/services/spd/tspd/tspd_private.h b/services/spd/tspd/tspd_private.h index 8fadb7a..a63daff 100644 --- a/services/spd/tspd/tspd_private.h +++ b/services/spd/tspd/tspd_private.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -206,7 +206,7 @@ /******************************************************************************* * Forward declarations ******************************************************************************/ -struct tsp_vectors; +typedef struct tsp_vectors tsp_vectors_t; /******************************************************************************* * Function & Data prototypes @@ -215,14 +215,26 @@ void __dead2 tspd_exit_sp(uint64_t c_rt_ctx, uint64_t ret); uint64_t tspd_synchronous_sp_entry(tsp_context_t *tsp_ctx); void __dead2 tspd_synchronous_sp_exit(tsp_context_t *tsp_ctx, uint64_t ret); -void tspd_init_tsp_ep_state(struct entry_point_info *tsp_ep, +void tspd_init_tsp_ep_state(struct entry_point_info *tsp_entry_point, uint32_t rw, uint64_t pc, tsp_context_t *tsp_ctx); int tspd_abort_preempted_smc(tsp_context_t *tsp_ctx); +uint64_t tspd_smc_handler(uint32_t smc_fid, + uint64_t x1, + uint64_t x2, + uint64_t x3, + uint64_t x4, + void *cookie, + void *handle, + uint64_t flags); + +int32_t tspd_setup(void); +uint64_t tspd_handle_sp_preemption(void *handle); + extern tsp_context_t tspd_sp_context[TSPD_CORE_COUNT]; -extern struct tsp_vectors *tsp_vectors; +extern tsp_vectors_t *tsp_vectors; #endif /*__ASSEMBLY__*/ #endif /* __TSPD_PRIVATE_H__ */