summaryrefslogtreecommitdiffstats
path: root/bsps/shared/start
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-11 06:18:32 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-12 07:09:12 +0200
commitc5fe44319e7d82883f6624d9b2386d9dd7c3c0eb (patch)
treeb0c6f7e7f5d0be19d8caad1efe7c4c1f534e7b13 /bsps/shared/start
parentbsps: Simplify source file path in Makefile.am (diff)
downloadrtems-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.c85
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!!! *
+ ***************************************************************
+ ***************************************************************/
+}