Index: soft/giet_vm/giet_xml/xml_driver.c
===================================================================
--- soft/giet_vm/giet_xml/xml_driver.c	(revision 289)
+++ soft/giet_vm/giet_xml/xml_driver.c	(revision 295)
@@ -18,5 +18,7 @@
 
 //////////////////////////////////////////////////////
-void buildXml(mapping_header_t * header, FILE * fpout) {
+void buildXml(mapping_header_t * header, FILE * fpout) 
+{
+    // mnemonics defined in mapping_info.h
     const char * vobj_type[] = 
     { 
@@ -27,5 +29,5 @@
         "MWMR",       // MWMR channel
         "LOCK",       // Spin-Lock
-        "BUFFER",     // Any "no intialiasation needed" objects (stacks...)
+        "BUFFER",     // Any "no intialiasation needed" object (stacks...)
         "BARRIER",    // Barrier
         "CONST",      // Constant
@@ -34,28 +36,36 @@
     };
 
+    // mnemonics defined in mapping_info.h
     const char * pseg_type[] = 
     {
         "RAM",
-        "ROM",
+        "ROM",        // deprecated => use PERI
         "PERI",
     };
 
+    // mnemonics defined in mapping_info.h
     const char * irq_type[] =
     {
-        "HARD",
-        "SOFT",
-        "TIME",
-    };
-
+        "HWI",                      
+        "WTI",
+        "PTI",
+    };
+
+    // mnemonics defined in irq_handler.h
     const char * isr_type[] =
     {
-        "ISR_DEFAULT",
-        "ISR_SWITCH",
-        "ISR_TTY",
-        "ISR_DMA",
-        "ISR_IOC",
+        "ISR_DEFAULT", 
+        "ISR_TICK",
+        "ISR_TTY_RX",
+        "ISR_TTY_TX",
+        "ISR_BDV",
         "ISR_TIMER",
-    };
-
+        "ISR_WAKUP",
+        "ISR_NIC_RX",
+        "ISR_NIC_TX",
+        "ISR_CMA",
+    };
+
+    // mnemonics defined in mapping_info.h
     const char * periph_type[] =
     {
@@ -74,7 +84,8 @@
         "TTY",
         "XCU",
-    };
-
-    const char * periph_subtype[] =
+        "PIC",
+    };
+
+    const char * ioc_subtype[] =
     {
         "BDV",
@@ -242,7 +253,8 @@
     fprintf(fpout, "              x_width      = \"%d\"   \n" , header->x_width);
     fprintf(fpout, "              y_width      = \"%d\"   \n" , header->y_width);
-    fprintf(fpout, "              vspaces      = \"%d\"   \n" , header->vspaces);
-    fprintf(fpout, "              increment    = \"%d\"   \n" , header->vspaces);
-    fprintf(fpout, "              irq_per_proc = \"%d\" >\n\n", header->irq_per_proc);
+    fprintf(fpout, "              irq_per_proc = \"%d\"   \n" , header->irq_per_proc);
+    fprintf(fpout, "              use_ramdisk  = \"%d\"   \n" , header->use_ramdisk);
+    fprintf(fpout, "              x_io         = \"%d\"   \n" , header->x_io);
+    fprintf(fpout, "              y_io         = \"%d\" >\n\n", header->y_io);
 
     ///////////////////// clusters ///////////////////////////////////////////////
@@ -271,19 +283,8 @@
         for (proc_id = cluster[cluster_id].proc_offset;
              proc_id < cluster[cluster_id].proc_offset + cluster[cluster_id].procs;
-             proc_id++) 
-        {
-            fprintf(fpout, "            <proc index = \"%d\" >\n", proc_index);
-            for (irq_id = proc[proc_id].irq_offset; 
-                 irq_id < proc[proc_id].irq_offset + proc[proc_id].irqs;
-                 irq_id++) 
-            {
-                fprintf(fpout, "                <irq type = \"%s\" ", irq_type[irq[irq_id].type]);
-                fprintf(fpout, " icuid = \"0x%x\" ", irq[irq_id].icuid);
-                fprintf(fpout, " isr = \"%s\" ", isr_type[irq[irq_id].isr]);
-                fprintf(fpout, " channel = \"0x%x\" />\n", irq[irq_id].channel);
-            }
-            fprintf(fpout, "            </proc>\n" );
-        }
-
+             proc_id++, proc_index++) 
+        {
+            fprintf(fpout, "            <proc index = \"%d\" />\n", proc_index);
+        }
 
         ///////////////////// coprocessors ///////////////////////////////////////////
@@ -316,8 +317,21 @@
 
             if (periph[periph_id].subtype < PERIPH_SUBTYPE_MAX_VALUE) 
-                fprintf(fpout, " subtype = \"%s\" ", periph_subtype[periph[periph_id].subtype]);
+                fprintf(fpout, " subtype = \"%s\" ", ioc_subtype[periph[periph_id].subtype]);
 
             fprintf(fpout, " psegname = \"%s\" ", pseg[periph[periph_id].psegid].name);
-            fprintf(fpout, " channels = \"%d\" />\n",  periph[periph_id].channels);
+            fprintf(fpout, " channels = \"%d\" >\n",  periph[periph_id].channels);
+            for (irq_id = periph[periph_id].irq_offset; 
+                 irq_id < periph[periph_id].irq_offset + periph[periph_id].irqs;
+                 irq_id++) 
+            {
+                fprintf(fpout, "                <irq srctype = \"%s\" ", irq_type[irq[irq_id].srctype]);
+                fprintf(fpout, " srcid = \"%d\" ", irq[irq_id].srcid);
+                fprintf(fpout, " isr = \"%s\" ", isr_type[irq[irq_id].isr]);
+                fprintf(fpout, " channel = \"%d\" ", irq[irq_id].channel);
+                fprintf(fpout, " dstx = \"%d\" ", irq[irq_id].dstx);
+                fprintf(fpout, " dsty = \"%d\" ", irq[irq_id].dsty);
+                fprintf(fpout, " dstid = \"%d\" />\n", irq[irq_id].dstid);
+            }
+            fprintf(fpout, "            </periph>\n");
         }
         fprintf(fpout, "        </cluster>\n" );
