/****************************************************************************** Copyright @2024 - 2044 Shenzhen dcenzix Technology Ltd. ****************************************************************************** @file cola_init.c @brief @author xiexiongwu @version V1.0 @date 2024年5月25日 ******************************************************************************/ /*----------------------------------------------* * 包含头文件 * *----------------------------------------------*/ #include "cola_init.h" /*----------------------------------------------* * 函数原型说明 * *----------------------------------------------*/ /** *@brief 在指定的段中,调度相关的函数 * *@param void *@return void * */ void do_init_call(void) { #if defined(__CC_ARM) /* ARM Compiler */ extern initcall_t initcall0init$$Base[]; extern initcall_t initcall0init$$Limit[]; extern initcall_t initcall1init$$Base[]; extern initcall_t initcall1init$$Limit[]; extern initcall_t initcall2init$$Base[]; extern initcall_t initcall2init$$Limit[]; extern initcall_t initcall3init$$Base[]; extern initcall_t initcall3init$$Limit[]; initcall_t *fn; for (fn = initcall0init$$Base; fn < initcall0init$$Limit; fn++) { if (fn) { (*fn)(); } } for (fn = initcall1init$$Base; fn < initcall1init$$Limit; fn++) { if (fn) { (*fn)(); } } for (fn = initcall2init$$Base; fn < initcall2init$$Limit; fn++) { if (fn) { (*fn)(); } } for (fn = initcall3init$$Base; fn < initcall3init$$Limit; fn++) { if (fn) { (*fn)(); } } #elif defined (__GNUC__) extern initcall_t __initcall0_start[]; extern initcall_t __initcall0_end[]; extern initcall_t __initcall1_start[]; extern initcall_t __initcall1_end[]; extern initcall_t __initcall2_start[]; extern initcall_t __initcall2_end[]; extern initcall_t __initcall3_start[]; extern initcall_t __initcall3_end[]; extern initcall_t __initcall4_start[]; extern initcall_t __initcall4_end[]; for (initcall_t *fn = __initcall0_start; fn < __initcall0_end; ++fn) { if (*fn) (*fn)(); } for (initcall_t *fn = __initcall1_start; fn < __initcall1_end; ++fn) { if (*fn) (*fn)(); } for (initcall_t *fn = __initcall2_start; fn < __initcall2_end; ++fn) { if (*fn) (*fn)(); } for (initcall_t *fn = __initcall3_start; fn < __initcall3_end; ++fn) { if (*fn) (*fn)(); } for (initcall_t *fn = __initcall4_start; fn < __initcall4_end; ++fn) { if (*fn) (*fn)(); } #endif // defined }