|
|
|
|
|
|
|
|
void startup_late_hook(void) __attribute__ ((weak, alias("startup_default_late_hook"))); |
|
|
void startup_late_hook(void) __attribute__ ((weak, alias("startup_default_late_hook"))); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __clang__ |
|
|
|
|
|
// Clang seems to generate slightly larger code with Os than gcc |
|
|
|
|
|
__attribute__ ((optimize("-Os"))) |
|
|
|
|
|
#else |
|
|
|
|
|
#if defined(__PURE_CODE__) || !defined(__OPTIMIZE__) |
|
|
|
|
|
|
|
|
#if defined(__PURE_CODE__) || !defined(__OPTIMIZE__) || defined(__clang__) |
|
|
// cases known to compile too large for 0-0x400 memory region |
|
|
// cases known to compile too large for 0-0x400 memory region |
|
|
__attribute__ ((optimize("-Os"))) |
|
|
__attribute__ ((optimize("-Os"))) |
|
|
#else |
|
|
#else |
|
|
// hopefully all others fit into startup section (below 0x400) |
|
|
// hopefully all others fit into startup section (below 0x400) |
|
|
__attribute__ ((section(".startup"),optimize("-Os"))) |
|
|
__attribute__ ((section(".startup"),optimize("-Os"))) |
|
|
#endif |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
void ResetHandler(void) |
|
|
void ResetHandler(void) |
|
|
{ |
|
|
{ |
|
|
uint32_t *src = &_etext; |
|
|
uint32_t *src = &_etext; |