Index: /soft/giet_vm/Makefile
===================================================================
--- /soft/giet_vm/Makefile	(revision 355)
+++ /soft/giet_vm/Makefile	(revision 356)
@@ -116,7 +116,8 @@
 CONVOL_OBJS  = build/convol/main.o   \
                build/libs/stdio.o    \
+               build/libs/stdlib.o    \
                build/libs/barrier.o
 
-CFLAGS = -Wall -ffreestanding -mno-gpopt -mips32 -O2
+			   CFLAGS = -Wall -ffreestanding -mno-gpopt -mips32 -g
 
 GIET_INCLUDE = -Igiet_boot    \
Index: /soft/giet_vm/giet_boot/boot.c
===================================================================
--- /soft/giet_vm/giet_boot/boot.c	(revision 355)
+++ /soft/giet_vm/giet_boot/boot.c	(revision 356)
@@ -2524,9 +2524,14 @@
     }  // end monoprocessor boot
 
-    // reset BEV bit in the status register to use GIET exception
-    // handler instead of the PRELOADER exception handler
+    ///////////////////////////////////////////////////////////////////////////////
+    //            Parallel execution starts actually here
+    ///////////////////////////////////////////////////////////////////////////////
+
+    // all processors reset BEV bit in the status register to use
+    // the GIET_VM exception handler instead of the PRELOADER exception handler
     _set_sr( 0 );
 
-    // all processor initialise SCHED register
+    // all processor initialise the SCHED register
+    // from the _schedulers[x][y][lpid array]
     unsigned int cluster_xy = gpid / NB_PROCS_MAX;
     unsigned int lpid       = gpid % NB_PROCS_MAX;
@@ -2542,5 +2547,6 @@
     }
 
-    // all processors jump to kernel_init (address defined in giet_vsegs.ld)
+    // all processors jump to kernel_init 
+    // using the address defined in the giet_vsegs.ld file
     unsigned int kernel_entry = (unsigned int)&kernel_init_vbase;
     asm volatile( "jr   %0" ::"r"(kernel_entry) );
Index: /soft/giet_vm/giet_libs/stdlib.h
===================================================================
--- /soft/giet_vm/giet_libs/stdlib.h	(revision 355)
+++ /soft/giet_vm/giet_libs/stdlib.h	(revision 356)
@@ -18,8 +18,9 @@
 
 ////////////////////////////////////////////////////////////////////////////////////////
-//  mempcy()
+//  memset()
 // GCC requires this function. Taken from MutekH.
 ////////////////////////////////////////////////////////////////////////////////////////
 inline void * memset(void * dst, int s, unsigned int count);
+
 #endif
 
Index: /soft/giet_vm/giet_python/mapping.py
===================================================================
--- /soft/giet_vm/giet_python/mapping.py	(revision 355)
+++ /soft/giet_vm/giet_python/mapping.py	(revision 356)
@@ -144,5 +144,7 @@
                   y_io = 0,                      # cluster_io y coordinate
                   peri_increment = 0x10000,      # address increment for globals
-                  reset_address = 0xBFC00000 ):  # Processor wired boot_address
+                  reset_address  = 0xBFC00000,   # Processor wired boot_address
+                  ram_base       = 0,            # RAM physical base address in cluster[0,0]
+                  ram_size       = 0 ):          # RAM size in each cluster (bytes)
 
         self.signature      = 0xDACE2014
@@ -161,4 +163,7 @@
         self.peri_increment = peri_increment
         self.reset_address  = reset_address
+        self.ram_base       = ram_base
+        self.ram_size       = ram_size
+
 
         self.total_vspaces  = 0
@@ -193,5 +198,6 @@
        
         # check coordinates (obtained from the base address)
-        cluster_xy = base >> (self.paddr_width - self.x_width - self.y_width)
+        paddr_lsb_width = self.paddr_width - self.x_width - self.y_width
+        cluster_xy = base >> paddr_lsb_width
         x = cluster_xy >> (self.y_width);
         y = cluster_xy & ((1 << self.y_width) - 1) 
@@ -201,4 +207,8 @@
         assert (x < self.x_size) and (y < self.y_size)
         
+        assert ( (base & ((1<<paddr_lsb_width)-1)) == self.ram_base )
+
+        assert ( size == self.ram_size )
+
         cluster_id = (x * self.y_size) + y
 
@@ -1118,5 +1128,8 @@
         s += '\n'
 
-        s += '/* physical base addresses for peripherals */\n'
+        s += '/* base addresses and sizes for physical segments */\n'
+        s += '\n'
+        s += '#define SEG_RAM_BASE           0x%x\n'  % self.ram_base            
+        s += '#define SEG_RAM_SIZE           0x%x\n'  % self.ram_size            
         s += '\n'
         s += '#define SEG_CMA_BASE           0x%x\n'  % seg_cma_base            
