111 lines
2.7 KiB
C
111 lines
2.7 KiB
C
/******************************************************************************
|
|
|
|
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
|
|
}
|
|
|
|
|
|
|