StaticInst support for microcode
--HG-- extra : convert_revision : c9e062637faf2166f0d36b914f3efa7f80626663
This commit is contained in:
@@ -75,3 +75,10 @@ StaticInst::hasBranchTarget(Addr pc, ThreadContext *tc, Addr &tgt) const
|
||||
return false;
|
||||
}
|
||||
|
||||
StaticInstPtr
|
||||
StaticInst::fetchMicroOp(MicroPC micropc)
|
||||
{
|
||||
panic("StaticInst::fetchMicroOp() called on instruction "
|
||||
"that is not microcoded.");
|
||||
}
|
||||
|
||||
|
||||
@@ -67,6 +67,8 @@ namespace Trace {
|
||||
class InstRecord;
|
||||
}
|
||||
|
||||
typedef uint32_t MicroPC;
|
||||
|
||||
/**
|
||||
* Base, ISA-independent static instruction class.
|
||||
*
|
||||
@@ -139,6 +141,14 @@ class StaticInstBase : public RefCounted
|
||||
IsIprAccess, ///< Accesses IPRs
|
||||
IsUnverifiable, ///< Can't be verified by a checker
|
||||
|
||||
//Flags for microcode
|
||||
IsMacroOp, ///< Is a macroop containing microops
|
||||
IsMicroOp, ///< Is a microop
|
||||
IsDelayedCommit, ///< This microop doesn't commit right away
|
||||
IsLastMicroOp, ///< This microop ends a microop sequence
|
||||
//This flag doesn't do anything yet
|
||||
IsMicroBranch, ///< This microop branches within the microcode for a macroop
|
||||
|
||||
NumFlags
|
||||
};
|
||||
|
||||
@@ -230,6 +240,12 @@ class StaticInstBase : public RefCounted
|
||||
bool isQuiesce() const { return flags[IsQuiesce]; }
|
||||
bool isIprAccess() const { return flags[IsIprAccess]; }
|
||||
bool isUnverifiable() const { return flags[IsUnverifiable]; }
|
||||
bool isMacroOp() const { return flags[IsMacroOp]; }
|
||||
bool isMicroOp() const { return flags[IsMicroOp]; }
|
||||
bool isDelayedCommit() const { return flags[IsDelayedCommit]; }
|
||||
bool isLastMicroOp() const { return flags[IsLastMicroOp]; }
|
||||
//This flag doesn't do anything yet
|
||||
bool isMicroBranch() const { return flags[IsMicroBranch]; }
|
||||
//@}
|
||||
|
||||
/// Operation class. Used to select appropriate function unit in issue.
|
||||
@@ -346,6 +362,12 @@ class StaticInst : public StaticInstBase
|
||||
*/
|
||||
#include "cpu/static_inst_exec_sigs.hh"
|
||||
|
||||
/**
|
||||
* Return the microop that goes with a particular micropc. This should
|
||||
* only be defined/used in macroops which will contain microops
|
||||
*/
|
||||
virtual StaticInstPtr fetchMicroOp(MicroPC micropc);
|
||||
|
||||
/**
|
||||
* Return the target address for a PC-relative branch.
|
||||
* Invalid if not a PC-relative branch (i.e. isDirectCtrl()
|
||||
|
||||
Reference in New Issue
Block a user