Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h	(revision 134)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h	(revision 136)
@@ -104,4 +104,5 @@
   public    : SC_IN (Toperation_t      )   **  in_MEMORY_IN_OPERATION            ;//[nb_inst_memory]
   public    : SC_IN (Ttype_t           )   **  in_MEMORY_IN_TYPE                 ;//[nb_inst_memory]
+  public    : SC_IN (Tcontrol_t        )   **  in_MEMORY_IN_CANCEL               ;//[nb_inst_memory]
   public    : SC_IN (Tlsq_ptr_t        )   **  in_MEMORY_IN_STORE_QUEUE_PTR_WRITE;//[nb_inst_memory]
   public    : SC_IN (Tlsq_ptr_t        )   **  in_MEMORY_IN_STORE_QUEUE_PTR_READ ;//[nb_inst_memory]
@@ -127,4 +128,5 @@
 //public    : SC_OUT(Toperation_t      )   ** out_MEMORY_OUT_OPERATION           ;//[nb_inst_memory]
 //public    : SC_OUT(Ttype_t           )   ** out_MEMORY_OUT_TYPE                ;//[nb_inst_memory]
+  public    : SC_OUT(Tcontrol_t        )   ** out_MEMORY_OUT_CANCEL              ;//[nb_inst_memory]
   public    : SC_OUT(Tcontrol_t        )   ** out_MEMORY_OUT_WRITE_RD            ;//[nb_inst_memory] // = (operation==load)
   public    : SC_OUT(Tgeneral_address_t)   ** out_MEMORY_OUT_NUM_REG_RD          ;//[nb_inst_memory] // destination (load)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h	(revision 134)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h	(revision 136)
@@ -67,4 +67,5 @@
   public    : Tpacket_t            _packet_id           ;
   public    : Toperation_t         _operation           ;
+  public    : Tcontrol_t           _cancel              ;
   public    : Tlsq_ptr_t           _load_queue_ptr_write;
   public    : Tdcache_address_t    _address             ;
@@ -80,5 +81,5 @@
 		<< "   * packet                            : " << toString(x._packet_id) << std::endl
 		<< "   * context, front_end, ooo_engine_id : " << toString(x._context_id) << " - " << toString(x._front_end_id) << " - " << toString(x._ooo_engine_id) << std::endl
-		<< "   * operation                         : " << toString(x._operation) << std::endl
+		<< "   * operation, cancel                 : " << toString(x._operation) << " - " << toString(x._cancel) << std::endl
 		<< "   * load_ptr                          : " << toString(x._load_queue_ptr_write) << std::endl
 		<< "   * exception                         : " << toString(x._exception) << std::endl
@@ -111,4 +112,5 @@
   public    : Tpacket_t                          _packet_id            ;
   public    : Toperation_t                       _operation            ;
+  public    : Tcontrol_t                         _cancel               ;
   public    : Tlsq_ptr_t                         _load_queue_ptr_write ;
   public    : Tlsq_ptr_t                         _store_queue_ptr_write;
@@ -125,5 +127,5 @@
 		<< "   * packet                            : " << toString(x._packet_id) << std::endl
 		<< "   * context, front_end, ooo_engine_id : " << toString(x._context_id) << " - " << toString(x._front_end_id) << " - " << toString(x._ooo_engine_id) << std::endl
-		<< "   * operation                         : " << toString(x._operation) << std::endl
+		<< "   * operation, cancel                 : " << toString(x._operation) << " - " << toString(x._cancel) << std::endl
 		<< "   * load, store ptr_(write/read) empty: " << toString(x._load_queue_ptr_write) << " - " << toString(x._store_queue_ptr_write) << " - " << toString(x._store_queue_ptr_read) << " - " << toString(x._store_queue_empty) << std::endl
 		<< "   * exception                         : " << toString(x._exception) << std::endl
@@ -168,4 +170,5 @@
   public    : Tpacket_t            _packet_id        ;
   public    : Toperation_t         _operation        ;
