static void dowrite(MemObj *cache, AddrType addr) { num_operations++; DInst *stClone = st->clone(); stClone->setAddr(addr); while(cache->isBusy(addr)) EventScheduler::advanceClock(); wrDoneCB *cb = wrDoneCB::create(stClone); printf("wr %x @%lld\n", (unsigned int)addr,(long long)globalClock); MemRequest::sendReqWrite(cache, stClone->getStatsFlag(), addr, cb); wr_pending++; }
static void doprefetch(MemObj *cache, AddrType addr) { num_operations++; DInst *ldClone = ld->clone(); ldClone->setAddr(addr); while(cache->isBusy(addr)) EventScheduler::advanceClock(); rdDoneCB *cb = rdDoneCB::create(ldClone); printf("rd %x @%lld\n", (unsigned int)addr,(long long)globalClock); MemRequest::sendReqReadPrefetch(cache, ldClone->getStatsFlag(), addr, cb); rd_pending++; }