Index: cpukit/sapi/include/confdefs.h
===================================================================
--- cpukit/sapi/include/confdefs.h	(revision 36b86d7eb5e51a62c0cee1906210b389c2ab96eb)
+++ cpukit/sapi/include/confdefs.h	(revision a853c8518d7b8ccf54491018857ed86548f3ea24)
@@ -27,6 +27,8 @@
  */
 #include <rtems.h>
+#include <rtems/sysinit.h>
 #include <rtems/score/apimutex.h>
 #include <rtems/score/percpu.h>
+#include <rtems/score/userextimpl.h>
 #include <rtems/score/wkspace.h>
 
@@ -2395,4 +2397,10 @@
   #define CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS \
     RTEMS_ARRAY_SIZE(Configuration_Initial_Extensions)
+
+  RTEMS_SYSINIT_ITEM(
+    _User_extensions_Handler_initialization,
+    RTEMS_SYSINIT_INITIAL_EXTENSIONS,
+    RTEMS_SYSINIT_ORDER_MIDDLE
+  );
 #else
   #define CONFIGURE_INITIAL_EXTENSION_TABLE NULL
Index: cpukit/sapi/src/exinit.c
===================================================================
--- cpukit/sapi/src/exinit.c	(revision 36b86d7eb5e51a62c0cee1906210b389c2ab96eb)
+++ cpukit/sapi/src/exinit.c	(revision a853c8518d7b8ccf54491018857ed86548f3ea24)
@@ -48,5 +48,4 @@
 #include <rtems/score/threadimpl.h>
 #include <rtems/score/todimpl.h>
-#include <rtems/score/userextimpl.h>
 #include <rtems/score/watchdogimpl.h>
 #include <rtems/score/wkspace.h>
@@ -114,5 +113,4 @@
   _Thread_Dispatch_initialization();
 
-  _User_extensions_Handler_initialization();
   _ISR_Handler_initialization();
 
Index: cpukit/score/include/rtems/sysinit.h
===================================================================
--- cpukit/score/include/rtems/sysinit.h	(revision 36b86d7eb5e51a62c0cee1906210b389c2ab96eb)
+++ cpukit/score/include/rtems/sysinit.h	(revision a853c8518d7b8ccf54491018857ed86548f3ea24)
@@ -29,5 +29,6 @@
 #define RTEMS_SYSINIT_BSP_WORK_AREAS             000100
 #define RTEMS_SYSINIT_BSP_START                  000200
-#define RTEMS_SYSINIT_DATA_STRUCTURES            000300
+#define RTEMS_SYSINIT_INITIAL_EXTENSIONS         000300
+#define RTEMS_SYSINIT_DATA_STRUCTURES            000301
 #define RTEMS_SYSINIT_IDLE_THREADS               000380
 #define RTEMS_SYSINIT_BSP_LIBC                   000400
Index: cpukit/score/src/threaddispatch.c
===================================================================
--- cpukit/score/src/threaddispatch.c	(revision 36b86d7eb5e51a62c0cee1906210b389c2ab96eb)
+++ cpukit/score/src/threaddispatch.c	(revision a853c8518d7b8ccf54491018857ed86548f3ea24)
@@ -30,4 +30,6 @@
 #include <rtems/score/wkspace.h>
 #include <rtems/config.h>
