Index: ./score/src/objectmp.c
===================================================================
RCS file: /usr1/CVS/rtems/cpukit/score/src/objectmp.c,v
retrieving revision 1.26
diff -u -r1.26 objectmp.c
--- ./score/src/objectmp.c	22 Dec 2008 05:52:32 -0000	1.26
+++ ./score/src/objectmp.c	1 Jul 2009 13:13:00 -0000
@@ -25,19 +25,16 @@
 
 /*PAGE
  *
- *  _Objects_MP_Handler_initialization
+ *  _Objects_MP_Handler_early_initialization
  *
  */
-
-void _Objects_MP_Handler_initialization(void)
+void _Objects_MP_Handler_early_initialization(void)
 {
   uint32_t   node;
   uint32_t   maximum_nodes;
-  uint32_t   maximum_global_objects;
 
   node                   = _Configuration_MP_table->node;
   maximum_nodes          = _Configuration_MP_table->maximum_nodes;
-  maximum_global_objects = _Configuration_MP_table->maximum_global_objects;
 
   if ( node < 1 || node > maximum_nodes )
     _Internal_error_Occurred(
@@ -46,9 +43,23 @@
       INTERNAL_ERROR_INVALID_NODE
     );
 
-
   _Objects_Local_node    = node;
   _Objects_Maximum_nodes = maximum_nodes;
+}
+
+/*PAGE
+ *
+ *  _Objects_MP_Handler_initialization
+ *
+ */
+
+void _Objects_MP_Handler_initialization(void)
+{
+
+  uint32_t   maximum_global_objects;
+
+  maximum_global_objects = _Configuration_MP_table->maximum_global_objects;
+
   _Objects_MP_Maximum_global_objects = maximum_global_objects;
 
   if ( maximum_global_objects == 0 ) {
@@ -293,3 +304,4 @@
   *the_object = NULL;
 
 }
+
Index: ./score/include/rtems/score/objectmp.h
===================================================================
RCS file: /usr1/CVS/rtems/cpukit/score/include/rtems/score/objectmp.h,v
retrieving revision 1.26
diff -u -r1.26 objectmp.h
--- ./score/include/rtems/score/objectmp.h	22 Dec 2008 06:05:34 -0000	1.26
+++ ./score/include/rtems/score/objectmp.h	1 Jul 2009 13:13:00 -0000
@@ -53,6 +53,13 @@
  */
 void _Objects_MP_Handler_initialization(void);
 
+/** @brief  Objects MP Handler Early initialization
+ *
+ *  This routine intializes the global object node number
+ *  used in the ID field of all objects.
+ */
+void _Objects_MP_Handler_early_initialization(void);
+
 /** @brief Objects MP Open
  *
  *  This routine place the specified global object in the
Index: ./sapi/src/exinit.c
===================================================================
RCS file: /usr1/CVS/rtems/cpukit/sapi/src/exinit.c,v
retrieving revision 1.48
diff -u -r1.48 exinit.c
--- ./sapi/src/exinit.c	18 Dec 2008 17:15:12 -0000	1.48
+++ ./sapi/src/exinit.c	1 Jul 2009 13:13:00 -0000
@@ -96,6 +96,10 @@
     _System_state_Handler_initialization( FALSE );
   #endif
 
+  #if defined(RTEMS_MULTIPROCESSING)
+    _Objects_MP_Handler_early_initialization();
+  #endif
+
   /*
    *  Do this as early as possible to ensure no debugging output
    *  is even attempted to be printed.
