Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_deallocation.cpp	(revision 114)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_deallocation.cpp	(revision 115)
@@ -187,4 +187,12 @@
         
         // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+	for (uint32_t i=0; i<_param->_nb_bank; ++i)
+	  while(not _rob[i].empty())
+	    {
+	      entry_t * entry = _rob[i].front();
+	      delete entry;
+	      _rob[i].pop_front();
+	    }
+
         DELETE2(_nb_cycle_idle           ,_param->_nb_front_end,_param->_nb_context [it1]);
         DELETE1(_rob                     ,_param->_nb_bank);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp	(revision 114)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp	(revision 115)
@@ -28,7 +28,11 @@
       {
         // Clear all bank 
-        for (uint32_t i=0; i<_param->_nb_bank; i++)
+	for (uint32_t i=0; i<_param->_nb_bank; ++i)
 	  {
-	    _rob [i].clear();
+	    while(not _rob[i].empty())
+	      {
+		delete _rob[i].front();
+		_rob[i].pop_front();
+	      }
 	    reg_BANK_PTR [i] = 0;
 	  }
@@ -126,4 +130,5 @@
 
 		  Texception_t exception    = PORT_READ(in_INSERT_EXCEPTION    [x][y]);
+		  Tcontrol_t   no_execute   = PORT_READ(in_INSERT_NO_EXECUTE   [x][y]);
 
 		  log_printf(TRACE,Commit_unit,FUNCTION,"    * front_end_id   : %d",front_end_id);
@@ -147,6 +152,6 @@
 		  entry->exception               = exception;
 		  entry->exception_use           = PORT_READ(in_INSERT_EXCEPTION_USE         [x][y]);
-		  entry->use_store_queue         = (type == TYPE_MEMORY) and (    is_store);
-		  entry->use_load_queue          = (type == TYPE_MEMORY) and (not is_store);
+		  entry->use_store_queue         = (type == TYPE_MEMORY) and (    is_store) and (not no_execute);
+		  entry->use_load_queue          = (type == TYPE_MEMORY) and (not is_store) and (not no_execute);
 		  entry->store_queue_ptr_write   = PORT_READ(in_INSERT_STORE_QUEUE_PTR_WRITE [x][y]);
 		  entry->load_queue_ptr_write    = (_param->_have_port_load_queue_ptr)?PORT_READ(in_INSERT_LOAD_QUEUE_PTR_WRITE [x][y]):0;
@@ -200,5 +205,4 @@
                       if (exception == EXCEPTION_NONE)
                         {
-                          Tcontrol_t no_execute = PORT_READ(in_INSERT_NO_EXECUTE [x][y]);
                           // no_execute : l.j, l.nop, l.rfe
                           
@@ -208,5 +212,5 @@
                             {
                             case TYPE_BRANCH : {entry->state=(no_execute==1)?ROB_BRANCH_COMPLETE:ROB_BRANCH_WAIT_END  ; break;}
-                            case TYPE_MEMORY : {entry->state=(is_store  ==1)?ROB_STORE_WAIT_HEAD_OK:ROB_OTHER_WAIT_END; break;}
+                            case TYPE_MEMORY : {entry->state=(no_execute==1)?ROB_END_OK_SPECULATIVE:(entry->state=(is_store  ==1)?ROB_STORE_WAIT_HEAD_OK:ROB_OTHER_WAIT_END); break;}
                             default          : {entry->state=(no_execute==1)?ROB_END_OK_SPECULATIVE:ROB_OTHER_WAIT_END; break;}
                             }
@@ -331,5 +335,5 @@
                       default :
                         {
-                          throw ERRORMORPHEO(FUNCTION,toString(_("Commit : invalid state value (%s).\n"),toString(state).c_str()));
+                          throw ERRORMORPHEO(FUNCTION,toString(_("Commit [%d] : Bank [%d][%d], invalid state value (%s).\n"),x,i,j,toString(state).c_str()));
                           break;
                         }
@@ -442,6 +446,6 @@
                 reg_NUM_BANK_HEAD = (reg_NUM_BANK_HEAD+1)%_param->_nb_bank;
                 
+                delete entry;
                 _rob [num_bank].pop_front();
-                delete entry;
                 
                 // Transaction on retire interface : reset watch dog timer.
