From c5fe44319e7d82883f6624d9b2386d9dd7c3c0eb Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 11 Apr 2018 06:18:32 +0200 Subject: bsps: Move bootcard.c to bsps This patch is a part of the BSP source reorganization. Update #3285. --- bsps/shared/start/bootcard.c | 85 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 bsps/shared/start/bootcard.c (limited to 'bsps/shared/start') diff --git a/bsps/shared/start/bootcard.c b/bsps/shared/start/bootcard.c new file mode 100644 index 0000000000..3e243d2569 --- /dev/null +++ b/bsps/shared/start/bootcard.c @@ -0,0 +1,85 @@ +/** + * @file + * + * @ingroup bsp_bootcard + * + * @brief Standard system startup. + * + * This is the C entry point for ALL RTEMS BSPs. It is invoked + * from the assembly language initialization file usually called + * start.S. It provides the framework for the BSP initialization + * sequence. For the basic flow of initialization see RTEMS C User's Guide, + * Initialization Manager. + * + * This style of initialization ensures that the C++ global + * constructors are executed after RTEMS is initialized. + * Thanks to Chris Johns for the idea + * to move C++ global constructors into the first task. + */ + +/* + * COPYRIGHT (c) 1989-2014. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#include + +#include +#include + +/* + * At most a single pointer to the cmdline for those target + * short on memory and not supporting a command line. + */ +const char *bsp_boot_cmdline; + +RTEMS_SYSINIT_ITEM( + bsp_work_area_initialize, + RTEMS_SYSINIT_BSP_WORK_AREAS, + RTEMS_SYSINIT_ORDER_MIDDLE +); + +RTEMS_SYSINIT_ITEM( + bsp_start, + RTEMS_SYSINIT_BSP_START, + RTEMS_SYSINIT_ORDER_MIDDLE +); + +RTEMS_SYSINIT_ITEM( + bsp_predriver_hook, + RTEMS_SYSINIT_BSP_PRE_DRIVERS, + RTEMS_SYSINIT_ORDER_MIDDLE +); + +/* + * This is the initialization framework routine that weaves together + * calls to RTEMS and the BSP in the proper sequence to initialize + * the system while maximizing shared code and keeping BSP code in C + * as much as possible. + */ +void boot_card( + const char *cmdline +) +{ + rtems_interrupt_level bsp_isr_level; + + /* + * Make sure interrupts are disabled. + */ + (void) bsp_isr_level; + rtems_interrupt_local_disable( bsp_isr_level ); + + bsp_boot_cmdline = cmdline; + + rtems_initialize_executive(); + + /*************************************************************** + *************************************************************** + * APPLICATION RUNS NOW!!! We will not return to here!!! * + *************************************************************** + ***************************************************************/ +} -- cgit v1.2.3