models/cache/mcp-cache/L2_cache.cpp
void L2_cache :: m_evict_notify(ManagerInterface* manager)
{
    DBG_L2_CACHE(cout,  "    m_evict_notify\n");

    Coh_msg* req = mcp_stalled_req[manager->getManagerID()];
    assert(req);
    DBG_L2_CACHE(cout, "    There is a request waiting for eviction to finish, req= " << req << " src= " << req->src_id << " msg= " << req->msg << " addr= " <<hex<< req->addr <<dec<< "\n");

    mcp_stalled_req[manager->getManagerID()] = 0;
    //now we should be able to occupy the evicted entry.
    hash_entry* mshr_entry = mshr->get_entry(req->addr);
    assert(mshr_entry);

    hash_entry* hash_table_entry = my_table->reserve_block_for (req->addr);
    assert(hash_table_entry);

    mshr_map[mshr_entry->get_idx()] = hash_table_entry;
    L2_algorithm (mshr_entry, req);
}
//====================================================================
//! This is called when a reply from lower client brings the manager to a stable state,
//! while processing an eviction of an L2 line. This allows us to check if the eviction
//! is complete.
//====================================================================
This is called when a reply from lower client brings the manager to a stable state,
while processing an eviction of an L2 line. This allows us to check if the eviction
is complete.
This is called when a reply from lower client brings the manager to a stable state while processing an eviction of an L2 line . This allows us to check if the eviction is complete .
void L2_cache :: m_evict_notify(ManagerInterface* manager)
{
    DBG_L2_CACHE(cout,  "    m_evict_notify\n");
    Coh_msg* req = mcp_stalled_req[manager->getManagerID()];
    assert(req);
    DBG_L2_CACHE(cout, "    There is a request waiting for eviction to finish, req= " << req << " src= " << req->src_id << " msg= " << req->msg << " addr= " <<hex<< req->addr <<dec<< "\n");
    mcp_stalled_req[manager->getManagerID()] = 0;
    hash_entry* mshr_entry = mshr->get_entry(req->addr);
    assert(mshr_entry);
    hash_entry* hash_table_entry = my_table->reserve_block_for (req->addr);
    assert(hash_table_entry);
    mshr_map[mshr_entry->get_idx()] = hash_table_entry;
    L2_algorithm (mshr_entry, req);
}
void L2_cache :: m_evict_notify ( ManagerInterface * manager ) { DBG_L2_CACHE ( cout , " \n " ) ; Coh_msg * req = mcp_stalled_req [ manager -> getManagerID ( ) ] ; assert ( req ) ; DBG_L2_CACHE ( cout , " " << req << " " << req -> src_id << " " << req -> msg << " " << hex << req -> addr << dec << " \n " ) ; mcp_stalled_req [ manager -> getManagerID ( ) ] = 0 ; hash_entry * mshr_entry = mshr -> get_entry ( req -> addr ) ; assert ( mshr_entry ) ; hash_entry * hash_table_entry = my_table -> reserve_block_for ( req -> addr ) ; assert ( hash_table_entry ) ; mshr_map [ mshr_entry -> get_idx ( ) ] = hash_table_entry ; L2_algorithm ( mshr_entry , req ) ; }
This is called when a reply from lower client brings the manager to a stable state,
while processing an eviction of an L2 line.
This is called when a reply from lower client brings the manager to a stable state while processing an eviction of an L2 line .
//now we should be able to occupy the evicted entry.