Index: trunk/hal/tsar_mips32/core/hal_context.c
===================================================================
--- trunk/hal/tsar_mips32/core/hal_context.c	(revision 640)
+++ trunk/hal/tsar_mips32/core/hal_context.c	(revision 647)
@@ -221,5 +221,5 @@
 
     // get base and ppn of remote child process GPT PT1
-    child_gpt_ptr = hal_remote_l32( XPTR(child_cxy , &child_process->vmm.gpt.ptr) );
+    child_gpt_ptr = hal_remote_lpt( XPTR(child_cxy , &child_process->vmm.gpt.ptr) );
     child_gpt_ppn = ppm_base2ppn( XPTR( child_cxy , child_gpt_ptr ) );    
 
Index: trunk/hal/tsar_mips32/core/hal_drivers.c
===================================================================
--- trunk/hal/tsar_mips32/core/hal_drivers.c	(revision 640)
+++ trunk/hal/tsar_mips32/core/hal_drivers.c	(revision 647)
@@ -34,4 +34,5 @@
 #include <soclib_nic.h>
 #include <soclib_dma.h>
+#include <soclib_fbf.h>
 
 #include <dev_txt.h>
@@ -46,8 +47,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
-//////////////////////////////////////////
-void hal_drivers_txt_init( chdev_t  * txt,
-                           uint32_t   impl )
+///////////////////////////////////////////
+void hal_drivers_txt_init( chdev_t  * txt )
 {
+    uint32_t   impl = txt->impl;
+
     if( impl ==  IMPL_TXT_TTY )
     {
@@ -68,8 +70,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
-//////////////////////////////////////////
-void hal_drivers_pic_init( chdev_t  * pic,
-                           uint32_t   impl )
+///////////////////////////////////////////
+void hal_drivers_pic_init( chdev_t  * pic )
 {
+    uint32_t   impl = pic->impl;
+
     assert( (impl == IMPL_PIC_SCL), "undefined implementation" );
 
@@ -91,8 +94,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
-//////////////////////////////////////////
-void hal_drivers_iob_init( chdev_t  * iob,
-                           uint32_t   impl )
+///////////////////////////////////////////
+void hal_drivers_iob_init( chdev_t  * iob )
 {
+    uint32_t   impl = iob->impl;
+
 	assert( (impl == IMPL_IOB_TSR), "undefined implementation" );
 
@@ -112,8 +116,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
-//////////////////////////////////////////
-void hal_drivers_ioc_init( chdev_t  * ioc,
-                           uint32_t   impl )
+///////////////////////////////////////////
+void hal_drivers_ioc_init( chdev_t  * ioc )
 {
+    uint32_t   impl = ioc->impl;
+
 	if (impl == IMPL_IOC_BDV) 
     {
@@ -138,8 +143,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
-//////////////////////////////////////////
-void hal_drivers_mmc_init( chdev_t  * mmc,
-                           uint32_t   impl )
+///////////////////////////////////////////
+void hal_drivers_mmc_init( chdev_t  * mmc )
 {
+    uint32_t   impl = mmc->impl;
+
 	assert( (impl == IMPL_MMC_TSR), "undefined implementation" );
  
@@ -151,8 +157,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
-//////////////////////////////////////////
-void hal_drivers_nic_init( chdev_t  * nic,
-                           uint32_t   impl )
+///////////////////////////////////////////
+void hal_drivers_nic_init( chdev_t  * nic )
 {
+    uint32_t   impl = nic->impl;
+
 	assert( (impl == IMPL_NIC_CBF), "undefined implementation" );
  
@@ -164,8 +171,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
-//////////////////////////////////////////
-void hal_drivers_dma_init( chdev_t  * dma,
-                           uint32_t   impl )
+///////////////////////////////////////////
+void hal_drivers_dma_init( chdev_t  * dma )
 {
+    uint32_t   impl = dma->impl;
+
 	assert( (impl == IMPL_DMA_SCL), "undefined implementation" );
  
@@ -173,2 +181,16 @@
 }
 
+///////////////////////////////////////////////////////////////////////////////
+//    FBF
+///////////////////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////
+void hal_drivers_fbf_init( chdev_t  * fbf )
+{
+    uint32_t   impl = fbf->impl;
+
+	assert( (impl == IMPL_FBF_SCL), "undefined implementation" );
+ 
+    soclib_fbf_init( fbf );
+}
+
Index: trunk/hal/tsar_mips32/core/hal_gpt.c
===================================================================
--- trunk/hal/tsar_mips32/core/hal_gpt.c	(revision 640)
+++ trunk/hal/tsar_mips32/core/hal_gpt.c	(revision 647)
@@ -24,4 +24,5 @@
 #include <hal_kernel_types.h>
 #include <hal_gpt.h>
+#include <hal_vmm.h>
 #include <hal_special.h>
 #include <hal_irqmask.h>
@@ -291,5 +292,5 @@
 uint32_t   cycle = (uint32_t)hal_get_cycles();
 // if( DEBUG_HAL_GPT_LOCK_PTE < cycle )
-if( (vpn == 0x3600) && (gpt_cxy == 0x11) )
+if( (vpn == 0xc1fff) && (gpt_cxy == 0x1) )
 printk("\n[%s] thread[%x,%x] enters / vpn %x in cluster %x / cycle %d\n", 
 __FUNCTION__, this->process->pid, this->trdid, vpn, gpt_cxy, cycle );
@@ -360,5 +361,5 @@
 #if DEBUG_HAL_GPT_LOCK_PTE
 // if( DEBUG_HAL_GPT_LOCK_PTE < cycle )
-if( (vpn == 0x3600) && (gpt_cxy == 0x11) )
+if( (vpn == 0xc1fff) && (gpt_cxy == 0x1) )
 printk("\n[%s] PTE1 unmapped : winner thread[%x,%x] allocates a PT2 for vpn %x in cluster %x\n", 
 __FUNCTION__, this->process->pid, this->trdid, vpn, gpt_cxy );
@@ -371,5 +372,5 @@
 #if DEBUG_HAL_GPT_LOCK_PTE
 // if( DEBUG_HAL_GPT_LOCK_PTE < cycle )
-if( (vpn == 0x3600) && (gpt_cxy == 0x11) )
+if( (vpn == 0xc1fff) && (gpt_cxy == 0x1) )
 printk("\n[%s] PTE1 unmapped : loser thread[%x,%x] wait PTE1 for vpn %x in cluster %x\n", 
 __FUNCTION__, this->process->pid, this->trdid, vpn, gpt_cxy );
@@ -412,5 +413,5 @@
 #if DEBUG_HAL_GPT_LOCK_PTE
 // if( DEBUG_HAL_GPT_LOCK_PTE < cycle )
-if( (vpn == 0x3600) && (gpt_cxy == 0x11) )
+if( (vpn == 0xc1fff) && (gpt_cxy == 0x1) )
 printk("\n[%s] PTE1 unmapped : loser thread[%x,%x] get PTE1 for vpn %x in cluster %x\n", 
 __FUNCTION__, this->process->pid, this->trdid, vpn, gpt_cxy );
@@ -426,5 +427,5 @@
 #if DEBUG_HAL_GPT_LOCK_PTE 
 // if( DEBUG_HAL_GPT_LOCK_PTE < cycle )
-if( (vpn == 0x3600) && (gpt_cxy == 0x11) )
+if( (vpn == 0xc1fff) && (gpt_cxy == 0x1) )
 printk("\n[%s] thread[%x,%x] get pte1 %x for vpn %x in cluster %x\n", 
 __FUNCTION__, this->process->pid, this->trdid, pte1, vpn, gpt_cxy );
@@ -494,5 +495,5 @@
 cycle = (uint32_t)hal_get_cycles();
 // if( DEBUG_HAL_GPT_LOCK_PTE < cycle )
-if( (vpn == 0x3600) && (gpt_cxy == 0x11) )
+if( (vpn == 0xc1fff) && (gpt_cxy == 0x1) )
 printk("\n[%s] thread[%x,%x] success / vpn %x in cluster %x / attr %x / ppn %x / cycle %d\n", 
 __FUNCTION__, this->process->pid, this->trdid, vpn, gpt_cxy, pte2_attr, pte2_ppn, cycle );
Index: trunk/hal/tsar_mips32/core/hal_remote.c
===================================================================
--- trunk/hal/tsar_mips32/core/hal_remote.c	(revision 640)
+++ trunk/hal/tsar_mips32/core/hal_remote.c	(revision 647)
@@ -220,8 +220,8 @@
         "mtc2   %4,     $24          \n"  /* PADDR_EXT <= cxy   */   
         "or     $8,     $0,    %3    \n"  /* $8 <= new          */
-        "ll     $3,    0(%1)         \n"  /* $3 <= *paddr       */
+        "ll     $3,    0(%1)         \n"  /* $3 <= *ptr         */
         "bne    $3,     %2,    1f    \n"  /* if ($3 != old)     */
         "li     $7,     0            \n"  /* $7 <= 0            */
-        "sc     $8,     (%1)         \n"  /* *paddr <= new      */
+        "sc     $8,     (%1)         \n"  /* *ptr <= new        */
         "or     $7,     $8,    $0    \n"  /* $7 <= atomic       */
         "sync                        \n"
Index: trunk/hal/tsar_mips32/core/hal_uspace.c
===================================================================
--- trunk/hal/tsar_mips32/core/hal_uspace.c	(revision 640)
+++ trunk/hal/tsar_mips32/core/hal_uspace.c	(revision 647)
@@ -142,5 +142,5 @@
 // If the two buffers are aligned on a word boundary, it moves the data word per word
 // in a first loop, and moves byte per byte the remaining bytes in a second loop.
-// If the buffers are not aligned, it moves all data byte per byte.
+// If the buffers are not word aligned, it moves all data byte per byte.
 ///////////////////////////////////////////////////////////////////////////////////////
 // @ u_dst_ptr : pointer on destination user buffer
