Index: trunk/kernel/kern/kernel_init.c
===================================================================
--- trunk/kernel/kern/kernel_init.c	(revision 443)
+++ trunk/kernel/kern/kernel_init.c	(revision 457)
@@ -25,5 +25,5 @@
 #include <kernel_config.h>
 #include <errno.h>
-#include <hal_types.h>
+#include <hal_kernel_types.h>
 #include <hal_special.h>
 #include <hal_context.h>
@@ -186,6 +186,6 @@
            "    /_/        \\_\\ |______| |_|    |_|   \\_____/  |______/        |_|    |_|  |_|  \\_\\ |_|   |_|  \n"
            "\n\n\t\t Advanced Locality Management Operating System / Multi Kernel Hybrid\n"
-           "\n\n\t\t Version 0.0 / %d cluster(s) / %d core(s) per cluster / cycle %d\n\n",
-           nclusters , ncores , hal_time_stamp() );
+           "\n\n\t\t %s / %d cluster(s) / %d core(s) per cluster\n\n",
+           CONFIG_ALMOS_VERSION , nclusters , ncores );
 }
 
@@ -761,9 +761,4 @@
     reg_t        status;                    // running core status register
 
-    cxy_t        io_cxy = info->io_cxy;
-
-    assert( (io_cxy == ((info->x_size - 1)<<(info->y_width)) + (info->y_size - 1)) ,
-    __FUNCTION__ , "illegal IO cluter identifier\n" );
-
     /////////////////////////////////////////////////////////////////////////////////
     // STEP 0 : Each core get its core identifier from boot_info, and makes 
@@ -796,9 +791,9 @@
     thread->remote_locks = 0;
 