+  public    : Tcontrol_t           _cancel           ;
   public    : Tlsq_ptr_t           _store_queue_ptr_write;
   public    : Tlsq_ptr_t           _store_queue_ptr_read ;
@@ -187,5 +190,5 @@
 		<< "   * packet                            : " << toString(x._packet_id) << std::endl
 		<< "   * context, front_end, ooo_engine_id : " << toString(x._context_id) << " - " << toString(x._front_end_id) << " - " << toString(x._ooo_engine_id) << std::endl
-		<< "   * operation                         : " << toString(x._operation) << std::endl
+		<< "   * operation, cancel                 : " << toString(x._operation) << " - " << toString(x._cancel) << std::endl
 		<< "   * store_queue ptr_(write,read) empty: " << toString(x._store_queue_ptr_write) << " - " << toString(x._store_queue_ptr_read) << " - " << toString(x._store_queue_empty) <<std::endl
 		<< "   * exception                         : " << toString(x._exception) << std::endl
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp	(revision 134)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp	(revision 136)
@@ -65,4 +65,5 @@
       ALLOC1_SIGNAL_IN ( in_MEMORY_IN_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation            );
       ALLOC1_SIGNAL_IN ( in_MEMORY_IN_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type                 );
+      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_CANCEL               ,"cancel"               ,Tcontrol_t        ,1                                  );
       ALLOC1_SIGNAL_IN ( in_MEMORY_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr      );
       ALLOC1_SIGNAL_IN ( in_MEMORY_IN_STORE_QUEUE_PTR_READ ,"store_queue_ptr_read" ,Tlsq_ptr_t        ,_param->_size_store_queue_ptr      );
@@ -94,4 +95,5 @@
 //    ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_OPERATION    ,"operation"     ,Toperation_t      ,_param->_size_operation        );
 //    ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_TYPE         ,"type"          ,Ttype_t           ,_param->_size_type             );
+      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_CANCEL       ,"cancel"        ,Tcontrol_t        ,1                              );
       ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_WRITE_RD     ,"write_rd"      ,Tcontrol_t        ,1                              );
       ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_NUM_REG_RD   ,"num_reg_rd"    ,Tgeneral_address_t,_param->_size_general_register );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp	(revision 134)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp	(revision 136)
@@ -44,4 +44,5 @@
     DELETE1_SIGNAL( in_MEMORY_IN_OPERATION            ,_param->_nb_inst_memory,_param->_size_operation            );
     DELETE1_SIGNAL( in_MEMORY_IN_TYPE                 ,_param->_nb_inst_memory,_param->_size_type                 );
+    DELETE1_SIGNAL( in_MEMORY_IN_CANCEL               ,_param->_nb_inst_memory,1);
     DELETE1_SIGNAL( in_MEMORY_IN_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_memory,_param->_size_store_queue_ptr      );
     DELETE1_SIGNAL( in_MEMORY_IN_STORE_QUEUE_PTR_READ ,_param->_nb_inst_memory,_param->_size_store_queue_ptr      );
@@ -66,4 +67,5 @@
 //  DELETE1_SIGNAL(out_MEMORY_OUT_OPERATION    ,_param->_nb_inst_memory,_param->_size_operation        );
 //  DELETE1_SIGNAL(out_MEMORY_OUT_TYPE         ,_param->_nb_inst_memory,_param->_size_type             );
+    DELETE1_SIGNAL(out_MEMORY_OUT_CANCEL       ,_param->_nb_inst_memory,1                              );
     DELETE1_SIGNAL(out_MEMORY_OUT_WRITE_RD     ,_param->_nb_inst_memory,1                              );
     DELETE1_SIGNAL(out_MEMORY_OUT_NUM_REG_RD   ,_param->_nb_inst_memory,_param->_size_general_register );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMoore.cpp	(revision 134)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMoore.cpp	(revision 136)
