diff --git a/bl1/bl1_fwu.c b/bl1/bl1_fwu.c index 49e4e8e25cb4f814278f7216b5cf3eb7dc879679..25be57708f7029820f9bc4639cc828c7fe83de1f 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 @@ __dead2 static void bl1_fwu_done(void *client_cookie, void *reserved); 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 f2ed1a1ca8f0371f49414ef29f7883491b30e70f..44f58d3fa5427b6b748a43121c8cd7f59f4443da 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 <bl1.h> #include <bl_common.h> #include <platform_def.h> +#include <tbbr/tbbr_img_desc.h> image_desc_t bl1_tbbr_image_descs[] = { { diff --git a/bl2/bl2_image_load.c b/bl2/bl2_image_load.c index d5d28a548d84d31d48b496a36e2851fd37c1bf18..d22e9ce4d508b8194b2f92cb939b8d63b2cfcf35 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 @@ static int load_bl33(bl31_params_t *bl2_to_bl31_params) * 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 d95c6b28229fc4c11c319205f17184bb737cbcad..0f40785d4cb7831d5318623e9e9bc908950e2ee1 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 b11570cc037d344440994cb1faf0406791c82ea9..dd65a5fbe5835ee79d4e0d25a0fdb73ea3409ea3 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 @@ CASSERT(TSP_ARGS_SIZE == sizeof(tsp_args_t), assert_sp_args_size_mismatch); 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 @@ extern work_statistics_t tsp_stats[PLATFORM_CORE_COUNT]; /* 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 1cea60b220deab682fa2449ab64383e3bcc03361..eb537b66a1065343f066d8d92d8888137d81b7ae 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 3b3e3ac490f836f1e4ff4c2e5c70134592ffdc2f..4cd05506b2cfb0d9a92b2bb56e16ab8bf369517f 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 <debug.h> /* 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 205c2432afd404cf55e2a5de0a68371f00864192..c048d005aae395f580dd4f60a7441b596bdf5ffc 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 <mbedtls/memory_buffer_alloc.h> #include <mbedtls/platform.h> #include <mbedtls_config.h> +#include <mbedtls_common.h> /* * mbed TLS heap diff --git a/include/bl2/bl2.h b/include/bl2/bl2.h index f2bd07ef4658ca6eb841ce78a38fea896885708e..89ff06eaed1934d7ab1c5fdf2be418132de623a0 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 060198bc149a506ed09210b3541e9eb2a81fcd9a..273abbea060b3f961d9db3f70a8faa067b58ed77 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 bd65098036d2e5ce5d8be4f8ef16b87ca6c13972..bb3b8f9022b233c1a77fba57527b6d8af44d00c3 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 <auth_common.h> #include <cot_def.h> #include <img_parser_mod.h> +#include <tbbr_img_def.h> /* * Image flags @@ -41,7 +42,10 @@ int auth_mod_verify_img(unsigned int img_id, #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 08884ab2218a55ba80ad79e170c6e1689f7dad9f..f9b44d1c0fe1c715328f29575372ff2d02d27232 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 @@ typedef struct crypto_lib_desc_s { 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 @@ int crypto_mod_verify_hash(void *data_ptr, unsigned int data_len, .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 347ed621cf149d99ccb569e473ca894287ef5d4c..eaf3e6e7abf164cc668406d24a9954a278ca9eef 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 @@ typedef struct img_parser_lib_desc_s { /* 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 c5cd07d14b7ba9b99fad583ba62eef097305fbe7..16f10a22f5e3ea9b333fb1b9a1ec12bd410d2684 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_config_setup(void); 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 1305934c8bb7bed5c22fd5f40eb7d1d9159d5bb4..f2be47792b2130324a9d9efe4016604d1d0b4140 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 <debug.h> #include <errno.h> #include <plat_arm.h> +#include <platform.h> #include <platform_def.h> #include <tbbr_img_desc.h> #include <utils.h> @@ -19,7 +20,7 @@ typedef struct bl1_mem_info { 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_secure[] = { } }; -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 cfcbf2a2a891bf9749d6240f7b6eae75ae9bc17f..9ba51a3e1b2358644a82c5892f96ca760c75091f 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 <arm_dyn_cfg_helpers.h> #include <assert.h> #include <desc_image_load.h> #include <fdt_wrappers.h> diff --git a/plat/arm/css/drivers/scp/css_pm_scmi.c b/plat/arm/css/drivers/scp/css_pm_scmi.c index f8bc20c30eace273e082f0aadcac85eb4888b21b..c8ce05343a2b5898fc68cea61c36f3c37018e05c 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 @@ ARM_INSTANTIATE_LOCK; * 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 545c3fbe60eb79a8518734487e8c63296e52ba84..23fd80ee9336ccfe4eaee73afb96c921f40682f7 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 8fadb7a5ac46e4b2993ac64d5b4d7c28f96f87fd..a63daff1086bce8cefda82ab535047c798480a5c 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 @@ extern const spd_pm_ops_t tspd_pm; /******************************************************************************* * Forward declarations ******************************************************************************/ -struct tsp_vectors; +typedef struct tsp_vectors tsp_vectors_t; /******************************************************************************* * Function & Data prototypes @@ -215,14 +215,26 @@ uint64_t tspd_enter_sp(uint64_t *c_rt_ctx); 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__ */