Index: /soft/giet_vm/Makefile
===================================================================
--- /soft/giet_vm/Makefile	(revision 298)
+++ /soft/giet_vm/Makefile	(revision 299)
@@ -11,5 +11,5 @@
 ### partition sectors    = 524832 
 
-MAP_XML      = mappings/4c_1p_four_leti_ext.xml
+MAP_XML      = mappings/4c_1p_sort_iob.xml
 
 ### Objects to be linked for kernel.elf
@@ -52,4 +52,5 @@
                build/drivers/xcu_driver.o \
                build/drivers/ioc_driver.o \
+               build/drivers/iob_driver.o \
                build/drivers/bdv_driver.o \
                build/drivers/sdc_driver.o \
Index: /soft/giet_vm/giet_boot/boot.c
===================================================================
--- /soft/giet_vm/giet_boot/boot.c	(revision 298)
+++ /soft/giet_vm/giet_boot/boot.c	(revision 299)
@@ -79,4 +79,5 @@
 #include <nic_driver.h>
 #include <ioc_driver.h>
+#include <iob_driver.h>
 #include <pic_driver.h>
 #include <mwr_driver.h>
@@ -1963,5 +1964,5 @@
                 {
                     // initialize all channels except channel 0 because it has been
-                    // initialize during mapping_info loading
+                    // initialized by the preloader.
                     for (channel_id = 1; channel_id < channels; channel_id++) 
                     {
@@ -1975,27 +1976,4 @@
                     break;
                 }
-                case PERIPH_TYPE_DMA:    // vci_multi_dma component
-                {
-                    for (channel_id = 0; channel_id < channels; channel_id++) 
-                    {
-                        _dma_init( cluster_xy, channel_id );
-                    }
-#if BOOT_DEBUG_PERI
-_puts("- DMA / channels = ");
-_putd(channels);
-_puts("\n");
-#endif
-                    break;
-                }
-                case PERIPH_TYPE_FBF:    // vci_block_device component
-                {
-                    // nothing to do
-#if BOOT_DEBUG_PERI
-_puts("- FBF / channels = ");
-_putd(channels);
-_puts("\n");
-#endif
-                    break;
-                }
                 case PERIPH_TYPE_CMA:    // vci_chbuf_dma component
                 {
@@ -2024,24 +2002,4 @@
                     break;
                 }
-                case PERIPH_TYPE_XCU:    // vci_xicu component
-                {
-                    // nothing to do 
-#if BOOT_DEBUG_PERI
-_puts("- XCU / channels = ");
-_putd(channels);
-_puts("\n");
-#endif
-                    break;
-                }
-                case PERIPH_TYPE_MMC:    // vci_memcache config
-                {
-                    // nothing to do
-#if BOOT_DEBUG_PERI
-_puts("- MMC / channels = ");
-_putd(channels);
-_puts("\n");
-#endif
-                    break;
-                }
                 case PERIPH_TYPE_TTY:    // vci_multi_tty component
                 {
@@ -2056,5 +2014,20 @@
                 case PERIPH_TYPE_IOB:    // vci_io_bridge component
                 {
-                    if (USE_IOB) 
+                    // initialize r_xicu_base & r_xicu_size registers
+                    unsigned int base = (unsigned int)&seg_xcu_base;
+
+#if BOOT_DEBUG_PERI
+_puts("- IOB / channels = ");
+_putd(channels);
+_puts(" / XICU_BASE = ");
+_putx( base );
+_puts(" / XICU_SIZE = ");
+_putx( 0x1000 );
+_puts("\n");
+#endif
+                    _iob_set_xicu_base( cluster_xy, base );
+                    _iob_set_xicu_size( cluster_xy, 0x1000 );
+
+                    if (GIET_USE_IOMMU) 
                     {
                         // TODO
@@ -2066,9 +2039,4 @@
                         // pseg_base[IOB_IOMMU_ACTIVE] = 1;        
                     }
-#if BOOT_DEBUG_PERI
-_puts("- IOB / channels = ");
-_putd(channels);
-_puts("\n");
-#endif
                     break;
                 }
@@ -2222,5 +2190,5 @@
         _set_sched( (unsigned int)_schedulers[0] );
 
-        // Initializing peripherals
+        // Initializing non replicated peripherals
         boot_peripherals_init();
 
Index: /soft/giet_vm/giet_config.h
===================================================================
--- /soft/giet_vm/giet_config.h	(revision 298)
+++ /soft/giet_vm/giet_config.h	(revision 299)
@@ -40,5 +40,5 @@
 #define GIET_OPEN_FILES_MAX      16         /* max simultaneously open files */
 #define GIET_NB_VSPACE_MAX	     64			/* max number of virtual spaces */
-#define GIET_TICK_VALUE	         0x8000     /* context switch period (number of cycles) */
+#define GIET_TICK_VALUE	         0xFFFFFFFF /* context switch period (number of cycles) */
 #define GIET_USE_IOMMU           0          /* IOMMU activated when non zero */
 #define GIET_NO_HARD_CC          0          /* No hard cache coherence when non zero */
Index: /soft/giet_vm/giet_kernel/kernel_init.c
===================================================================
--- /soft/giet_vm/giet_kernel/kernel_init.c	(revision 298)
+++ /soft/giet_vm/giet_kernel/kernel_init.c	(revision 299)
@@ -157,5 +157,5 @@
 
 #if GIET_DEBUG_INIT
-_printf("\n[GIET DEBUG INIT] Processor[%d,%d,%d] contibutes to PTABS arrays\n"
+_printf("\n[GIET DEBUG INIT] Processor[%d,%d,%d] contributes to PTABS arrays\n"
         " - ptabs_vaddr[%d] = %x / ptpr_paddr[%d] = %l\n",
         x, y, lpid,  
@@ -176,5 +176,5 @@
 
 #if GIET_DEBUG_INIT
-_printf("\n[GIET DEBUG INIT] Processor[%d,%d,%d] set scheduler for task %d\n"
+_printf("\n[GIET DEBUG INIT] Processor[%d,%d,%d] update context for task %d\n"
         " - ctx_epc   = %x\n"
         " - ctx_ra    = %x\n",
@@ -307,5 +307,5 @@
 
     unsigned int*  pcount = &_init_barrier;
-    unsigned int   nprocs = X_SIZE*(Y_SIZE-1)*NB_PROCS_MAX;
+    unsigned int   nprocs = TOTAL_PROCS;
     unsigned int   count;
 
Index: /soft/giet_vm/giet_xml/xml_parser.c
===================================================================
--- /soft/giet_vm/giet_xml/xml_parser.c	(revision 298)
+++ /soft/giet_vm/giet_xml/xml_parser.c	(revision 299)
@@ -108,4 +108,5 @@
 ////////////////////////////////////////////////////////////////////////
 
+unsigned int total_procs      = 0; // total number of processors
 unsigned int nb_procs_max     = 0; // max number of processors per cluster
 unsigned int nb_tasks_max     = 0; // max number of tasks (in all vspaces)
@@ -1932,4 +1933,5 @@
     proc_loc_index++;
     proc_index++;
+    total_procs++;
 } // end procNode()
 
@@ -2684,4 +2686,5 @@
     file_write(fdout, "\n");
 
+    def_int_write(fdout, "TOTAL_PROCS       ", total_procs);
     def_int_write(fdout, "NB_PROCS_MAX      ", nb_procs_max);
     def_int_write(fdout, "NB_TASKS_MAX      ", nb_tasks_max);
