{
DPRINTF(Resource, "Scheduling Inst-Graduated Resource Pool "
"Event for tick %i.\n", curTick() + delay);
+ ResPoolEventPri grad_pri = ResGrad_Pri;
ResPoolEvent *res_pool_event =
- new ResPoolEvent(this,e_type,
+ new ResPoolEvent(this,
+ e_type,
inst,
inst->squashingStage,
inst->seqNum,
- inst->readTid());
+ inst->readTid(),
+ grad_pri);
cpu->schedule(res_pool_event, when);
}
break;
{
DPRINTF(Resource, "Scheduling Squash Resource Pool Event for "
"tick %i.\n", curTick() + delay);
+ ResPoolEventPri squash_pri = ResSquash_Pri;
ResPoolEvent *res_pool_event =
- new ResPoolEvent(this,e_type,
+ new ResPoolEvent(this,
+ e_type,
inst,
inst->squashingStage,
inst->squashSeqNum,
- inst->readTid());
+ inst->readTid(),
+ squash_pri);
cpu->schedule(res_pool_event, when);
}
break;
"Pool Event for tick %i.\n",
curTick() + delay);
ResPoolEvent *res_pool_event =
- new ResPoolEvent(this,e_type,
+ new ResPoolEvent(this,
+ e_type,
inst,
inst->squashingStage,
inst->seqNum - 1,
DPRINTF(Resource, "Scheduling UpdatePC Resource Pool Event "
"for tick %i.\n",
curTick() + delay);
- ResPoolEvent *res_pool_event = new ResPoolEvent(this,e_type,
+ ResPoolEvent *res_pool_event = new ResPoolEvent(this,
+ e_type,
inst,
inst->squashingStage,
inst->seqNum,
DynInstPtr _inst,
int stage_num,
InstSeqNum seq_num,
- ThreadID _tid)
- : Event(ResPool_Pri), resPool(_resPool),
+ ThreadID _tid,
+ ResPoolEventPri res_pri)
+ : Event(res_pri), resPool(_resPool),
eventType(e_type), inst(_inst), seqNum(seq_num),
stageNum(stage_num), tid(_tid)
{ }
};
enum ResPoolEventPri {
- ResPool_Pri = InOrderCPU::InOrderCPU_Pri - 5
+ ResPool_Pri = InOrderCPU::InOrderCPU_Pri - 5,
+ ResGrad_Pri,
+ ResSquash_Pri
};
class ResPoolEvent : public Event
DynInstPtr _inst,
int stage_num,
InstSeqNum seq_num,
- ThreadID _tid);
+ ThreadID _tid,
+ ResPoolEventPri res_pri = ResPool_Pri);
/** Set Type of Event To Be Scheduled */
void setEvent(InOrderCPU::CPUEventType e_type,