1566034fcSSoby Mathew /* 2566034fcSSoby Mathew * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. 3566034fcSSoby Mathew * 4566034fcSSoby Mathew * SPDX-License-Identifier: BSD-3-Clause 5566034fcSSoby Mathew */ 6566034fcSSoby Mathew 7566034fcSSoby Mathew #include <arch_helpers.h> 8566034fcSSoby Mathew #include <assert.h> 9566034fcSSoby Mathew #include <bl_common.h> 10566034fcSSoby Mathew #include <debug.h> 11566034fcSSoby Mathew #include <errno.h> 12*6d01a463SJohn Tsichritzis #if TRUSTED_BOARD_BOOT 13*6d01a463SJohn Tsichritzis #include <mbedtls_config.h> 14*6d01a463SJohn Tsichritzis #endif 15a6f340feSSoby Mathew #include <platform.h> 16566034fcSSoby Mathew 17566034fcSSoby Mathew /* 18566034fcSSoby Mathew * The following platform functions are weakly defined. The Platforms 19566034fcSSoby Mathew * may redefine with strong definition. 20566034fcSSoby Mathew */ 21566034fcSSoby Mathew #pragma weak bl2_el3_plat_prepare_exit 22566034fcSSoby Mathew #pragma weak plat_error_handler 23566034fcSSoby Mathew #pragma weak bl2_plat_preload_setup 24566034fcSSoby Mathew #pragma weak bl2_plat_handle_pre_image_load 25566034fcSSoby Mathew #pragma weak bl2_plat_handle_post_image_load 26566034fcSSoby Mathew #pragma weak plat_try_next_boot_source 27*6d01a463SJohn Tsichritzis #pragma weak plat_get_mbedtls_heap 28566034fcSSoby Mathew 29566034fcSSoby Mathew void bl2_el3_plat_prepare_exit(void) 30566034fcSSoby Mathew { 31566034fcSSoby Mathew } 32566034fcSSoby Mathew 33566034fcSSoby Mathew void __dead2 plat_error_handler(int err) 34566034fcSSoby Mathew { 35566034fcSSoby Mathew while (1) 36566034fcSSoby Mathew wfi(); 37566034fcSSoby Mathew } 38566034fcSSoby Mathew 39566034fcSSoby Mathew void bl2_plat_preload_setup(void) 40566034fcSSoby Mathew { 41566034fcSSoby Mathew } 42566034fcSSoby Mathew 437fabe1a8SRoberto Vargas #if LOAD_IMAGE_V2 44566034fcSSoby Mathew int bl2_plat_handle_pre_image_load(unsigned int image_id) 45566034fcSSoby Mathew { 46566034fcSSoby Mathew return 0; 47566034fcSSoby Mathew } 48566034fcSSoby Mathew 49566034fcSSoby Mathew int bl2_plat_handle_post_image_load(unsigned int image_id) 50566034fcSSoby Mathew { 51566034fcSSoby Mathew return 0; 52566034fcSSoby Mathew } 537fabe1a8SRoberto Vargas #endif 54566034fcSSoby Mathew 55566034fcSSoby Mathew int plat_try_next_boot_source(void) 56566034fcSSoby Mathew { 57566034fcSSoby Mathew return 0; 58566034fcSSoby Mathew } 59a6f340feSSoby Mathew 60a6f340feSSoby Mathew #if !ERROR_DEPRECATED 61a6f340feSSoby Mathew #pragma weak bl2_early_platform_setup2 62a6f340feSSoby Mathew 63a6f340feSSoby Mathew /* 64a6f340feSSoby Mathew * The following platform API implementation that allow compatibility for 65a6f340feSSoby Mathew * the older platform APIs. 66a6f340feSSoby Mathew */ 67a6f340feSSoby Mathew void bl2_early_platform_setup2(u_register_t arg0, u_register_t arg1, 68a6f340feSSoby Mathew u_register_t arg2, u_register_t arg3) 69a6f340feSSoby Mathew { 70a6f340feSSoby Mathew bl2_early_platform_setup((void *)arg1); 71a6f340feSSoby Mathew } 72a6f340feSSoby Mathew #endif 73*6d01a463SJohn Tsichritzis 74*6d01a463SJohn Tsichritzis 75*6d01a463SJohn Tsichritzis #if TRUSTED_BOARD_BOOT 76*6d01a463SJohn Tsichritzis /* 77*6d01a463SJohn Tsichritzis * The following default implementation of the function simply returns the 78*6d01a463SJohn Tsichritzis * by-default allocated heap. 79*6d01a463SJohn Tsichritzis */ 80*6d01a463SJohn Tsichritzis int plat_get_mbedtls_heap(void **heap_addr, size_t *heap_size) 81*6d01a463SJohn Tsichritzis { 82*6d01a463SJohn Tsichritzis static unsigned char heap[TF_MBEDTLS_HEAP_SIZE]; 83*6d01a463SJohn Tsichritzis 84*6d01a463SJohn Tsichritzis assert(heap_addr != NULL); 85*6d01a463SJohn Tsichritzis assert(heap_size != NULL); 86*6d01a463SJohn Tsichritzis 87*6d01a463SJohn Tsichritzis *heap_addr = heap; 88*6d01a463SJohn Tsichritzis *heap_size = sizeof(heap); 89*6d01a463SJohn Tsichritzis return 0; 90*6d01a463SJohn Tsichritzis } 91*6d01a463SJohn Tsichritzis #endif /* TRUSTED_BOARD_BOOT */ 92