From e591fba1143eb14ab25e52f5947f6033fbdd334f Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Fri, 3 Apr 2015 09:51:52 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7847 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/common/ports/ARM/compilers/GCC/crt0.s | 41 +----------- os/common/ports/ARM/compilers/GCC/crt1.c | 75 ++++++++++++++++++++++ .../ports/ARM/compilers/GCC/mk/startup_lpc214x.mk | 2 +- os/common/ports/ARMCMx/compilers/GCC/crt0.c | 75 ---------------------- os/common/ports/ARMCMx/compilers/GCC/crt1.c | 75 ++++++++++++++++++++++ .../ports/ARMCMx/compilers/GCC/mk/startup_k20x.mk | 2 +- .../ports/ARMCMx/compilers/GCC/mk/startup_kl2x.mk | 2 +- .../ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk | 2 +- .../ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk | 2 +- .../ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk | 2 +- .../ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk | 2 +- .../ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk | 2 +- .../ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk | 2 +- 13 files changed, 161 insertions(+), 123 deletions(-) create mode 100644 os/common/ports/ARM/compilers/GCC/crt1.c delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/crt0.c create mode 100644 os/common/ports/ARMCMx/compilers/GCC/crt1.c diff --git a/os/common/ports/ARM/compilers/GCC/crt0.s b/os/common/ports/ARM/compilers/GCC/crt0.s index 951fd4c78..dea01fb83 100644 --- a/os/common/ports/ARM/compilers/GCC/crt0.s +++ b/os/common/ports/ARM/compilers/GCC/crt0.s @@ -142,51 +142,14 @@ bssloop: bx r0 .code 16 bl main - ldr r1, =_main_exit_handler + ldr r1, =__default_exit bx r1 .code 32 #else /* !defined(THUMB_NO_INTERWORKING) */ bl main - b _main_exit_handler + b __default_exit #endif /* !defined(THUMB_NO_INTERWORKING) */ -/* - * Default main function exit handler. - */ - .weak _main_exit_handler -_main_exit_handler: -.loop: b .loop - -/* - * Default early initialization code. It is declared weak in order to be - * replaced by the real initialization code. - * Early initialization is performed just before reset before BSS and DATA - * segments initialization. - */ -#if defined(THUMB_NO_INTERWORKING) - .thumb_func - .code 16 -#endif - .weak __early_init -__early_init: - bx lr - .code 32 - -/* - * Default late initialization code. It is declared weak in order to be - * replaced by the real initialization code. - * Early initialization is performed just after reset before BSS and DATA - * segments initialization. - */ -#if defined(THUMB_NO_INTERWORKING) - .thumb_func - .code 16 -#endif - .weak __late_init -__late_init: - bx lr - .code 32 - #endif /* !defined(__DOXYGEN__) */ /** @} */ diff --git a/os/common/ports/ARM/compilers/GCC/crt1.c b/os/common/ports/ARM/compilers/GCC/crt1.c new file mode 100644 index 000000000..68e22b95a --- /dev/null +++ b/os/common/ports/ARM/compilers/GCC/crt1.c @@ -0,0 +1,75 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file ARMCMx/compilers/GCC/crt1.c + * @brief Startup stub functions. + * + * @addtogroup ARMCMx_GCC_STARTUP + * @{ + */ + +#include + +/** + * @brief Early initialization. + * @details This hook is invoked immediately after the stack initialization + * and before the DATA and BSS segments initialization. The + * default behavior is to do nothing. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __early_init(void) {} +/*lint -restore*/ + +/** + * @brief Late initialization. + * @details This hook is invoked after the DATA and BSS segments + * initialization and before any static constructor. The + * default behavior is to do nothing. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __late_init(void) {} +/*lint -restore*/ + +/** + * @brief Default @p main() function exit handler. + * @details This handler is invoked or the @p main() function exit. The + * default behavior is to enter an infinite loop. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((noreturn, weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __default_exit(void) { +/*lint -restore*/ + + while (true) { + } +} + +/** @} */ diff --git a/os/common/ports/ARM/compilers/GCC/mk/startup_lpc214x.mk b/os/common/ports/ARM/compilers/GCC/mk/startup_lpc214x.mk index 4927fd31d..4f1af1875 100644 --- a/os/common/ports/ARM/compilers/GCC/mk/startup_lpc214x.mk +++ b/os/common/ports/ARM/compilers/GCC/mk/startup_lpc214x.mk @@ -1,5 +1,5 @@ # List of the ChibiOS generic LPC214x file. -STARTUPSRC = +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARM/compilers/GCC/crt1.c STARTUPASM = $(CHIBIOS)/os/common/ports/ARM/compilers/GCC/vectors.s \ $(CHIBIOS)/os/common/ports/ARM/compilers/GCC/crt0.s diff --git a/os/common/ports/ARMCMx/compilers/GCC/crt0.c b/os/common/ports/ARMCMx/compilers/GCC/crt0.c deleted file mode 100644 index c3bb3fd79..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/crt0.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file ARMCMx/compilers/GCC/crt0.c - * @brief Startup stub functions. - * - * @addtogroup ARMCMx_GCC_STARTUP - * @{ - */ - -#include - -/** - * @brief Early initialization. - * @details This hook is invoked immediately after the stack initialization - * and before the DATA and BSS segments initialization. The - * default behavior is to do nothing. - * @note This function is a weak symbol. - */ -#if !defined(__DOXYGEN__) -__attribute__((weak)) -#endif -/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ -void __early_init(void) {} -/*lint -restore*/ - -/** - * @brief Late initialization. - * @details This hook is invoked after the DATA and BSS segments - * initialization and before any static constructor. The - * default behavior is to do nothing. - * @note This function is a weak symbol. - */ -#if !defined(__DOXYGEN__) -__attribute__((weak)) -#endif -/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ -void __late_init(void) {} -/*lint -restore*/ - -/** - * @brief Default @p main() function exit handler. - * @details This handler is invoked or the @p main() function exit. The - * default behavior is to enter an infinite loop. - * @note This function is a weak symbol. - */ -#if !defined(__DOXYGEN__) -__attribute__((noreturn, weak)) -#endif -/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ -void __default_exit(void) { -/*lint -restore*/ - - while (true) { - } -} - -/** @} */ diff --git a/os/common/ports/ARMCMx/compilers/GCC/crt1.c b/os/common/ports/ARMCMx/compilers/GCC/crt1.c new file mode 100644 index 000000000..68e22b95a --- /dev/null +++ b/os/common/ports/ARMCMx/compilers/GCC/crt1.c @@ -0,0 +1,75 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file ARMCMx/compilers/GCC/crt1.c + * @brief Startup stub functions. + * + * @addtogroup ARMCMx_GCC_STARTUP + * @{ + */ + +#include + +/** + * @brief Early initialization. + * @details This hook is invoked immediately after the stack initialization + * and before the DATA and BSS segments initialization. The + * default behavior is to do nothing. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __early_init(void) {} +/*lint -restore*/ + +/** + * @brief Late initialization. + * @details This hook is invoked after the DATA and BSS segments + * initialization and before any static constructor. The + * default behavior is to do nothing. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __late_init(void) {} +/*lint -restore*/ + +/** + * @brief Default @p main() function exit handler. + * @details This handler is invoked or the @p main() function exit. The + * default behavior is to enter an infinite loop. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((noreturn, weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __default_exit(void) { +/*lint -restore*/ + + while (true) { + } +} + +/** @} */ diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_k20x.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_k20x.mk index 23ab9ff11..abcb5fb25 100644 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_k20x.mk +++ b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_k20x.mk @@ -1,5 +1,5 @@ # List of the ChibiOS generic K20x startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0.c \ +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_kl2x.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_kl2x.mk index 33d004eec..8e6216cdb 100644 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_kl2x.mk +++ b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_kl2x.mk @@ -1,5 +1,5 @@ # List of the ChibiOS generic KL2x startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0.c \ +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk index f5974bd39..23f37a49d 100644 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk +++ b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk @@ -1,5 +1,5 @@ # List of the ChibiOS generic STM32F0xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0.c \ +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk index d9ee242b2..e5b884453 100644 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk +++ b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk @@ -1,5 +1,5 @@ # List of the ChibiOS generic STM32F1xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0.c \ +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk index bfbb4f066..e43a5b99e 100644 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk +++ b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk @@ -1,5 +1,5 @@ # List of the ChibiOS generic STM32F3xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0.c \ +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk index af4c99ada..37145b232 100644 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk +++ b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk @@ -1,5 +1,5 @@ # List of the ChibiOS generic STM32F4xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0.c \ +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk index 4539b970e..04c1120ad 100644 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk +++ b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk @@ -1,5 +1,5 @@ # List of the ChibiOS generic STM32L0xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0.c \ +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk index 96ec94c13..9724504cc 100644 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk +++ b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk @@ -1,5 +1,5 @@ # List of the ChibiOS generic STM32L1xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0.c \ +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s -- cgit v1.2.3