-    // CP0 in I/O cluster initialises TXT0 chdev descriptor
-    if( (core_lid == 0) && (core_cxy == io_cxy) ) txt0_device_init( info );
-
-    /////////////////////////////////////////////////////////////////////////////////
-    if( core_lid == 0 ) remote_barrier( XPTR( io_cxy , &global_barrier ), 
+    // CP0 in cluster 0 initialises TXT0 chdev descriptor
+    if( (core_lid == 0) && (core_cxy == 0) ) txt0_device_init( info );
+
+    /////////////////////////////////////////////////////////////////////////////////
+    if( core_lid == 0 ) remote_barrier( XPTR( 0 , &global_barrier ), 
                                         (info->x_size * info->y_size) );
     barrier_wait( &local_barrier , info->cores_nr );
@@ -838,5 +833,5 @@
 
     /////////////////////////////////////////////////////////////////////////////////
-    if( core_lid == 0 ) remote_barrier( XPTR( io_cxy , &global_barrier ), 
+    if( core_lid == 0 ) remote_barrier( XPTR( 0 , &global_barrier ), 
                                         (info->x_size * info->y_size) );
     barrier_wait( &local_barrier , info->cores_nr );
@@ -865,5 +860,5 @@
     
     ////////////////////////////////////////////////////////////////////////////////
-    if( core_lid == 0 ) remote_barrier( XPTR( io_cxy , &global_barrier ), 
+    if( core_lid == 0 ) remote_barrier( XPTR( 0 , &global_barrier ), 
                                         (info->x_size * info->y_size) );
     barrier_wait( &local_barrier , info->cores_nr );
@@ -898,5 +893,5 @@
 
     /////////////////////////////////////////////////////////////////////////////////
-    if( core_lid == 0 ) remote_barrier( XPTR( io_cxy , &global_barrier ), 
+    if( core_lid == 0 ) remote_barrier( XPTR( 0 , &global_barrier ), 
                                         (info->x_size * info->y_size) );
     barrier_wait( &local_barrier , info->cores_nr );
@@ -926,14 +921,9 @@
 
     // all cores initialize the idle thread descriptor
-    error = thread_idle_init( thread,
-                              THREAD_IDLE,
-                              &thread_idle_func,
-                              NULL,
-                              core_lid );
-    if( error )
-    {
-        assert( false , __FUNCTION__ ,
-        "core[%x][%d] cannot initialize idle thread", local_cxy , core_lid );
-    }
+    thread_idle_init( thread,
+                      THREAD_IDLE,
+                      &thread_idle_func,
+                      NULL,
+                      core_lid );
 
     // all cores unblock idle thread, and register it in scheduler
@@ -1008,5 +998,5 @@
 
     /////////////////////////////////////////////////////////////////////////////////
-    if( core_lid == 0 ) remote_barrier( XPTR( io_cxy , &global_barrier ), 
+    if( core_lid == 0 ) remote_barrier( XPTR( 0 , &global_barrier ), 
                                         (info->x_size * info->y_size) );
     barrier_wait( &local_barrier , info->cores_nr );
@@ -1069,5 +1059,5 @@
 
     /////////////////////////////////////////////////////////////////////////////////
-    if( core_lid == 0 ) remote_barrier( XPTR( io_cxy , &global_barrier ), 
+    if( core_lid == 0 ) remote_barrier( XPTR( 0 , &global_barrier ), 
                                         (info->x_size * info->y_size) );
     barrier_wait( &local_barrier , info->cores_nr );
@@ -1076,6 +1066,6 @@
 #if DEBUG_KERNEL_INIT
 if( (core_lid ==  0) & (local_cxy == 0) ) 
-printk("\n[DBG] %s : exit barrier 5 : VFS_root = %l in cluster %x / cycle %d\n",
-__FUNCTION__, vfs_root_inode_xp , io_cxy , (uint32_t)hal_get_cycles());
+printk("\n[DBG] %s : exit barrier 5 : VFS_root = %l in cluster 0 / cycle %d\n",
+__FUNCTION__, vfs_root_inode_xp , (uint32_t)hal_get_cycles());
 #endif
 
@@ -1086,5 +1076,5 @@
     /////////////////////////////////////////////////////////////////////////////////
 
-    if( (core_lid ==  0) && (local_cxy == io_cxy) ) 
+    if( (core_lid ==  0) && (local_cxy == 0) ) 
     {
         // create "dev" and "external" directories.
@@ -1104,5 +1094,5 @@
 
     /////////////////////////////////////////////////////////////////////////////////
-    if( core_lid == 0 ) remote_barrier( XPTR( io_cxy , &global_barrier ), 
+    if( core_lid == 0 ) remote_barrier( XPTR( 0 , &global_barrier ), 
                                         (info->x_size * info->y_size) );
     barrier_wait( &local_barrier , info->cores_nr );
@@ -1111,6 +1101,6 @@
 #if DEBUG_KERNEL_INIT
 if( (core_lid ==  0) & (local_cxy == 0) ) 
-printk("\n[DBG] %s : exit barrier 6 : dev_root = %l in cluster %x / cycle %d\n",
-__FUNCTION__, devfs_dev_inode_xp , io_cxy , (uint32_t)hal_get_cycles() );
+printk("\n[DBG] %s : exit barrier 6 : dev_root = %l in cluster 0 / cycle %d\n",
+__FUNCTION__, devfs_dev_inode_xp , (uint32_t)hal_get_cycles() );
 #endif
 
@@ -1125,14 +1115,12 @@
     if( core_lid == 0 )
     {
-        // get extended pointer on "extend" field of VFS context for DEVFS in cluster IO
-        xptr_t  extend_xp = XPTR( io_cxy , &fs_context[FS_TYPE_DEVFS].extend );
-
-        // get pointer on DEVFS context in cluster IO
+        // get extended pointer on "extend" field of VFS context for DEVFS in cluster 0
+        xptr_t  extend_xp = XPTR( 0 , &fs_context[FS_TYPE_DEVFS].extend );
+
+        // get pointer on DEVFS context in cluster 0
         devfs_ctx_t * devfs_ctx = hal_remote_lpt( extend_xp );
         
-        devfs_dev_inode_xp      = hal_remote_lwd( XPTR( io_cxy ,
-                                                        &devfs_ctx->dev_inode_xp ) );
-        devfs_external_inode_xp = hal_remote_lwd( XPTR( io_cxy , 
-                                                        &devfs_ctx->external_inode_xp ) );
+        devfs_dev_inode_xp      = hal_remote_lwd( XPTR( 0 , &devfs_ctx->dev_inode_xp ) );
+        devfs_external_inode_xp = hal_remote_lwd( XPTR( 0 , &devfs_ctx->external_inode_xp ) );
 
         // populate DEVFS in all clusters
@@ -1143,5 +1131,5 @@
 
     /////////////////////////////////////////////////////////////////////////////////
-    if( core_lid == 0 ) remote_barrier( XPTR( io_cxy , &global_barrier ), 
+    if( core_lid == 0 ) remote_barrier( XPTR( 0 , &global_barrier ), 
                                         (info->x_size * info->y_size) );
     barrier_wait( &local_barrier , info->cores_nr );
@@ -1158,5 +1146,5 @@
     /////////////////////////////////////////////////////////////////////////////////
 
-    if( (core_lid ==  0) && (local_cxy == 0) ) 
+    if( (core_lid == 0) && (local_cxy == 0) ) 
     {
 
@@ -1169,5 +1157,5 @@
 
     /////////////////////////////////////////////////////////////////////////////////
-    if( core_lid == 0 ) remote_barrier( XPTR( io_cxy , &global_barrier ),
+    if( core_lid == 0 ) remote_barrier( XPTR( 0 , &global_barrier ),
                                         (info->x_size * info->y_size) );
     barrier_wait( &local_barrier , info->cores_nr );
@@ -1189,5 +1177,5 @@
     /////////////////////////////////////////////////////////////////////////////////
     
-    if( (core_lid ==  0) && (local_cxy == io_cxy) ) 
+    if( (core_lid == 0) && (local_cxy == 0) ) 
     {
         print_banner( (info->x_size * info->y_size) , info->cores_nr );
