diff options
| author | tangyuxin <[email protected]> | 2021-03-31 21:38:19 +0800 |
|---|---|---|
| committer | tangyuxin <[email protected]> | 2021-04-01 17:01:14 +0800 |
| commit | 015418fa9b1224b6219b4e5d25fb49b7a2e79f00 (patch) | |
| tree | 812b054e14ed7b8312925b54b81e9d6ac5d2c9cf /include/rtdef.h | |
| parent | 08a4de57e2f5e2f0d770b569690616599eaaf5fe (diff) | |
[bsp][simulator] 支持自动初始化及用户 main 入口
Diffstat (limited to 'include/rtdef.h')
| -rw-r--r-- | include/rtdef.h | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/include/rtdef.h b/include/rtdef.h index b936a33455..b368208175 100644 --- a/include/rtdef.h +++ b/include/rtdef.h @@ -210,7 +210,32 @@ typedef rt_base_t rt_off_t; /**< Type for offset */ #ifdef RT_USING_COMPONENTS_INIT typedef int (*init_fn_t)(void); #ifdef _MSC_VER /* we do not support MS VC++ compiler */ - #define INIT_EXPORT(fn, level) +#pragma section("rti_fn$f",read) + #if RT_DEBUG_INIT + struct rt_init_desc + { + const char* level; + const init_fn_t fn; + const char* fn_name; + }; + #define INIT_EXPORT(fn, level) \ + const char __rti_level_##fn[] = level"__rt_init_"#fn; \ + const char __rti_##fn##_name[] = #fn; \ + __declspec(allocate("rti_fn$f")) \ + RT_USED const struct rt_init_desc __rt_init_msc_##fn = \ + {__rti_level_##fn, fn, __rti_##fn##_name}; + #else + struct rt_init_desc + { + const char* level; + const init_fn_t fn; + }; + #define INIT_EXPORT(fn, level) \ + const char __rti_level_##fn[] = level"__rt_init_"#fn; \ + __declspec(allocate("rti_fn$f")) \ + RT_USED const struct rt_init_desc __rt_init_msc_##fn = \ + {__rti_level_##fn, fn }; + #endif #else #if RT_DEBUG_INIT struct rt_init_desc |
