Index: trunk/tools/arch_info/boot_info.h
===================================================================
--- trunk/tools/arch_info/boot_info.h	(revision 690)
+++ trunk/tools/arch_info/boot_info.h	(revision 1)
@@ -2,5 +2,5 @@
  * boot_info.h - informations passed by the bootloader to the kernel in each cluster.
  *
- * Author  Alain Greiner (june 2016,2017,2018,2019,2020)
+ * Author  Alain Greiner (june 2016)
  *
  * Copyright (c) UPMC Sorbonne Universites
@@ -25,6 +25,6 @@
 #define _BOOT_INFO_H_
 
-#include <hal_kernel_types.h>
-#include <kernel_config.h>
+#include <hal_types.h>
+#include <almos_config.h>
 
 /*********************************************************************************************
@@ -32,5 +32,5 @@
  ********************************************************************************************/
 
-#define BOOT_INFO_SIGNATURE    0x12344321
+#define BOOT_INFO_SIGNATURE    0xBABEF00D
 
 /*********************************************************************************************
@@ -54,5 +54,5 @@
 typedef struct boot_irq_s 
 {
-    uint32_t    dev_type;             /*! source device functional type                     */
+    uint32_t    dev_type;             /*! source device functionnal type                    */
     uint8_t     channel;              /*! source device channel index                       */
     uint8_t     is_rx;                /*! source device direction                           */
@@ -65,11 +65,11 @@
  * This structure defines all informations associated to a device in a given cluster.
  * There is one device descriptor per peripheral channel.
- * The base address can be physical or virtual depending on the hardware architecture.
  ********************************************************************************************/
 
 typedef struct boot_device_s
 {
-    uint64_t    base;                 /*! segment base address                              */
     uint32_t    type;                 /*! peripheral type (func | impl)                     */
+    xptr_t      base;                 /*! segment global base address                       */
+    uint64_t    size;                 /*! channel size (bytes)                              */
     uint32_t    channels;             /*! number of channels                                */
     uint32_t    param0;               /*! semantic depends on peripherat type               */
@@ -77,21 +77,8 @@
     uint32_t    param2;               /*! semantic depends on peripherat type               */
     uint32_t    param3;               /*! semantic depends on peripherat type               */
-    uint32_t    irqs;                 /*! number of input IRQs (PIC only)                   */
-    boot_irq_t  irq[32];              /*! array of input IRQS (PIC only)                    */
+    uint32_t    irqs;                 /*! number of input IRQs                              */
+    boot_irq_t  irq[32];              /*! array of input IRQS (PIC and ICU only)            */
 }
 boot_device_t;
-
-/*********************************************************************************************
- * This structure defines a reserved zone in the physical address space of a given cluster.
- * A reserved zone is described as a set of contiguous small pages (4 Kbytes) covering the
- * reserved zone, that must be considered already allocated.
- ********************************************************************************************/
-
-typedef struct boot_rsvd_s
-{
-    ppn_t      first_page;            /*! first physical page index in cluster              */ 
-    uint32_t   npages;                /*! number of small pages                             */
-}
-boot_rsvd_t;
 
 /*********************************************************************************************
@@ -103,45 +90,31 @@
 typedef struct boot_info_s
 {
-    uint32_t      signature;                     /*! boot info signature                    */
+    uint32_t      signature;         /*! boot info signature                                */
 
     // global platform parameters
 
-    uint32_t      paddr_width;                   /*! number of bits in physical address     */
-    uint32_t      x_width;                       /*! number of bits to code X coordinate    */
-    uint32_t      y_width;                       /*! number of bits to code Y coordinate    */
-    uint32_t      x_size;                        /*! number of cluster in a row             */
-    uint32_t      y_size;                        /*! number of cluster in a column          */
-    uint32_t      io_cxy;                        /*! IO cluster identifier                  */
-    uint32_t      sys_clk;                       /*! system frequency (in Hertz)            */
+	uint32_t      paddr_width;        /*! number of bits in physical address                */
+    uint32_t      x_width;            /*! number of bits to code X coordinate               */
+    uint32_t      y_width;            /*! number of bits to code Y coordinate               */
+	uint32_t      x_size;             /*! number of cluster in a row                        */
+	uint32_t      y_size;             /*! number of cluster in a column                     */
+	uint32_t      io_cxy;             /*! IO cluster identifier                             */
 
-    uint8_t       cluster_info[CONFIG_MAX_CLUSTERS_X][CONFIG_MAX_CLUSTERS_Y]; 
+    // specific cluster parameters
 
-    // shared resources
-
-    uint32_t      ext_dev_nr;                    /*! number of external peripherals         */
-    boot_device_t ext_dev[CONFIG_MAX_EXT_DEV];   /*! array of external peripherals          */
-
-    // private resources (per cluster)
-
-    uint32_t      cxy;                           /*! cluster identifier                     */
-    uint32_t      cores_nr;                      /*! number of local cores in               */
-    boot_core_t   core[CONFIG_MAX_LOCAL_CORES];  /*! array of core descriptors              */
-    uint32_t      rsvd_nr;                       /*! number of reserved zones               */
-    boot_rsvd_t   rsvd[CONFIG_PPM_MAX_RSVD];     /*! array of reserved zones                */
-
-    uint32_t      int_dev_nr;                    /*! number of internal peripherals         */
-    boot_device_t int_dev[CONFIG_MAX_INT_DEV];   /*! array of internal peripherals          */
-
-    uint32_t      pages_offset;                  /*! first free page index (after kernel)   */
-    uint32_t      pages_nr;                      /*! total number of physical pages in RAM  */
+	uint32_t      cxy;                /*! current cluster identifier                        */
+	uint32_t      cores_nr;           /*! number of cores in current cluster                */
+    boot_core_t   core[CONFIG_MAX_CORES_PER_CLUSTER];   /* array of core descriptors        */  
+	uint32_t      devices_nr;         /*! number of peripherals in current cluster          */
+    boot_device_t dev[CONFIG_MAX_DEVICES_PER_CLUSTER];  /* array of device descriptors      */
+    uint32_t      pages_nr;           /*! total number of 4 Kbytes pages in cluster         */
+    uint32_t      pages_offset;       /*! number of pages already allocated for kernel      */
 
     // kernel segments
 
-    intptr_t      kcode_base;                    /*! kernel code base paddr                 */
-    intptr_t      kcode_size;                    /*! kernel code size                       */
-    intptr_t      kdata_base;                    /*! kernel data base paddr                 */
-    intptr_t      kdata_size;                    /*! kernel data size                       */
-    intptr_t      kentry_base;                   /*! kernel entry base paddr                */
-    intptr_t      kentry_size;                   /*! kernel entry size                      */
+    intptr_t      kernel_code_start;  /*! kernel code base address                          */
+    intptr_t      kernel_code_end;    /*! kernel code last address (excluded)               */
+    intptr_t      kernel_data_start;  /*! kernel data base address                          */
+    intptr_t      kernel_data_end;    /*! kernel data last address (excluded)               */
 }
 boot_info_t;
