Changeset 119 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_transition.cpp
- Timestamp:
- May 25, 2009, 7:40:26 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_transition.cpp
r117 r119 328 328 else 329 329 { 330 reg_STATE [i] = CONTEXT_STATE_KO_MISS_BRANCH_WAITEND; //@@@ TODO : make MISS fast (miss decod) 331 332 Tcontrol_t dest_val = PORT_READ(in_BRANCH_EVENT_ADDRESS_DEST_VAL[i]); 333 reg_EVENT_ADDRESS [i] = PORT_READ(in_BRANCH_EVENT_ADDRESS_SRC [i])+1; // address delay slot 334 reg_EVENT_ADDRESS_EPCR [i] = PORT_READ(in_BRANCH_EVENT_ADDRESS_DEST [i]); // address_next 335 reg_EVENT_ADDRESS_EPCR_VAL [i] = dest_val; 336 //reg_EVENT_ADDRESS_EEAR [i] = 0; 337 reg_EVENT_ADDRESS_EEAR_VAL [i] = 0; 338 reg_EVENT_IS_DELAY_SLOT [i] = 1; 339 reg_EVENT_IS_DS_TAKE [i] = dest_val; 340 reg_EVENT_DEPTH [i] = depth; 330 Tcontrol_t can_continue = PORT_READ(in_BRANCH_EVENT_CAN_CONTINUE [i]); 331 Tcontrol_t dest_val = PORT_READ(in_BRANCH_EVENT_ADDRESS_DEST_VAL[i]); 332 333 log_printf(TRACE,Context_State,FUNCTION," * dest_val : %d",dest_val ); 334 log_printf(TRACE,Context_State,FUNCTION," * can_continue: %d",can_continue); 335 336 if (can_continue) 337 reg_STATE [i] = CONTEXT_STATE_KO_MISS_BRANCH_ADDR; 338 else 339 reg_STATE [i] = CONTEXT_STATE_KO_MISS_BRANCH_WAITEND; 340 341 reg_EVENT_ADDRESS [i] = PORT_READ(in_BRANCH_EVENT_ADDRESS_SRC [i])+1; // address delay slot 342 reg_EVENT_ADDRESS_EPCR [i] = PORT_READ(in_BRANCH_EVENT_ADDRESS_DEST [i]); // address_next 343 reg_EVENT_ADDRESS_EPCR_VAL [i] = dest_val; 344 //reg_EVENT_ADDRESS_EEAR [i] = 0; 345 reg_EVENT_ADDRESS_EEAR_VAL [i] = 0; 346 reg_EVENT_IS_DELAY_SLOT [i] = 1; 347 reg_EVENT_IS_DS_TAKE [i] = dest_val; 348 reg_EVENT_DEPTH [i] = depth; 349 reg_EVENT_FLUSH_ONLY [i] = can_continue; 341 350 } 342 351 } … … 363 372 Tdepth_t depth0 = (depth_cur>=depth_min)?(depth_cur-depth_min):((depth_cur+depth_max-depth_min)); 364 373 Tdepth_t depth1 = (depth >=depth_min)?(depth -depth_min):((depth +depth_max-depth_min)); 365 // 366 // 374 // Tdepth_t depth0 = (depth_cur>=depth_min)?(depth_cur):((depth_cur+depth_max)); 375 // Tdepth_t depth1 = (depth >=depth_min)?(depth ):((depth +depth_max)); 367 376 368 377 // priority : miss_load > miss_branch > excep > spr/sync … … 390 399 if (is_valid) 391 400 { 392 // reg_STATE [context_id] = CONTEXT_STATE_KO_MISS_BRANCH_ADDR; 393 reg_STATE [context_id] = CONTEXT_STATE_KO_MISS_BRANCH_WAIT_UPDATE; 394 reg_EVENT_DEPTH [context_id] = depth; 401 // reg_STATE [context_id] = CONTEXT_STATE_KO_MISS_BRANCH_ADDR; 402 reg_STATE [context_id] = CONTEXT_STATE_KO_MISS_BRANCH_WAIT_UPDATE; 403 reg_EVENT_DEPTH [context_id] = depth; 404 reg_EVENT_FLUSH_ONLY [context_id] = false; 395 405 } 396 406 } … … 524 534 //reg_EVENT_IS_DS_TAKE [context] = 0; 525 535 reg_EVENT_DEPTH [context] = depth; 536 reg_EVENT_FLUSH_ONLY [context] = false; 526 537 } 527 538 } … … 635 646 reg_EVENT_IS_DS_TAKE [context] = 0; 636 647 reg_EVENT_DEPTH [context] = depth; 648 reg_EVENT_FLUSH_ONLY [context] = false; 637 649 } 638 650 } … … 679 691 log_printf(TRACE,Context_State,FUNCTION," * reg_EVENT_IS_DS_TAKE : %d" ,reg_EVENT_IS_DS_TAKE [i]); 680 692 log_printf(TRACE,Context_State,FUNCTION," * reg_EVENT_DEPTH : %d" ,reg_EVENT_DEPTH [i]); 693 log_printf(TRACE,Context_State,FUNCTION," * reg_EVENT_FLUSH_ONLY : %d" ,reg_EVENT_FLUSH_ONLY [i]); 681 694 } 682 695 #endif
Note: See TracChangeset
for help on using the changeset viewer.