Index: /soft/giet_vm/giet_kernel/ctx_handler.h
===================================================================
--- /soft/giet_vm/giet_kernel/ctx_handler.h	(revision 395)
+++ /soft/giet_vm/giet_kernel/ctx_handler.h	(revision 396)
@@ -79,5 +79,4 @@
 
 #define IDLE_TASK_INDEX        13
-#define IDLE_TASK_STACK        0x1000
 
 /////////////////////////////////////////////////////////////////////////////////
Index: /soft/giet_vm/giet_kernel/kernel_init.c
===================================================================
--- /soft/giet_vm/giet_kernel/kernel_init.c	(revision 395)
+++ /soft/giet_vm/giet_kernel/kernel_init.c	(revision 396)
@@ -103,8 +103,4 @@
 #endif
 
-#if !defined(IDLE_TASK_STACK) 
-# error: You must define IDLE_TASK_STACK in the ctx_handler.h file
-#endif
-
 #if !defined(GIET_TICK_VALUE) 
 # error: You must define GIET_TICK_VALUE in the giet_config.h file
Index: /soft/giet_vm/giet_kernel/sys_handler.c
===================================================================
--- /soft/giet_vm/giet_kernel/sys_handler.c	(revision 395)
+++ /soft/giet_vm/giet_kernel/sys_handler.c	(revision 396)
@@ -20,4 +20,5 @@
 #include <fat32.h>
 #include <utils.h>
+#include <vmem.h>
 #include <hard_config.h>
 #include <giet_config.h>
@@ -62,5 +63,5 @@
     &_context_switch,      /* 0x19 */
     &_vobj_get_vbase,      /* 0x1A */
-    &_sys_ukn,             /* 0x1B */
+    &_get_xy_from_ptr,     /* 0x1B */
     &_nic_cma_start,       /* 0x1C */
     &_nic_cma_stop,        /* 0x1D */
@@ -257,4 +258,35 @@
 }
 
+/////////////////////////////////////////////////////////////////////////////
+// This function returns in the (x,y) arguments the coordinates of the 
+// where is mapped the ptr virtual address. It use the _get_context_slot()
+// function to get the calling task page table, and uses the _v2p_translate()
+// function to obtain the physical address. 
+// returns 0 if success, > 0 if ptr not mapped in the calling task vspace.
+/////////////////////////////////////////////////////////////////////////////
+
+unsigned int _get_xy_from_ptr( void*         ptr,
+                               unsigned int* px,
+                               unsigned int* py )
+{
+    unsigned int ret;
+    unsigned int ppn;
+    unsigned int flags;
+    unsigned int vpn  = (((unsigned int)ptr)>>12);
+    
+    // get the page table pointer
+    page_table_t* pt = (page_table_t*)_get_context_slot( CTX_PTAB_ID ); 
+
+    // compute the physical address
+    if ( (ret = _v2p_translate( pt, vpn, &ppn, &flags )) )
+    {
+        return ret;
+    }
+
+    *px = (ppn>>24) & 0xF;
+    *py = (ppn>>20) & 0xF;
+    return 0;
+}
+
 ////////////////////////////////////////////////////////////////////////////
 // This sysrem function deschedule the requestint task.
Index: /soft/giet_vm/giet_kernel/sys_handler.h
===================================================================
--- /soft/giet_vm/giet_kernel/sys_handler.h	(revision 395)
+++ /soft/giet_vm/giet_kernel/sys_handler.h	(revision 396)
@@ -42,4 +42,9 @@
                                unsigned int* vobj_length );
 
+unsigned int _get_xy_from_ptr( void*          ptr,
+                               unsigned int*  x,
+                               unsigned int*  y );
+
+
 #endif
 