+
+CHAIN_DEFINE_EMPTY( _User_extensions_Switches_list );
 
 static Thread_Action *_Thread_Get_post_switch_action(
Index: cpukit/score/src/userext.c
===================================================================
--- cpukit/score/src/userext.c	(revision 36b86d7eb5e51a62c0cee1906210b389c2ab96eb)
+++ cpukit/score/src/userext.c	(revision a853c8518d7b8ccf54491018857ed86548f3ea24)
@@ -23,6 +23,4 @@
 #include <rtems/score/userextimpl.h>
 #include <rtems/score/wkspace.h>
-
-CHAIN_DEFINE_EMPTY( _User_extensions_Switches_list );
 
 typedef struct {
@@ -51,16 +49,11 @@
 void _User_extensions_Handler_initialization(void)
 {
-  uint32_t number_of_initial_extensions =
-    rtems_configuration_get_number_of_initial_extensions();
+  User_extensions_Switch_control *initial_extension_switch_controls =
+    _Workspace_Allocate_or_fatal_error(
+      rtems_configuration_get_number_of_initial_extensions()
+        * sizeof( *initial_extension_switch_controls )
+    );
+  User_extensions_Switch_context ctx = { initial_extension_switch_controls };
 
-  if ( number_of_initial_extensions > 0 ) {
-    User_extensions_Switch_control *initial_extension_switch_controls =
-      _Workspace_Allocate_or_fatal_error(
-        number_of_initial_extensions
-          * sizeof( *initial_extension_switch_controls )
-      );
-    User_extensions_Switch_context ctx = { initial_extension_switch_controls };
-
-    _User_extensions_Iterate( &ctx, _User_extensions_Switch_visitor );
-  }
+  _User_extensions_Iterate( &ctx, _User_extensions_Switch_visitor );
 }
Index: doc/user/init.t
===================================================================
--- doc/user/init.t	(revision 36b86d7eb5e51a62c0cee1906210b389c2ab96eb)
+++ doc/user/init.t	(revision a853c8518d7b8ccf54491018857ed86548f3ea24)
@@ -158,10 +158,14 @@
 mandatory.
 
+@item RTEMS_SYSINIT_INITIAL_EXTENSIONS
+Initializes the initial extensions if at least one is configured by the Board
+Support Package or application.
+
 @item RTEMS_SYSINIT_DATA_STRUCTURES
 This directive is called when the Board Support Package has completed its basic
 initialization and allows RTEMS to initialize the application environment based
 upon the information in the Configuration Table, User Initialization Tasks
-Table, Device Driver Table, User Extension Table, Multiprocessor Configuration
-Table, and the Multiprocessor Communications Interface (MPCI) Table.
+Table, Device Driver Table, Multiprocessor Configuration Table, and the
+Multiprocessor Communications Interface (MPCI) Table.
 
 @item RTEMS_SYSINIT_BSP_LIBC
Index: testsuites/sptests/spsysinit01/init.c
===================================================================
--- testsuites/sptests/spsysinit01/init.c	(revision 36b86d7eb5e51a62c0cee1906210b389c2ab96eb)
+++ testsuites/sptests/spsysinit01/init.c	(revision a853c8518d7b8ccf54491018857ed86548f3ea24)
@@ -27,4 +27,5 @@
 #include <rtems/score/apimutex.h>
 #include <rtems/score/sysstate.h>
+#include <rtems/score/userextimpl.h>
 #include <rtems/score/wkspace.h>
 
@@ -36,4 +37,6 @@
   BSP_START_PRE,
   BSP_START_POST,
+  INITIAL_EXTENSIONS_PRE,
+  INITIAL_EXTENSIONS_POST,
   DATA_STRUCTURES_PRE,
   DATA_STRUCTURES_POST,
@@ -107,4 +110,16 @@
 }
 
+FIRST(RTEMS_SYSINIT_INITIAL_EXTENSIONS)
+{
+  assert(_Chain_Is_empty(&_User_extensions_Switches_list));
+  next_step(INITIAL_EXTENSIONS_PRE);
+}
+
+LAST(RTEMS_SYSINIT_INITIAL_EXTENSIONS)
+{
+  assert(!_Chain_Is_empty(&_User_extensions_Switches_list));
+  next_step(INITIAL_EXTENSIONS_POST);
+}
+
 FIRST(RTEMS_SYSINIT_DATA_STRUCTURES)
 {
@@ -206,4 +221,6 @@
 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
 
+#define CONFIGURE_STACK_CHECKER_ENABLED
+
 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
 
