Index: /soft/giet_vm/libs/libsrl/srl_args.h
===================================================================
--- /soft/giet_vm/libs/libsrl/srl_args.h	(revision 212)
+++ /soft/giet_vm/libs/libsrl/srl_args.h	(revision 213)
@@ -4,25 +4,25 @@
 
 
-#define SRL_GET_MWMR(port)      APP_GET_ARG(port, VOBJ_TYPE_MWMR)
+#define SRL_GET_MWMR(port)      (srl_mwmr_t) APP_GET_ARG(port, VOBJ_TYPE_MWMR)
 #define SRL_GET_BARRIER(port)   APP_GET_ARG(port, VOBJ_TYPE_BARRIER)
 #define SRL_GET_LOCK(port)      APP_GET_ARG(port, VOBJ_TYPE_LOCK)
-#define SRL_GET_BUFFER(port)    APP_GET_ARG(port, VOBJ_TYPE_BUFFER)
+//#define SRL_GET_MEMSPACE(port)  APP_GET_ARG(port, VOBJ_TYPE_BUFFER) TODO
+#define SRL_GET_MEMSPACE        #error "SRL_GET_MEMSPACE is not implemented"//
 
 
-/* port, APP_NAME, TASK, #task_name, alias */
-# define SRL_GET_ARG(task_name, port, type)                                                         \
+# define SRL_GET_VBASE(task_name, port, type)                                                         \
 ({                                                                                                  \
-    srl_mwmr_t  _mwmr;                                                                              \
-    if( giet_vobj_get_vbase( APP_NAME , alias_##task_name.port, type, (unsigned int*)&_mwmr ) )     \
+    unsigned int  vbase;                                                                           \
+    if( giet_vobj_get_vbase( APP_NAME , alias_##task_name.port, type, &vbase ) )                    \
     {                                                                                               \
         srl_log_printf( NONE, "\n[ERROR] in "#task_name" task :\n");                                \
         srl_log_printf( NONE, "          undefined port <"#port"> for channel(%s): %d\n",           \
-                                                                alias_##task_name.port,_mwmr);      \
-        srl_log_printf( TRACE, "*** &"#port" = %x\n\n", (unsigned int)_mwmr );                      \
+                                                                alias_##task_name.port,vbase);      \
+        srl_log_printf( TRACE, "*** &"#port" = %x\n\n", vbase );                                    \
         srl_exit();                                                                                 \
     }else                                                                                           \
         srl_log_printf( TRACE, "%s:%d: arg of %s for %s,from %s; &"#port" = %x\n\n",                \
-                            __FILE__, __LINE__, APP_NAME, #task_name,#port, (unsigned int)_mwmr );  \
-    _mwmr;\
+                            __FILE__, __LINE__, APP_NAME, #task_name,#port, vbase );                \
+    vbase;\
 })
 
Index: /soft/giet_vm/libs/libsrl/srl_mwmr.h
===================================================================
--- /soft/giet_vm/libs/libsrl/srl_mwmr.h	(revision 212)
+++ /soft/giet_vm/libs/libsrl/srl_mwmr.h	(revision 213)
@@ -6,6 +6,6 @@
 typedef  mwmr_channel_t* srl_mwmr_t;
 
-#define srl_mwmr_write(a, b, c) mwmr_write(a, b, c)
-#define srl_mwmr_read(a, b, c) mwmr_read(a, b, c)  
+#define srl_mwmr_write(a, b, c) mwmr_write(a, (unsigned int*) b, (unsigned int)c)
+#define srl_mwmr_read(a, b, c) mwmr_read(a, (unsigned int*) b, (unsigned int)c)  
 
 
Index: /soft/giet_vm/sys/drivers.c
===================================================================
--- /soft/giet_vm/sys/drivers.c	(revision 212)
+++ /soft/giet_vm/sys/drivers.c	(revision 213)
@@ -715,15 +715,17 @@
 
 //+1: for the case where the NB_DMAS_MAX == 0
-in_unckdata unsigned int			_dma_lock[(NB_DMAS_MAX+1) * NB_CLUSTERS]
-                                       = { [0 ... ((NB_DMAS_MAX+1) * NB_CLUSTERS)-1] = 0 };
-
-in_unckdata volatile unsigned int	_dma_done[(NB_DMAS_MAX+1) * NB_CLUSTERS]
-                                       = { [0 ... ((NB_DMAS_MAX+1) * NB_CLUSTERS)-1] = 0 };
-
-in_unckdata volatile unsigned int	_dma_status[(NB_DMAS_MAX+1) * NB_CLUSTERS];
+#if NB_DMAS_MAX > 0
+in_unckdata unsigned int			_dma_lock[NB_DMAS_MAX * NB_CLUSTERS]
+                                       = { [0 ... ((NB_DMAS_MAX) * NB_CLUSTERS)-1] = 0 };
+
+in_unckdata volatile unsigned int	_dma_done[NB_DMAS_MAX * NB_CLUSTERS]
+                                       = { [0 ... (NB_DMAS_MAX * NB_CLUSTERS)-1] = 0 };
+
+in_unckdata volatile unsigned int	_dma_status[NB_DMAS_MAX * NB_CLUSTERS];
 
 in_unckdata unsigned int			_dma_iommu_ix1 = 1;
 
-in_unckdata unsigned int            _dma_iommu_npages[(NB_DMAS_MAX+1) * NB_CLUSTERS];
+in_unckdata unsigned int            _dma_iommu_npages[NB_DMAS_MAX * NB_CLUSTERS];
+#endif
 
 //////////////////////////////////////////////////////////////////////////////////
@@ -733,4 +735,5 @@
                              unsigned int	channel_id )
 {
+#if NB_DMAS_MAX > 0
     // parameters checking 
     if ( cluster_id >= NB_CLUSTERS ) return 1;
@@ -743,4 +746,7 @@
     dma_address[channel_id*DMA_SPAN + DMA_RESET] = 0;			
     return 0;
+#else
+    return -1;
+#endif
 }
 //////////////////////////////////////////////////////////////////////////////////
@@ -751,4 +757,5 @@
                               unsigned int* status )
 {
+#if NB_DMAS_MAX > 0
     // parameters checking 
     if ( cluster_id >= NB_CLUSTERS ) return 1;
@@ -761,4 +768,7 @@
     *status = dma_address[channel_id*DMA_SPAN + DMA_LEN];
     return 0;
+#else
+    return -1;
+#endif
 }
 
@@ -852,4 +862,5 @@
                              unsigned int   length )
 {
+#if NB_DMAS_MAX > 0
     unsigned int	ko;				// unsuccessfull V2P translation
     unsigned int	flags;			// protection flags
@@ -996,4 +1007,8 @@
     
     return 0;
+
+#else //NB_DMAS_MAX == 0
+    return -1;
+#endif
 }  
 //////////////////////////////////////////////////////////////////////////////////
@@ -1042,4 +1057,5 @@
 unsigned int _fb_completed()
 {
+#if NB_DMAS_MAX > 0
     unsigned int task_id = _get_current_task_id();
     unsigned int dma_id  = _get_context_slot( task_id, CTX_FBDMA_ID );
@@ -1079,4 +1095,10 @@
 
     return _dma_status[dma_id];
-}
-
+
+#else //NB_DMAS_MAX == 0
+
+    return -1;
+
+#endif
+}
+
Index: /soft/giet_vm/sys/irq_handler.c
===================================================================
--- /soft/giet_vm/sys/irq_handler.c	(revision 212)
+++ /soft/giet_vm/sys/irq_handler.c	(revision 213)
@@ -90,4 +90,5 @@
 void _isr_dma( unsigned int channel_id )
 {
+#if NB_DMAS_MAX > 0
     // compute cluster_id 
     unsigned int cluster_id = _procid()/NB_PROCS_MAX;
@@ -119,4 +120,8 @@
     // release DMA channel 
     _dma_done[dma_global_id] = 1;  
+#else
+    _puts("[GIET ERROR] NB_DMAS_MAX is set to zero\n");
+
+#endif
 }
 
