summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc/leon3/startup
diff options
context:
space:
mode:
authorDaniel Hellstrom <daniel@gaisler.com>2011-12-12 15:50:57 +0100
committerDaniel Hellstrom <daniel@gaisler.com>2015-04-17 01:10:16 +0200
commite428dc4a953d18b7046773965b83c78e64071317 (patch)
tree11a6802e917c7faafeb6147ab37995e3415aa177 /c/src/lib/libbsp/sparc/leon3/startup
parentDRVMGR: added drvmgr shell command (diff)
downloadrtems-e428dc4a953d18b7046773965b83c78e64071317.tar.bz2
LEON3: implemented BSP DRVMGR startup initialization
Diffstat (limited to 'c/src/lib/libbsp/sparc/leon3/startup')
-rw-r--r--c/src/lib/libbsp/sparc/leon3/startup/bsppredriver.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/sparc/leon3/startup/bsppredriver.c b/c/src/lib/libbsp/sparc/leon3/startup/bsppredriver.c
index a45d9d3b58..bdc1ab8a9e 100644
--- a/c/src/lib/libbsp/sparc/leon3/startup/bsppredriver.c
+++ b/c/src/lib/libbsp/sparc/leon3/startup/bsppredriver.c
@@ -16,6 +16,14 @@
#include <bsp.h>
#include <bsp/bootcard.h>
+static void leon3_interrupt_common_init( void )
+{
+ /* Initialize shared interrupt handling, must be done after IRQ
+ * controller has been found and initialized.
+ */
+ BSP_shared_interrupt_init();
+}
+
/*
* bsp_predriver_hook
*
@@ -24,8 +32,30 @@
*/
void bsp_predriver_hook( void )
{
+#ifndef RTEMS_DRVMGR_STARTUP
+ leon3_interrupt_common_init();
+#endif
+}
+
+#ifdef RTEMS_DRVMGR_STARTUP
+/*
+ * bsp_driver_level_hook
+ *
+ * BSP driver level hook. Called just after drivers have reached initialization
+ * level 'level' (1,2,3,4). See exinit.c for meaning of the every level.
+ *
+ * Initializes the BSP Interrupt layer
+ * After Level 1 we can trust that interrupt controller and system
+ * clock timer drivers now have been initialized.
+ */
+void bsp_driver_level_hook( int level )
+{
/* Initialize shared interrupt handling, must be done after IRQ
* controller has been found and initialized.
*/
- BSP_shared_interrupt_init();
+ if (level != 1)
+ return;
+
+ leon3_interrupt_common_init();
}
+#endif