@@ -35,4 +35,5 @@
     Tcontext_t         memory_out_ooo_engine_id = 0;
     Tpacket_t          memory_out_packet_id     = 0;
+    Tcontrol_t         memory_out_cancel        = 0;
     Tcontrol_t         memory_out_write_rd      = 0;
     Tgeneral_address_t memory_out_num_reg_rd    = 0;
@@ -67,4 +68,5 @@
 	    memory_out_ooo_engine_id = _load_queue [internal_MEMORY_OUT_PTR]._ooo_engine_id;
 	    memory_out_packet_id     = _load_queue [internal_MEMORY_OUT_PTR]._packet_id ;
+	    memory_out_cancel        = _load_queue [internal_MEMORY_OUT_PTR]._cancel    ;
 	    memory_out_write_rd      = _load_queue [internal_MEMORY_OUT_PTR]._write_rd  ;
 	    memory_out_num_reg_rd    = _load_queue [internal_MEMORY_OUT_PTR]._num_reg_rd;
@@ -130,4 +132,5 @@
 		memory_out_ooo_engine_id = _store_queue [internal_MEMORY_OUT_PTR]._ooo_engine_id;
 		memory_out_packet_id     = _store_queue [internal_MEMORY_OUT_PTR]._packet_id ;
+		memory_out_cancel        = _store_queue [internal_MEMORY_OUT_PTR]._cancel;
 //              memory_out_write_rd  	 
 //              memory_out_num_reg_rd	 
@@ -152,4 +155,5 @@
 //  PORT_WRITE(out_MEMORY_OUT_OPERATION    [0], memory_out_operation    );
 //  PORT_WRITE(out_MEMORY_OUT_TYPE         [0], TYPE_MEMORY             );
+    PORT_WRITE(out_MEMORY_OUT_CANCEL       [0], memory_out_cancel       );
     PORT_WRITE(out_MEMORY_OUT_WRITE_RD     [0], memory_out_write_rd     );
     PORT_WRITE(out_MEMORY_OUT_NUM_REG_RD   [0], memory_out_num_reg_rd   );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp	(revision 134)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp	(revision 136)
@@ -251,4 +251,5 @@
   	    _store_queue              [i]._packet_id             = 0; // not necessary
   	    _store_queue              [i]._operation             = 0; // not necessary
+  	    _store_queue              [i]._cancel                = 0; // not necessary
   	    _store_queue              [i]._load_queue_ptr_write  = 0; // not necessary
   	    _store_queue              [i]._address               = 0; // not necessary
@@ -268,4 +269,5 @@
             _load_queue               [i]._packet_id             = 0; // not necessary
             _load_queue               [i]._operation             = 0; // not necessary
+            _load_queue               [i]._cancel                = 0; // not necessary
             _load_queue               [i]._store_queue_ptr_write = 0; // not necessary
             _load_queue               [i]._store_queue_ptr_read  = 0; // not necessary
@@ -291,4 +293,5 @@
             _speculative_access_queue [i]._packet_id             = 0; // not necessary
             _speculative_access_queue [i]._operation             = 0; // not necessary
+            _speculative_access_queue [i]._cancel                = 0; // not necessary
             _speculative_access_queue [i]._load_queue_ptr_write  = 0; // not necessary
             _speculative_access_queue [i]._store_queue_ptr_write = 0; // not necessary
@@ -815,4 +818,5 @@
 #endif
 	    Toperation_t    operation            = PORT_READ(in_MEMORY_IN_OPERATION[internal_MEMORY_IN_PORT]);
+	    Tcontrol_t      cancel               = PORT_READ(in_MEMORY_IN_CANCEL   [internal_MEMORY_IN_PORT]);
 	    Tgeneral_data_t address              = (PORT_READ(in_MEMORY_IN_IMMEDIAT[internal_MEMORY_IN_PORT]) +
 						    PORT_READ(in_MEMORY_IN_DATA_RA [internal_MEMORY_IN_PORT]));
