Changeset 115 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp
- Timestamp:
- Apr 20, 2009, 11:29:17 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp
r114 r115 28 28 { 29 29 // Clear all bank 30 for (uint32_t i=0; i<_param->_nb_bank; i++)30 for (uint32_t i=0; i<_param->_nb_bank; ++i) 31 31 { 32 _rob [i].clear(); 32 while(not _rob[i].empty()) 33 { 34 delete _rob[i].front(); 35 _rob[i].pop_front(); 36 } 33 37 reg_BANK_PTR [i] = 0; 34 38 } … … 126 130 127 131 Texception_t exception = PORT_READ(in_INSERT_EXCEPTION [x][y]); 132 Tcontrol_t no_execute = PORT_READ(in_INSERT_NO_EXECUTE [x][y]); 128 133 129 134 log_printf(TRACE,Commit_unit,FUNCTION," * front_end_id : %d",front_end_id); … … 147 152 entry->exception = exception; 148 153 entry->exception_use = PORT_READ(in_INSERT_EXCEPTION_USE [x][y]); 149 entry->use_store_queue = (type == TYPE_MEMORY) and ( is_store) ;150 entry->use_load_queue = (type == TYPE_MEMORY) and (not is_store) ;154 entry->use_store_queue = (type == TYPE_MEMORY) and ( is_store) and (not no_execute); 155 entry->use_load_queue = (type == TYPE_MEMORY) and (not is_store) and (not no_execute); 151 156 entry->store_queue_ptr_write = PORT_READ(in_INSERT_STORE_QUEUE_PTR_WRITE [x][y]); 152 157 entry->load_queue_ptr_write = (_param->_have_port_load_queue_ptr)?PORT_READ(in_INSERT_LOAD_QUEUE_PTR_WRITE [x][y]):0; … … 200 205 if (exception == EXCEPTION_NONE) 201 206 { 202 Tcontrol_t no_execute = PORT_READ(in_INSERT_NO_EXECUTE [x][y]);203 207 // no_execute : l.j, l.nop, l.rfe 204 208 … … 208 212 { 209 213 case TYPE_BRANCH : {entry->state=(no_execute==1)?ROB_BRANCH_COMPLETE:ROB_BRANCH_WAIT_END ; break;} 210 case TYPE_MEMORY : {entry->state=( is_store ==1)?ROB_STORE_WAIT_HEAD_OK:ROB_OTHER_WAIT_END; break;}214 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;} 211 215 default : {entry->state=(no_execute==1)?ROB_END_OK_SPECULATIVE:ROB_OTHER_WAIT_END; break;} 212 216 } … … 331 335 default : 332 336 { 333 throw ERRORMORPHEO(FUNCTION,toString(_("Commit : invalid state value (%s).\n"),toString(state).c_str()));337 throw ERRORMORPHEO(FUNCTION,toString(_("Commit [%d] : Bank [%d][%d], invalid state value (%s).\n"),x,i,j,toString(state).c_str())); 334 338 break; 335 339 } … … 442 446 reg_NUM_BANK_HEAD = (reg_NUM_BANK_HEAD+1)%_param->_nb_bank; 443 447 448 delete entry; 444 449 _rob [num_bank].pop_front(); 445 delete entry;446 450 447 451 // Transaction on retire interface : reset watch dog timer.
Note: See TracChangeset
for help on using the changeset viewer.