@@ -521,6 +521,7 @@ bool tag_array::get_bypass_bit_from_tag(new_addr_type addr, mem_fetch *mf){
521521 return line->m_bypassBit ;
522522 }
523523 }
524+ return false ;
524525}
525526
526527
@@ -572,6 +573,7 @@ enum cache_request_status tag_array::access(new_addr_type addr, unsigned time,
572573 }
573574 m_lines[idx]->allocate (m_config.tag (addr), m_config.block_addr (addr),
574575 time, mf->get_access_sector_mask ());
576+ m_lines[idx]->m_bypassBit = false ;
575577 }
576578 break ;
577579 case SECTOR_MISS:
@@ -624,6 +626,7 @@ void tag_array::fill(new_addr_type addr, unsigned time, //on-fill
624626 if (status == MISS) {
625627 m_lines[idx]->allocate (m_config.tag (addr), m_config.block_addr (addr), time,
626628 mask);
629+ m_lines[idx]->m_bypassBit = false ;
627630 } else if (status == SECTOR_MISS) {
628631 assert (m_config.m_cache_type == SECTOR);
629632 ((sector_cache_block *)m_lines[idx])->allocate_sector (time, mask);
@@ -675,7 +678,7 @@ void tag_array::fill(new_addr_type addr, unsigned time, //on-fill
675678 }
676679 if (isBypassed){
677680 if (bypassBit){
678- printf (" L2 indicate misprediction, bypassbit = 1, PC=%llx\n " , mf->get_pc ()); ;
681+ // printf("L2 indicate misprediction, bypassbit = 1, PC=%llx\n", mf->get_pc()); ;
679682 // l1d_prediction_table[hashed_pc] = threshold-1 ;
680683 isBypassed = false ; // if L2 indicates misprediction, do not bypass
681684 l1_cache::inst_stats[hashed_pc].misprediction_time ++ ;
@@ -720,6 +723,7 @@ void tag_array::fill(new_addr_type addr, unsigned time, //on-fill
720723 if (status == MISS) {
721724 m_lines[idx]->allocate (m_config.tag (addr), m_config.block_addr (addr), time,
722725 mask);
726+ m_lines[idx]->m_bypassBit = false ;
723727 } else if (status == SECTOR_MISS) {
724728 assert (m_config.m_cache_type == SECTOR);
725729 ((sector_cache_block *)m_lines[idx])->allocate_sector (time, mask);
0 commit comments