Index: /soft/giet_vm/memo/Makefile
===================================================================
--- /soft/giet_vm/memo/Makefile	(revision 186)
+++ /soft/giet_vm/memo/Makefile	(revision 187)
@@ -9,5 +9,6 @@
 INCLUDES = -Iinclude/libelfpp -Iinclude/libelfpp/elfpp -Iinclude/ -I../xml
 memo.x: $(SRCS) $(HDRS)
-	g++ -Wall -g  $(SRCS) $(INCLUDES) -o memo.x
+	#g++ -Wall -g  $(SRCS) $(INCLUDES) -o memo.x
+	g++ -Wall -g -DDISTRIBUTED_SCHEDULERS   $(SRCS) $(INCLUDES) -o memo.x
 
 debug: $(SRCS) $(HDRS)
Index: /soft/giet_vm/memo/include/memo.h
===================================================================
--- /soft/giet_vm/memo/include/memo.h	(revision 186)
+++ /soft/giet_vm/memo/include/memo.h	(revision 187)
@@ -96,5 +96,6 @@
 
     //The following functions handle the map.bin structure
-    //inspired from the boot_handler.c of the GIET
+    //inspired from the boot_init.c of the GIET
+    mapping_cluster_t* get_cluster_base( mapping_header_t* header );
     mapping_pseg_t* get_pseg_base( mapping_header_t* header );
     mapping_vspace_t* get_vspace_base( mapping_header_t* header );
@@ -102,5 +103,4 @@
     mapping_vobj_t* get_vobj_base( mapping_header_t* header );
     void print_mapping_info(void* desc);
-    void pseg_map( mapping_pseg_t* pseg);
     void vseg_map( mapping_vseg_t* vseg);
     void buildMap(void* desc);
Index: /soft/giet_vm/memo/src/memo.cpp
===================================================================
--- /soft/giet_vm/memo/src/memo.cpp	(revision 186)
+++ /soft/giet_vm/memo/src/memo.cpp	(revision 187)
@@ -39,5 +39,5 @@
 #include "memo.h"
 
-//#define MOVER_DEBUG
+//#define MOVER_DEBUG 
 
 MeMo::MeMo( const std::string &filename, 
@@ -203,5 +203,9 @@
 // various mapping_info data structure access functions
 /////////////////////////////////////////////////////////////////////////////
-
+mapping_cluster_t* MeMo::get_cluster_base( mapping_header_t* header )
+{
+    return   (mapping_cluster_t*) ((char*)header +
+                                  MAPPING_HEADER_SIZE);
+}
 /////////////////////////////////////////////////////////////////////////////
 mapping_pseg_t* MeMo::get_pseg_base( mapping_header_t* header )
@@ -332,11 +336,4 @@
 } // end print_mapping_info()
 
-//////////////////////////////////////////
-void MeMo::pseg_map( mapping_pseg_t* pseg) 
-{
-    std::string name(pseg->name);
-    m_psegh.m_pSegs.push_back(PSeg(name, pseg->base, pseg->length));
-}
-
 
 //////////////////////////////////////////
@@ -536,4 +533,5 @@
     mapping_header_t*   header = (mapping_header_t*)desc;  
 
+    mapping_cluster_t*  cluster = get_cluster_base( header );     
     mapping_vspace_t*   vspace = get_vspace_base( header );     
     mapping_pseg_t*     pseg   = get_pseg_base( header ); 
@@ -546,7 +544,33 @@
 #endif
 
-    for ( size_t pseg_id = 0 ; pseg_id < header->psegs ; pseg_id++ )
-    {
-        pseg_map( &pseg[pseg_id]);
+#ifdef DISTRIBUTED_SCHEDULERS 
+    char found;
+#endif
+
+    for ( size_t cluster_id = 0 ; cluster_id < header->clusters ; cluster_id++ )
+    {
+
+#ifdef DISTRIBUTED_SCHEDULERS 
+        found    = 0;
+#endif
+
+        for ( size_t pseg_id = cluster[cluster_id].pseg_offset ;
+              pseg_id < cluster[cluster_id].pseg_offset + cluster[cluster_id].psegs ;
+              pseg_id++ )
+        {
+            //build pseg
+            std::string name(pseg[pseg_id].name);
+            PSeg *ps = new PSeg(name, pseg[pseg_id].base, pseg[pseg_id].length);
+
+#ifdef DISTRIBUTED_SCHEDULERS 
+            if ( (pseg[pseg_id].type == PSEG_TYPE_RAM) && (found == 0) )
+            {
+                ps->incNextLma( (cluster[cluster_id].procs << 12) );
+                found  = 1;
+            }
+#endif
+            m_psegh.m_pSegs.push_back(*ps);
+
+        }
     }
 
