diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-04-11 06:18:32 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-04-12 07:09:12 +0200 |
commit | c5fe44319e7d82883f6624d9b2386d9dd7c3c0eb (patch) | |
tree | b0c6f7e7f5d0be19d8caad1efe7c4c1f534e7b13 /bsps/shared/start | |
parent | bsps: Simplify source file path in Makefile.am (diff) | |
download | rtems-c5fe44319e7d82883f6624d9b2386d9dd7c3c0eb.tar.bz2 |
bsps: Move bootcard.c to bsps
This patch is a part of the BSP source reorganization.
Update #3285.
Diffstat (limited to 'bsps/shared/start')
-rw-r--r-- | bsps/shared/start/bootcard.c | 85 |
1 files changed, 85 insertions, 0 deletions
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 <cjohns@plessey.com.au> 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 <bsp/bootcard.h> + +#include <rtems.h> +#include <rtems/sysinit.h> + +/* + * 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!!! * + *************************************************************** + ***************************************************************/ +} |