Index: src/lib/libbsp/shared/bspdriverlevelhook.c
===================================================================
--- c/src/lib/libbsp/shared/bspdriverlevelhook.c	(revision 0b93d4f843caa9228ae0a89a1692bf99a2a82f9a)
+++ 	(revision )
@@ -1,16 +1,0 @@
-/*
- *  This is a dummy bsp_driver_level_hook routine.
- *
- *  COPYRIGHT (c) 2015.
- *  Cobham Gaisler.
- *
- *  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 <drvmgr/drvmgr.h>
-
-void bsp_driver_level_hook( int level )
-{
-}
Index: c/src/lib/libbsp/sparc/leon2/startup/bsppredriver.c
===================================================================
--- c/src/lib/libbsp/sparc/leon2/startup/bsppredriver.c	(revision 0b93d4f843caa9228ae0a89a1692bf99a2a82f9a)
+++ c/src/lib/libbsp/sparc/leon2/startup/bsppredriver.c	(revision 6d21a3f230baefd0134ac7c09fb02b303386e243)
@@ -66,16 +66,5 @@
   },
 };
-
-/*
- *  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.
- */
-void bsp_driver_level_hook( int level )
-{
-}
-
-#endif
+#endif /* RTEMS_DRVMGR_STARTUP */
 
 /*
Index: c/src/lib/libbsp/sparc/leon3/startup/bsppredriver.c
===================================================================
--- c/src/lib/libbsp/sparc/leon3/startup/bsppredriver.c	(revision 0b93d4f843caa9228ae0a89a1692bf99a2a82f9a)
+++ c/src/lib/libbsp/sparc/leon3/startup/bsppredriver.c	(revision 6d21a3f230baefd0134ac7c09fb02b303386e243)
@@ -18,4 +18,6 @@
 
 #include <drvmgr/drvmgr.h>
+
+#include <rtems/sysinit.h>
 
 static void leon3_interrupt_common_init( void )
@@ -44,22 +46,11 @@
 #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.
+ * Initialize shared interrupt handling, must be done after IRQ controller has
+ * been found and initialized.
  */
-void bsp_driver_level_hook( int level )
-{
-  /* Initialize shared interrupt handling, must be done after IRQ
-   * controller has been found and initialized.
-   */
-  if (level != 1)
-  	return;
-
-  leon3_interrupt_common_init();
-}
+RTEMS_SYSINIT_ITEM(
+  leon3_interrupt_common_init,
+  RTEMS_SYSINIT_DRVMGR_LEVEL_1,
+  RTEMS_SYSINIT_ORDER_LAST
+);
 #endif
Index: cpukit/include/drvmgr/drvmgr.h
===================================================================
--- cpukit/include/drvmgr/drvmgr.h	(revision 0b93d4f843caa9228ae0a89a1692bf99a2a82f9a)
+++ cpukit/include/drvmgr/drvmgr.h	(revision 6d21a3f230baefd0134ac7c09fb02b303386e243)
@@ -351,10 +351,4 @@
 extern void _DRV_Manager_init_level(int level);
 
-/*! This function must be defined by the BSP when the driver manager is enabled
- * and initialized during BSP initialization. The function is called after a
- * init level is reached the first time by the driver manager.
- */
-extern void bsp_driver_level_hook(int level);
-
 /*! Init driver manager all in one go, will call _DRV_Manager_initialization(),
  *  then _DRV_Manager_init_level([1..DRVMGR_LEVEL_MAX]).
Index: cpukit/libdrvmgr/drvmgr.c
===================================================================
--- cpukit/libdrvmgr/drvmgr.c	(revision 0b93d4f843caa9228ae0a89a1692bf99a2a82f9a)
+++ cpukit/libdrvmgr/drvmgr.c	(revision 6d21a3f230baefd0134ac7c09fb02b303386e243)
@@ -67,11 +67,4 @@
 /* DRIVER MANAGER */
 
-void bsp_driver_level_hook(int level) __attribute__((weak));
-
-/* default hook does nothing, BSP may override. */
-void bsp_driver_level_hook(int level)
-{
-}
-
 void _DRV_Manager_init_level(int level)
 {
@@ -86,6 +79,4 @@
 	/* Initialize buses and devices into this new level */
 	drvmgr_init_update();
-
-	bsp_driver_level_hook(level);
 }
 
