O3: Add a pointer to the macroop for a microop in the dyninst.
This commit is contained in:
parent
a81d4a8fcd
commit
ec204f003c
|
@ -103,6 +103,7 @@ class BaseDynInst : public FastAlloc, public RefCounted
|
|||
|
||||
/** The StaticInst used by this BaseDynInst. */
|
||||
StaticInstPtr staticInst;
|
||||
StaticInstPtr macroop;
|
||||
|
||||
////////////////////////////////////////////
|
||||
//
|
||||
|
@ -378,13 +379,14 @@ class BaseDynInst : public FastAlloc, public RefCounted
|
|||
* @param seq_num The sequence number of the instruction.
|
||||
* @param cpu Pointer to the instruction's CPU.
|
||||
*/
|
||||
BaseDynInst(StaticInstPtr staticInst, TheISA::PCState pc,
|
||||
TheISA::PCState predPC, InstSeqNum seq_num, ImplCPU *cpu);
|
||||
BaseDynInst(StaticInstPtr staticInst, StaticInstPtr macroop,
|
||||
TheISA::PCState pc, TheISA::PCState predPC,
|
||||
InstSeqNum seq_num, ImplCPU *cpu);
|
||||
|
||||
/** BaseDynInst constructor given a StaticInst pointer.
|
||||
* @param _staticInst The StaticInst for this BaseDynInst.
|
||||
*/
|
||||
BaseDynInst(StaticInstPtr &_staticInst);
|
||||
BaseDynInst(StaticInstPtr staticInst, StaticInstPtr macroop);
|
||||
|
||||
/** BaseDynInst destructor. */
|
||||
~BaseDynInst();
|
||||
|
|
|
@ -76,9 +76,10 @@ my_hash_t thishash;
|
|||
|
||||
template <class Impl>
|
||||
BaseDynInst<Impl>::BaseDynInst(StaticInstPtr _staticInst,
|
||||
StaticInstPtr _macroop,
|
||||
TheISA::PCState _pc, TheISA::PCState _predPC,
|
||||
InstSeqNum seq_num, ImplCPU *cpu)
|
||||
: staticInst(_staticInst), traceData(NULL), cpu(cpu)
|
||||
: staticInst(_staticInst), macroop(_macroop), traceData(NULL), cpu(cpu)
|
||||
{
|
||||
seqNum = seq_num;
|
||||
|
||||
|
@ -90,8 +91,9 @@ BaseDynInst<Impl>::BaseDynInst(StaticInstPtr _staticInst,
|
|||
}
|
||||
|
||||
template <class Impl>
|
||||
BaseDynInst<Impl>::BaseDynInst(StaticInstPtr &_staticInst)
|
||||
: staticInst(_staticInst), traceData(NULL)
|
||||
BaseDynInst<Impl>::BaseDynInst(StaticInstPtr _staticInst,
|
||||
StaticInstPtr _macroop)
|
||||
: staticInst(_staticInst), macroop(_macroop), traceData(NULL)
|
||||
{
|
||||
seqNum = 0;
|
||||
initVars();
|
||||
|
|
|
@ -86,12 +86,12 @@ class BaseO3DynInst : public BaseDynInst<Impl>
|
|||
|
||||
public:
|
||||
/** BaseDynInst constructor given a binary instruction. */
|
||||
BaseO3DynInst(StaticInstPtr staticInst,
|
||||
BaseO3DynInst(StaticInstPtr staticInst, StaticInstPtr macroop,
|
||||
TheISA::PCState pc, TheISA::PCState predPC,
|
||||
InstSeqNum seq_num, O3CPU *cpu);
|
||||
|
||||
/** BaseDynInst constructor given a static inst pointer. */
|
||||
BaseO3DynInst(StaticInstPtr &_staticInst);
|
||||
BaseO3DynInst(StaticInstPtr _staticInst, StaticInstPtr _macroop);
|
||||
|
||||
/** Executes the instruction.*/
|
||||
Fault execute();
|
||||
|
|
|
@ -45,16 +45,18 @@
|
|||
|
||||
template <class Impl>
|
||||
BaseO3DynInst<Impl>::BaseO3DynInst(StaticInstPtr staticInst,
|
||||
StaticInstPtr macroop,
|
||||
TheISA::PCState pc, TheISA::PCState predPC,
|
||||
InstSeqNum seq_num, O3CPU *cpu)
|
||||
: BaseDynInst<Impl>(staticInst, pc, predPC, seq_num, cpu)
|
||||
: BaseDynInst<Impl>(staticInst, macroop, pc, predPC, seq_num, cpu)
|
||||
{
|
||||
initVars();
|
||||
}
|
||||
|
||||
template <class Impl>
|
||||
BaseO3DynInst<Impl>::BaseO3DynInst(StaticInstPtr &_staticInst)
|
||||
: BaseDynInst<Impl>(_staticInst)
|
||||
BaseO3DynInst<Impl>::BaseO3DynInst(StaticInstPtr _staticInst,
|
||||
StaticInstPtr _macroop)
|
||||
: BaseDynInst<Impl>(_staticInst, _macroop)
|
||||
{
|
||||
initVars();
|
||||
}
|
||||
|
|
|
@ -1097,7 +1097,7 @@ DefaultFetch<Impl>::buildInst(ThreadID tid, StaticInstPtr staticInst,
|
|||
|
||||
// Create a new DynInst from the instruction fetched.
|
||||
DynInstPtr instruction =
|
||||
new DynInst(staticInst, thisPC, nextPC, seq, cpu);
|
||||
new DynInst(staticInst, curMacroop, thisPC, nextPC, seq, cpu);
|
||||
instruction->setTid(tid);
|
||||
|
||||
instruction->setASID(tid);
|
||||
|
|
Loading…
Reference in a new issue