Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Parameters.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Parameters.h	(revision 88)
@@ -36,6 +36,6 @@
   public : uint32_t   _size_counter          ;
 
-  public : uint32_t   _size_general_register ;
-  public : uint32_t   _size_special_register ;
+//public : uint32_t   _size_general_register ;
+//public : uint32_t   _size_special_register ;
 		      
   public : uint32_t   _max_reader            ;
@@ -63,8 +63,12 @@
 			uint32_t   nb_reg_free           ,
 			uint32_t   nb_bank               ,
-			uint32_t   size_counter          );
+			uint32_t   size_counter          ,
+                        bool       is_toplevel=false
+                        );
 
 //   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
+
+  public :        void            copy       (void);
 
   public :        Parameters_test msg_error  (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h	(revision 88)
@@ -1,3 +1,3 @@
-#ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_stat_list_unit_Stat_List_unit_h
+ #ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_stat_list_unit_Stat_List_unit_h
 #define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_stat_list_unit_Stat_List_unit_h
 
@@ -86,7 +86,9 @@
   public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RC_PHY    ;//[nb_inst_retire]
   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RD          ;//[nb_inst_retire]
+  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
   public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_OLD;//[nb_inst_retire]
   public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_NEW;//[nb_inst_retire]
   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RE          ;//[nb_inst_retire]
+  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
   public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_OLD;//[nb_inst_retire]
   public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_NEW;//[nb_inst_retire]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h	(revision 88)
@@ -23,8 +23,8 @@
   class stat_list_entry_t
   {
-  private : bool     _is_free ; // set = is present in free list
-  private : bool     _is_link ; // set = is present in rat
-  private : bool     _is_valid; // set = an instruction have write in this register
-  private : uint32_t _counter ; // number of register that must read this register
+  public : bool     _is_free ; // set = is present in free list
+  public : bool     _is_link ; // set = is present in rat
+  public : bool     _is_valid; // set = an instruction have write in this register
+  public : uint32_t _counter ; // number of register that must read this register
 
   public :  stat_list_entry_t (void) {};
@@ -55,11 +55,21 @@
     }
 
-  public : void retire_write_old (void)
+  public : void retire_write_old (bool restore_old)
     {
-      _is_link  = 0;
+      if (not restore_old)
+        {
+          _is_link  = 0;
+        }
+      // else nothing
     }
 
-  public : void retire_write_new (void)
+  public : void retire_write_new (bool restore_old)
     {
+      if (restore_old)
+        {
+          _is_link  = 0;
+        }
+
+      // in all case
       _is_valid = 1;
     }
@@ -79,17 +89,17 @@
       return ((_is_free  == 0) and
 	      (_is_link  == 0) and
-	      (_is_valid == 1) and
+// 	      (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset
 	      (_counter  == 0));
     }
 
-  public : friend std::ostream& operator<< (std::ostream& output_stream,
+  public : friend std::ostream& operator<< (std::ostream& output,
 					    stat_list_entry_t & x)
     {
-      output_stream << x._is_free  << " "
-		    << x._is_link  << " "
-		    << x._is_valid << " "
-		    << x._counter;
+      output << x._is_free  << " "
+             << x._is_link  << " "
+             << x._is_valid << " "
+             << x._counter;
       
-      return output_stream;
+      return output;
     }
 
