diff --git a/bl1/bl1_main.c b/bl1/bl1_main.c index 6028f4f12e0b35ed7cd5743a394e8d1608f23b41..6771142e447ca8b1c3644f1dd6ec6f9d5f4294db 100644 --- a/bl1/bl1_main.c +++ b/bl1/bl1_main.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff --git a/bl2/bl2_main.c b/bl2/bl2_main.c index 55ae3c0e0566bb6c4bbd14adf7e56b68ff70eb9c..46c70a123261f06a9626e85d43843346192ef1fe 100644 --- a/bl2/bl2_main.c +++ b/bl2/bl2_main.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff --git a/bl31/bl31_main.c b/bl31/bl31_main.c index ff7caf1dddf0b928ea3f94d1b8299267badb080a..71c64643ef65a1ffe3f4d9879fb4974aff9fe0c1 100644 --- a/bl31/bl31_main.c +++ b/bl31/bl31_main.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include diff --git a/bl32/tsp/tsp_main.c b/bl32/tsp/tsp_main.c index 05737aef6f85dbc9ca3056104aed6d6d10ee47b3..eaabe613c4308c251db7917ab35672ca27c49a0e 100644 --- a/bl32/tsp/tsp_main.c +++ b/bl32/tsp/tsp_main.c @@ -30,7 +30,6 @@ #include #include -#include #include #include #include diff --git a/common/bl_common.c b/common/bl_common.c index 911ad4c1299f812da68efc9d00e885f688e435fb..3bc314c6ea1ce68ba4aedc61af09bd65522affc9 100644 --- a/common/bl_common.c +++ b/common/bl_common.c @@ -74,9 +74,10 @@ void change_security_state(unsigned int target_security_state) /******************************************************************************* - * The next function is a weak definition. Platform specific - * code can override it if it wishes to. + * The next function has a weak definition. Platform specific code can override + * it if it wishes to. ******************************************************************************/ +#pragma weak init_bl2_mem_layout /******************************************************************************* * Function that takes a memory layout into which BL2 has been either top or diff --git a/include/bl1/bl1.h b/include/bl1/bl1.h deleted file mode 100644 index b1bbf244f9cb3a5bd55017c42602640fdff3916c..0000000000000000000000000000000000000000 --- a/include/bl1/bl1.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * Neither the name of ARM nor the names of its contributors may be used - * to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef __BL1_H__ -#define __BL1_H__ - - -/****************************************** - * Forward declarations - *****************************************/ -struct meminfo; - -/****************************************** - * Function prototypes - *****************************************/ -void bl1_platform_setup(void); -struct meminfo *bl1_plat_sec_mem_layout(void); - -#endif /* __BL1_H__ */ diff --git a/include/bl2/bl2.h b/include/bl2/bl2.h deleted file mode 100644 index fffe5a63b8efd56225b1f1488b8fe6cd0d4d9c57..0000000000000000000000000000000000000000 --- a/include/bl2/bl2.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * Neither the name of ARM nor the names of its contributors may be used - * to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef __BL2_H__ -#define __BL2_H__ - -/****************************************** - * Forward declarations - *****************************************/ -struct meminfo; -struct bl31_params; -struct entry_point_info; - -/****************************************** - * Function prototypes - *****************************************/ -void bl2_platform_setup(void); -struct meminfo *bl2_plat_sec_mem_layout(void); - -/******************************************************************************* - * This function returns a pointer to the shared memory that the platform has - * kept aside to pass trusted firmware related information that BL3-1 - * could need - ******************************************************************************/ -struct bl31_params *bl2_plat_get_bl31_params(void); - -/******************************************************************************* - * This function returns a pointer to the shared memory that the platform - * has kept to point to entry point information of BL31 to BL2 - ******************************************************************************/ -struct entry_point_info *bl2_plat_get_bl31_ep_info(void); - -/************************************************************************ - * This function flushes to main memory all the params that are - * passed to BL3-1 - **************************************************************************/ -void bl2_plat_flush_bl31_params(void); - -#endif /* __BL2_H__ */ diff --git a/include/bl31/bl31.h b/include/bl31/bl31.h index ef32568738f9e30ad004182d694a02b36b13cb5a..8d22dc98bbb4d807258f7c32efb2a8373782e658 100644 --- a/include/bl31/bl31.h +++ b/include/bl31/bl31.h @@ -37,7 +37,6 @@ * Forward declarations *****************************************/ struct entry_point_info; -struct bl31_parms; /******************************************************************************* * Function prototypes @@ -48,9 +47,6 @@ void bl31_set_next_image_type(uint32_t type); uint32_t bl31_get_next_image_type(void); void bl31_prepare_next_image_entry(); struct entry_point_info *bl31_get_next_image_info(uint32_t type); -void bl31_early_platform_setup(struct bl31_params *from_bl2, - void *plat_params_from_bl2); -void bl31_platform_setup(void); void bl31_register_bl32_init(int32_t (*)(void)); #endif /* __BL31_H__ */ diff --git a/include/bl32/bl32.h b/include/bl32/bl32.h deleted file mode 100644 index ede7c48e019096d2c9926787b99d80dd2dada3e2..0000000000000000000000000000000000000000 --- a/include/bl32/bl32.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * Neither the name of ARM nor the names of its contributors may be used - * to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef __BL32_H__ -#define __BL32_H__ - -#include - -/****************************************** - * Forward declarations - *****************************************/ -struct meminfo; - -/****************************************** - * Function prototypes - *****************************************/ -void bl32_platform_setup(void); -struct meminfo *bl32_plat_sec_mem_layout(void); -uint64_t bl32_main(void); - -#endif /* __BL32_H__ */ diff --git a/include/common/bl_common.h b/include/common/bl_common.h index 79f2329b7b0830f33fc11b1ed755255c08063f2c..2f3bade1ad19c2c937c846f16abba2ee3e045802 100644 --- a/include/common/bl_common.h +++ b/include/common/bl_common.h @@ -196,13 +196,6 @@ CASSERT(sizeof(unsigned long) == ******************************************************************************/ unsigned long page_align(unsigned long, unsigned); void change_security_state(unsigned int); -void init_bl2_mem_layout(meminfo_t *, - meminfo_t *, - unsigned int, - unsigned long) __attribute__((weak)); -void init_bl31_mem_layout(const meminfo_t *, - meminfo_t *, - unsigned int) __attribute__((weak)); unsigned long image_size(const char *); int load_image(meminfo_t *, const char *, @@ -210,7 +203,6 @@ int load_image(meminfo_t *, unsigned long, image_info_t *, entry_point_info_t *); -unsigned long *get_el_change_mem_ptr(void); extern const char build_message[]; #endif /*__ASSEMBLY__*/ diff --git a/include/plat/common/platform.h b/include/plat/common/platform.h index b3f6806eff53b76218ae1499bdd31cd1744efe73..7e2e91201f44348b443c45f9dfa4a0845f10bffd 100644 --- a/include/plat/common/platform.h +++ b/include/plat/common/platform.h @@ -41,33 +41,25 @@ struct plat_pm_ops; struct meminfo; struct image_info; struct entry_point_info; +struct bl31_params; /******************************************************************************* - * Function and variable prototypes + * Function declarations ******************************************************************************/ -void bl1_plat_arch_setup(void); -void bl2_plat_arch_setup(void); -void bl31_plat_arch_setup(void); -int platform_setup_pm(const struct plat_pm_ops **); -unsigned int platform_get_core_pos(unsigned long mpidr); +/******************************************************************************* + * Mandatory common functions + ******************************************************************************/ +uint64_t plat_get_syscnt_freq(void); void enable_mmu_el1(void); void enable_mmu_el3(void); -void configure_mmu_el1(unsigned long total_base, - unsigned long total_size, - unsigned long, - unsigned long, - unsigned long, - unsigned long); -void configure_mmu_el3(unsigned long total_base, - unsigned long total_size, - unsigned long, - unsigned long, - unsigned long, - unsigned long); -void plat_report_exception(unsigned long); +int plat_get_image_source(const char *image_name, + uintptr_t *dev_handle, + uintptr_t *image_spec); unsigned long plat_get_ns_image_entrypoint(void); -unsigned long platform_get_stack(unsigned long mpidr); -uint64_t plat_get_syscnt_freq(void); + +/******************************************************************************* + * Mandatory interrupt management functions + ******************************************************************************/ uint32_t ic_get_pending_interrupt_id(void); uint32_t ic_get_pending_interrupt_type(void); uint32_t ic_acknowledge_interrupt(void); @@ -76,12 +68,19 @@ void ic_end_of_interrupt(uint32_t id); uint32_t plat_interrupt_type_to_line(uint32_t type, uint32_t security_state); -int plat_get_max_afflvl(void); -unsigned int plat_get_aff_count(unsigned int, unsigned long); -unsigned int plat_get_aff_state(unsigned int, unsigned long); -int plat_get_image_source(const char *image_name, - uintptr_t *dev_handle, - uintptr_t *image_spec); +/******************************************************************************* + * Optional common functions (may be overridden) + ******************************************************************************/ +unsigned int platform_get_core_pos(unsigned long mpidr); +unsigned long platform_get_stack(unsigned long mpidr); +void plat_report_exception(unsigned long); + +/******************************************************************************* + * Mandatory BL1 functions + ******************************************************************************/ +void bl1_plat_arch_setup(void); +void bl1_platform_setup(void); +struct meminfo *bl1_plat_sec_mem_layout(void); /* * Before calling this function BL2 is loaded in memory and its entrypoint @@ -92,6 +91,40 @@ int plat_get_image_source(const char *image_name, void bl1_plat_set_bl2_ep_info(struct image_info *image, struct entry_point_info *ep); +/******************************************************************************* + * Optional BL1 functions (may be overridden) + ******************************************************************************/ +void init_bl2_mem_layout(struct meminfo *, + struct meminfo *, + unsigned int, + unsigned long); + +/******************************************************************************* + * Mandatory BL2 functions + ******************************************************************************/ +void bl2_plat_arch_setup(void); +void bl2_platform_setup(void); +struct meminfo *bl2_plat_sec_mem_layout(void); + +/* + * This function returns a pointer to the shared memory that the platform has + * kept aside to pass trusted firmware related information that BL3-1 + * could need + */ +struct bl31_params *bl2_plat_get_bl31_params(void); + +/* + * This function returns a pointer to the shared memory that the platform + * has kept to point to entry point information of BL31 to BL2 + */ +struct entry_point_info *bl2_plat_get_bl31_ep_info(void); + +/* + * This function flushes to main memory all the params that are + * passed to BL3-1 + */ +void bl2_plat_flush_bl31_params(void); + /* * Before calling this function BL31 is loaded in memory and its entrypoint * is set by load_image. This is a placeholder for the platform to change @@ -125,5 +158,30 @@ void bl2_plat_get_bl32_meminfo(struct meminfo *mem_info); /* Gets the memory layout for BL33 */ void bl2_plat_get_bl33_meminfo(struct meminfo *mem_info); +/******************************************************************************* + * Optional BL2 functions (may be overridden) + ******************************************************************************/ + +/******************************************************************************* + * Mandatory BL3-1 functions + ******************************************************************************/ +void bl31_early_platform_setup(struct bl31_params *from_bl2, + void *plat_params_from_bl2); +void bl31_plat_arch_setup(void); +void bl31_platform_setup(void); +struct entry_point_info *bl31_get_next_image_info(uint32_t type); + +/******************************************************************************* + * Mandatory PSCI functions (BL3-1) + ******************************************************************************/ +int platform_setup_pm(const struct plat_pm_ops **); +int plat_get_max_afflvl(void); +unsigned int plat_get_aff_count(unsigned int, unsigned long); +unsigned int plat_get_aff_state(unsigned int, unsigned long); + +/******************************************************************************* + * Mandatory BL3-2 functions (only if platform contains a BL3-2) + ******************************************************************************/ +void bl32_platform_setup(void); #endif /* __PLATFORM_H__ */ diff --git a/plat/fvp/bl1_plat_setup.c b/plat/fvp/bl1_plat_setup.c index 5fbebc163cfc2c462812104b0e419090907cff04..34e74e259a1808814e78192ad664278089bbe6f2 100644 --- a/plat/fvp/bl1_plat_setup.c +++ b/plat/fvp/bl1_plat_setup.c @@ -31,7 +31,6 @@ #include #include #include -#include #include #include #include diff --git a/plat/fvp/bl2_plat_setup.c b/plat/fvp/bl2_plat_setup.c index 87efe28f969e6e20ac8e4a29b91556ec0ca2e90f..2cfb8bca9dec10a23319f9872862b4172c097879 100644 --- a/plat/fvp/bl2_plat_setup.c +++ b/plat/fvp/bl2_plat_setup.c @@ -31,7 +31,6 @@ #include #include #include -#include #include #include #include diff --git a/plat/fvp/bl32_plat_setup.c b/plat/fvp/bl32_plat_setup.c index 79303142788b3bf130bf3d30b752f75772928752..b583349fcc6153ec3c1cf163e76a43ca0be09dc6 100644 --- a/plat/fvp/bl32_plat_setup.c +++ b/plat/fvp/bl32_plat_setup.c @@ -28,9 +28,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include #include -#include #include #include #include "fvp_def.h" diff --git a/plat/fvp/fvp_private.h b/plat/fvp/fvp_private.h index cde1fd0abc568e202856aeaadf6e033c12ba50ab..04e8b818256a134096da8485a640ec7c329da38c 100644 --- a/plat/fvp/fvp_private.h +++ b/plat/fvp/fvp_private.h @@ -55,9 +55,26 @@ typedef struct bl2_to_bl31_params_mem { entry_point_info_t bl31_ep_info; } bl2_to_bl31_params_mem_t; +/******************************************************************************* + * Forward declarations + ******************************************************************************/ +struct meminfo; + /******************************************************************************* * Function and variable prototypes ******************************************************************************/ +void configure_mmu_el1(unsigned long total_base, + unsigned long total_size, + unsigned long, + unsigned long, + unsigned long, + unsigned long); +void configure_mmu_el3(unsigned long total_base, + unsigned long total_size, + unsigned long, + unsigned long, + unsigned long, + unsigned long); unsigned long platform_get_cfgvar(unsigned int); int platform_config_setup(void);