@@ -925,4 +929,5 @@
 		    _store_queue [index]._packet_id            = (not _param->_have_port_rob_ptr      )?0:PORT_READ(in_MEMORY_IN_PACKET_ID    [internal_MEMORY_IN_PORT]);
 		    _store_queue [index]._operation            = operation;
+		    _store_queue [index]._cancel               = cancel   ;
 		    _store_queue [index]._load_queue_ptr_write = (not _param->_have_port_load_queue_ptr)?0:PORT_READ(in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE[internal_MEMORY_IN_PORT]);
 		    _store_queue [index]._address              = address;
@@ -965,4 +970,5 @@
 
 		_speculative_access_queue [index]._operation            = operation;
+		_speculative_access_queue [index]._cancel               = cancel   ;
 		_speculative_access_queue [index]._load_queue_ptr_write = (not _param->_have_port_load_queue_ptr)?0:PORT_READ(in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE[internal_MEMORY_IN_PORT]);
 		_speculative_access_queue [index]._store_queue_ptr_write= PORT_READ(in_MEMORY_IN_STORE_QUEUE_PTR_WRITE[internal_MEMORY_IN_PORT]);
@@ -1094,4 +1100,5 @@
 	    _load_queue [ptr_write]._packet_id             = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._packet_id;
 	    _load_queue [ptr_write]._operation             = operation;
+	    _load_queue [ptr_write]._cancel                = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._cancel;
 	    _load_queue [ptr_write]._store_queue_ptr_write = store_queue_ptr_write;
 	    _load_queue [ptr_write]._store_queue_ptr_read  = store_queue_ptr_read ;
@@ -1286,5 +1293,5 @@
 	    uint32_t j = (reg_STORE_QUEUE_PTR_READ+i)%_param->_size_store_queue;
 
-            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d, %.4d, %.8x %.8x, %.2d %.1d, %.2d %s",
+            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d %.1d, %.4d, %.8x %.8x, %.2d %.1d, %.2d %s",
                        j,
                        _store_queue[j]._context_id          ,
@@ -1293,4 +1300,5 @@
                        _store_queue[j]._packet_id           ,
                        _store_queue[j]._operation           ,
+                       _store_queue[j]._cancel              ,
                        _store_queue[j]._load_queue_ptr_write,
                        _store_queue[j]._address             ,
@@ -1311,5 +1319,5 @@
 	    uint32_t j = (*_speculative_access_queue_control)[i];
 
-            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d, %.4d %.4d %.4d %.1d, %.8x, %.1d %.4d, %.2d, %s",
+            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d %.1d, %.4d %.4d %.4d %.1d, %.8x, %.1d %.4d, %.2d, %s",
                        j,
                        _speculative_access_queue[j]._context_id          ,
@@ -1318,4 +1326,5 @@
                        _speculative_access_queue[j]._packet_id           ,
                        _speculative_access_queue[j]._operation           ,
+                       _speculative_access_queue[j]._cancel              ,
                        _speculative_access_queue[j]._load_queue_ptr_write,
                        _speculative_access_queue[j]._store_queue_ptr_write,
@@ -1337,5 +1346,5 @@
 	    uint32_t j = i;
 
-            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d, %.4d %.4d %.1d, %.8x %.1x %.1d %.2d %.1d %.2d, %.8x, %.1d %.4d, %.2d, %s",
+            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d %.1d, %.4d %.4d %.1d, %.8x %.1x %.1d %.2d %.1d %.2d, %.8x, %.1d %.4d, %.2d, %s",
                        j,
                        _load_queue[j]._context_id          ,
@@ -1344,4 +1353,5 @@
                        _load_queue[j]._packet_id           ,
                        _load_queue[j]._operation           ,
+                       _load_queue[j]._cancel              ,
                        _load_queue[j]._store_queue_ptr_write,
                        _load_queue[j]._store_queue_ptr_read ,
