111 lines
2.7 KiB
C
Raw Normal View History

2025-05-21 11:31:07 +08:00
/******************************************************************************
Copyright @2024 - 2044 Shenzhen dcenzix Technology Ltd.
******************************************************************************
@file cola_init.c
@brief
@author xiexiongwu
@version V1.0
@date 2024525
******************************************************************************/
/*----------------------------------------------*
* *
*----------------------------------------------*/
#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
}