build/X86_MESI_Two_Level/mem/protocol/L2Cache_Controller.cc
/** \brief Deallocate L2 cache block.  Sets the cache to not present, allowing a replacement in parallel with a fetch. */
\brief Deallocate L2 cache block.  Sets the cache to not present, allowing a replacement in parallel with a fetch.
\ brief Deallocate L2 cache block . Sets the cache to not present allowing a replacement in parallel with a fetch .
void
L2Cache_Controller::rr_deallocateL2CacheBlock(L2Cache_TBE*& m_tbe_ptr, L2Cache_Entry*& m_cache_entry_ptr, Addr addr, int core_id)
{
    DPRINTF(RubyGenerated, "executing rr_deallocateL2CacheBlock\n");
    try {
           if ((((*m_L2cache_ptr)).getTrigger(addr, core_id))) {
        DPRINTF(WayEvictMICRO17, "MESI_Two_Level-L2cache.sm:753: triggered: %#x\n", addr);
        {
            std::shared_ptr<RequestMsg> out_msg = std::make_shared<RequestMsg>(clockEdge());
            (*out_msg).m_addr = addr;
            (*out_msg).m_Type = CoherenceRequestType_EVI_NOTI;
            (*out_msg).m_Requestor = m_machineID;
            (*out_msg).m_Destination = (*m_cache_entry_ptr).m_PriorSharers;
            (*out_msg).m_MessageSize = MessageSizeType_Request_Control;
            ((*m_L1RequestFromL2Cache_ptr)).enqueue(out_msg, clockEdge(), cyclesToTicks(Cycles((1))));
        }
    }
    (((*m_L2cache_ptr)).deallocate(addr, core_id));
    unset_cache_entry(m_cache_entry_ptr);;
    } catch (const RejectException & e) {
       fatal("Error in action L2Cache:rr_deallocateL2CacheBlock: "
             "executed a peek statement with the wrong message "
             "type specified. ");
    }
}
void L2Cache_Controller :: rr_deallocateL2CacheBlock ( L2Cache_TBE * & m_tbe_ptr , L2Cache_Entry * & m_cache_entry_ptr , Addr addr , int core_id ) { DPRINTF ( RubyGenerated , " \n " ) ; try { if ( ( ( ( * m_L2cache_ptr ) ) . getTrigger ( addr , core_id ) ) ) { DPRINTF ( WayEvictMICRO17 , " \n " , addr ) ; { std :: shared_ptr < RequestMsg > out_msg = std :: make_shared < RequestMsg > ( clockEdge ( ) ) ; ( * out_msg ) . m_addr = addr ; ( * out_msg ) . m_Type = CoherenceRequestType_EVI_NOTI ; ( * out_msg ) . m_Requestor = m_machineID ; ( * out_msg ) . m_Destination = ( * m_cache_entry_ptr ) . m_PriorSharers ; ( * out_msg ) . m_MessageSize = MessageSizeType_Request_Control ; ( ( * m_L1RequestFromL2Cache_ptr ) ) . enqueue ( out_msg , clockEdge ( ) , cyclesToTicks ( Cycles ( ( 1 ) ) ) ) ; } } ( ( ( * m_L2cache_ptr ) ) . deallocate ( addr , core_id ) ) ; unset_cache_entry ( m_cache_entry_ptr ) ; ; } catch ( const RejectException & e ) { fatal ( " " " " " " ) ; } }
\brief Deallocate L2 cache block.
\ brief Deallocate L2 cache block .
//fanyao added core_id