Changeset 100 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_genMealy_predict.cpp
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property
svn:ignore
set to
Makefile.flags
Makefile.tools
Makefile.tools_path
-
Property
svn:ignore
set to
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_genMealy_predict.cpp
r81 r100 22 22 void Return_Address_Stack::genMealy_predict (void) 23 23 { 24 log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin"); 24 log_begin(Return_Address_Stack,FUNCTION); 25 log_function(Return_Address_Stack,FUNCTION,_name.c_str()); 25 26 26 27 #ifdef DEBUG_TEST 28 // just to test if have many transaction on a same context 27 29 bool context_valid [_param->_nb_context]; 28 30 for (uint32_t i=0; i<_param->_nb_context; i++) … … 32 34 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 33 35 { 36 // Read context number 34 37 Tcontext_t context = (_param->_have_port_context_id)?PORT_READ(in_PREDICT_CONTEXT_ID [i]):0; 35 38 36 39 #ifdef DEBUG_TEST 37 40 if (PORT_READ(in_PREDICT_VAL [i])) … … 42 45 } 43 46 #endif 44 47 48 // Get top 45 49 Tptr_t top = reg_PREDICT_TOP[context]; 46 50 Tcontrol_t push = PORT_READ(in_PREDICT_PUSH [i]); 47 51 48 // if push : value is hit 49 // if pop : val and not miss 50 internal_PREDICT_HIT [i] = (push or (reg_stack[context][top]._val and not reg_stack[context][top]._miss and (reg_PREDICT_NB_ELT[context]>0))); 52 // Hit : 53 // * if push : value is hit 54 // * if pop : no empty 55 internal_PREDICT_HIT [i] = (push or (reg_PREDICT_NB_ELT[context]>0)); 56 51 57 PORT_WRITE(out_PREDICT_HIT [i], internal_PREDICT_HIT [i]); 52 58 53 59 // if pop : address_pop = stack [top] 54 // if push : stock [top+1] = address_push; also st ock [top+1] is erase ! give the old value atthe update table60 // if push : stock [top+1] = address_push; also stack [top+1] is erase ! save the old value in the update table 55 61 if (push) 56 62 top = (top+1)%_param->_size_queue[context]; … … 60 66 } 61 67 62 log_ printf(FUNC,Return_Address_Stack,FUNCTION,"End");68 log_end(Return_Address_Stack,FUNCTION); 63 69 }; 64 70
Note: See TracChangeset
for help on using the changeset viewer.