summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/macroop.isa
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2008-10-12 17:48:44 -0700
committerGabe Black <gblack@eecs.umich.edu>2008-10-12 17:48:44 -0700
commite5f80924671bf0cfaf02c51f4b98d529631733f1 (patch)
tree1bdc1b3d0178e4648bbde6f4de378a20d295d027 /src/arch/x86/isa/macroop.isa
parentc9ea0b73492bf116c836c54199898f29d9664bc0 (diff)
downloadgem5-e5f80924671bf0cfaf02c51f4b98d529631733f1.tar.xz
X86: Make X86's microcode ROM actually do something.
Diffstat (limited to 'src/arch/x86/isa/macroop.isa')
-rw-r--r--src/arch/x86/isa/macroop.isa20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/arch/x86/isa/macroop.isa b/src/arch/x86/isa/macroop.isa
index 4818b926c..b851a92c7 100644
--- a/src/arch/x86/isa/macroop.isa
+++ b/src/arch/x86/isa/macroop.isa
@@ -76,12 +76,13 @@ output header {{
{
protected:
const uint32_t numMicroops;
+ X86ISA::EmulEnv emulEnv;
//Constructor.
Macroop(const char *mnem, ExtMachInst _machInst,
- uint32_t _numMicroops)
+ uint32_t _numMicroops, X86ISA::EmulEnv _emulEnv)
: StaticInst(mnem, _machInst, No_OpClass),
- numMicroops(_numMicroops)
+ numMicroops(_numMicroops), emulEnv(_emulEnv)
{
assert(numMicroops);
microops = new StaticInstPtr[numMicroops];
@@ -107,7 +108,20 @@ output header {{
return mnemonic;
}
+ public:
%(MacroExecPanic)s
+
+ ExtMachInst
+ getExtMachInst()
+ {
+ return machInst;
+ }
+
+ X86ISA::EmulEnv
+ getEmulEnv()
+ {
+ return emulEnv;
+ }
};
}};
@@ -139,7 +153,7 @@ def template MacroDeclare {{
def template MacroConstructor {{
inline X86Macroop::%(class_name)s::%(class_name)s(
ExtMachInst machInst, EmulEnv env)
- : %(base_class)s("%(mnemonic)s", machInst, %(num_microops)s)
+ : %(base_class)s("%(mnemonic)s", machInst, %(num_microops)s, env)
{
%(adjust_env)s;
%(adjust_imm)s;