diff --git a/hal/common/retarget.cpp b/hal/common/retarget.cpp index a60acf0186..53020f91c9 100644 --- a/hal/common/retarget.cpp +++ b/hal/common/retarget.cpp @@ -412,6 +412,18 @@ extern "C" WEAK void __cxa_pure_virtual(void) { #endif +#if defined(TOOLCHAIN_GCC) +extern "C" WEAK void software_init_hook_rtos(void) +{ + // Do nothing by default. +} + +extern "C" void software_init_hook(void) +{ + software_init_hook_rtos(); +} +#endif + // **************************************************************************** // mbed_main is a function that is called before main() // mbed_sdk_init() is also a function that is called before main(), but unlike diff --git a/rtos/rtx/TARGET_ARM7/RTX_CM_lib.h b/rtos/rtx/TARGET_ARM7/RTX_CM_lib.h index 7edd19d41e..2d4ac28bc7 100755 --- a/rtos/rtx/TARGET_ARM7/RTX_CM_lib.h +++ b/rtos/rtx/TARGET_ARM7/RTX_CM_lib.h @@ -339,7 +339,7 @@ void pre_main(void) { main(0, NULL); } -__attribute__((naked)) void software_init_hook (void) { +__attribute__((naked)) void software_init_hook_rtos (void) { __asm ( ".syntax unified\n" ".thumb\n" diff --git a/rtos/rtx/TARGET_CORTEX_A/RTX_CM_lib.h b/rtos/rtx/TARGET_CORTEX_A/RTX_CM_lib.h index 9c5aa119de..151bdd0b4a 100644 --- a/rtos/rtx/TARGET_CORTEX_A/RTX_CM_lib.h +++ b/rtos/rtx/TARGET_CORTEX_A/RTX_CM_lib.h @@ -447,7 +447,7 @@ __asm void __rt_entry (void) { #elif defined (__GNUC__) -__attribute__((naked)) void software_init_hook (void) { +__attribute__((naked)) void software_init_hook_rtos (void) { __asm ( ".syntax unified\n" ".arm\n" diff --git a/rtos/rtx/TARGET_CORTEX_M/RTX_CM_lib.h b/rtos/rtx/TARGET_CORTEX_M/RTX_CM_lib.h index b17dba590e..281bf7d067 100755 --- a/rtos/rtx/TARGET_CORTEX_M/RTX_CM_lib.h +++ b/rtos/rtx/TARGET_CORTEX_M/RTX_CM_lib.h @@ -655,7 +655,7 @@ void pre_main(void) { main(0, NULL); } -__attribute__((naked)) void software_init_hook (void) { +__attribute__((naked)) void software_init_hook_rtos (void) { __asm ( "bl osKernelInitialize\n" #ifdef __MBED_CMSIS_RTOS_CM