1*c5c56024SJens Wiklander // SPDX-License-Identifier: BSD-2-Clause 2*c5c56024SJens Wiklander /* 3*c5c56024SJens Wiklander * Copyright (c) 2020, Linaro Limited 4*c5c56024SJens Wiklander * Copyright (c) 2014, STMicroelectronics International N.V. 5*c5c56024SJens Wiklander */ 6*c5c56024SJens Wiklander 7*c5c56024SJens Wiklander #include <initcall.h> 8*c5c56024SJens Wiklander #include <trace.h> 9*c5c56024SJens Wiklander #include <kernel/linker.h> 10*c5c56024SJens Wiklander 11*c5c56024SJens Wiklander /* 12*c5c56024SJens Wiklander * Note: this function is weak just to make it possible to exclude it from 13*c5c56024SJens Wiklander * the unpaged area. 14*c5c56024SJens Wiklander */ 15*c5c56024SJens Wiklander void __weak call_initcalls(void) 16*c5c56024SJens Wiklander { 17*c5c56024SJens Wiklander const struct initcall *call = NULL; 18*c5c56024SJens Wiklander TEE_Result ret = TEE_SUCCESS; 19*c5c56024SJens Wiklander 20*c5c56024SJens Wiklander for (call = initcall_begin; call < initcall_end; call++) { 21*c5c56024SJens Wiklander DMSG("level %d %s()", call->level, call->func_name); 22*c5c56024SJens Wiklander ret = call->func(); 23*c5c56024SJens Wiklander if (ret != TEE_SUCCESS) { 24*c5c56024SJens Wiklander EMSG("Initcall __text_start + 0x%08" PRIxVA 25*c5c56024SJens Wiklander " failed", (vaddr_t)call - VCORE_START_VA); 26*c5c56024SJens Wiklander } 27*c5c56024SJens Wiklander } 28*c5c56024SJens Wiklander 29*c5c56024SJens Wiklander IMSG("Initialized"); 30*c5c56024SJens Wiklander } 31