11bb92983SJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */ 203c21dc9SSY Chiu /* 303c21dc9SSY Chiu * Copyright (c) 2014, Linaro Limited 403c21dc9SSY Chiu */ 503c21dc9SSY Chiu 603c21dc9SSY Chiu #ifndef INITCALL_H 703c21dc9SSY Chiu #define INITCALL_H 803c21dc9SSY Chiu 99e592338SJens Wiklander #include <scattered_array.h> 1003c21dc9SSY Chiu #include <tee_api_types.h> 1103c21dc9SSY Chiu 1203c21dc9SSY Chiu typedef TEE_Result (*initcall_t)(void); 1303c21dc9SSY Chiu 1403c21dc9SSY Chiu #define __define_initcall(level, fn) \ 159e592338SJens Wiklander SCATTERED_ARRAY_DEFINE_PG_ITEM_ORDERED(initcall, level, initcall_t) = \ 169e592338SJens Wiklander (fn) 1703c21dc9SSY Chiu 189e592338SJens Wiklander #define initcall_begin SCATTERED_ARRAY_BEGIN(initcall, initcall_t) 199e592338SJens Wiklander #define initcall_end SCATTERED_ARRAY_END(initcall, initcall_t) 209e592338SJens Wiklander 21*08fc7359SRouven Czerwinski #define early_init(fn) __define_initcall(1, fn) 22*08fc7359SRouven Czerwinski #define early_init_late(fn) __define_initcall(2, fn) 23*08fc7359SRouven Czerwinski #define service_init(fn) __define_initcall(3, fn) 24*08fc7359SRouven Czerwinski #define service_init_late(fn) __define_initcall(4, fn) 25*08fc7359SRouven Czerwinski #define driver_init(fn) __define_initcall(5, fn) 26*08fc7359SRouven Czerwinski #define driver_init_late(fn) __define_initcall(6, fn) 279e592338SJens Wiklander 2803c21dc9SSY Chiu 2903c21dc9SSY Chiu #endif 30