Changeset 139 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_retire.cpp
- Timestamp:
- Jul 30, 2010, 4:47:27 PM (14 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_genMealy_retire.cpp
r133 r139 60 60 spr_write_sr_cy [i][j] = 0; // not necessary 61 61 spr_write_sr_ov [i][j] = 0; // not necessary 62 63 // Init internal update table 64 65 // Test if an event occure 66 // bool event = (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) != EVENT_STATE_NO_EVENT); 67 bool reset_update_table = (commit_event_state_to_event_state(reg_EVENT_STATE[i][j]) == EVENT_STATE_EVENT); 68 69 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * reset_update_table : %d",reset_update_table); 70 71 // not event -> update_table == 1 -> always update 72 // event -> update_table and not reset 73 for (uint32_t k=0; k<_param->_nb_general_register_logic; ++k) 74 internal_rat_gpr_update_table [i][j][k] = // not event or 75 (not reset_update_table and rat_gpr_update_table [i][j][k]); 76 for (uint32_t k=0; k<_param->_nb_special_register_logic; ++k) 77 internal_rat_spr_update_table [i][j][k] = // not event or 78 (not reset_update_table and rat_spr_update_table [i][j][k]); 62 79 } 63 80 … … 116 133 ) 117 134 { 135 Tcontrol_t write_rd = entry->write_rd; 118 136 Tcontrol_t write_re = entry->write_re; 137 Tgeneral_address_t num_reg_rd_log = entry->num_reg_rd_log; 119 138 Tspecial_address_t num_reg_re_log = entry->num_reg_re_log; 120 139 … … 172 191 } 173 192 174 internal_BANK_RETIRE_NUM_RENAME_UNIT [num_bank] = x; 175 internal_BANK_RETIRE_NUM_INST [num_bank] = y; 193 // Restore Old Register 194 Tcontrol_t retire_restore = (commit_event_state_to_event_state(reg_EVENT_STATE[front_end_id][context_id]) != EVENT_STATE_NO_EVENT); 195 196 // Test if event -> need restore ? 197 if (retire_restore) 198 { 199 log_printf(TRACE,Commit_unit,FUNCTION," * Restore"); 200 201 // Test and update update table 202 if (write_rd) 203 { 204 internal_BANK_RETIRE_RESTORE_RD_PHY_OLD [num_bank] = (internal_rat_gpr_update_table[front_end_id][context_id][num_reg_rd_log] == 0); 205 206 internal_rat_gpr_update_table[front_end_id][context_id][num_reg_rd_log] = 1; 207 } 208 if (write_re) 209 { 210 internal_BANK_RETIRE_RESTORE_RE_PHY_OLD [num_bank] = (internal_rat_spr_update_table[front_end_id][context_id][num_reg_re_log] == 0); 211 212 internal_rat_spr_update_table[front_end_id][context_id][num_reg_re_log] = 1; 213 } 214 215 log_printf(TRACE,Commit_unit,FUNCTION," * restore_rd_phy_old : %d",internal_BANK_RETIRE_RESTORE_RD_PHY_OLD [num_bank]); 216 log_printf(TRACE,Commit_unit,FUNCTION," * restore_re_phy_old : %d",internal_BANK_RETIRE_RESTORE_RE_PHY_OLD [num_bank]); 217 } 218 219 internal_BANK_RETIRE_NUM_RENAME_UNIT [num_bank] = x; 220 internal_BANK_RETIRE_NUM_INST [num_bank] = y; 176 221 177 222 if (_param->_have_port_front_end_id) … … 199 244 PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_OLD [x][y], entry->num_reg_re_phy_old ); 200 245 PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_NEW [x][y], entry->num_reg_re_phy_new ); 246 PORT_WRITE(out_RETIRE_RESTORE [x][y],retire_restore); 247 PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD [x][y],internal_BANK_RETIRE_RESTORE_RD_PHY_OLD [num_bank]); 248 PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD [x][y],internal_BANK_RETIRE_RESTORE_RE_PHY_OLD [num_bank]); 201 249 202 250 // Event -> rob must be manage this event
Note: See TracChangeset
for help on using the changeset viewer.