/* 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 #include "cmparams.h" /** * @brief Architecture-dependent core initialization. * @details This hook is invoked immediately after the stack initialization * and before the DATA and BSS segments initialization. * @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 __core_init(void) { #if __CORTEX_M == 7 SCB_EnableICache(); SCB_EnableDCache(); #endif } /** * @brief Early initialization. * @details This hook is invoked immediately after the stack and core * initialization and before the DATA and BSS segments * initialization. * @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) { } } /** @} */