summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-01-06 22:44:59 -0800
committerGabe Black <gblack@eecs.umich.edu>2009-01-06 22:44:59 -0800
commit9e24d8c599a3090f3ce59a608ff887ac434aa1ca (patch)
treefb5522f754cca46cf5f75d01e8e64b7747de08e6 /src/arch/x86/isa
parent7b7a72158ab194864e7985e68fc5161b563b44a8 (diff)
downloadgem5-9e24d8c599a3090f3ce59a608ff887ac434aa1ca.tar.xz
X86: Move the macroop class out of the isa description into C++.
Diffstat (limited to 'src/arch/x86/isa')
-rw-r--r--src/arch/x86/isa/includes.isa1
-rw-r--r--src/arch/x86/isa/macroop.isa50
2 files changed, 5 insertions, 46 deletions
diff --git a/src/arch/x86/isa/includes.isa b/src/arch/x86/isa/includes.isa
index e523b7e32..cddc4247c 100644
--- a/src/arch/x86/isa/includes.isa
+++ b/src/arch/x86/isa/includes.isa
@@ -97,6 +97,7 @@ output header {{
#include <iostream>
#include "arch/x86/emulenv.hh"
+#include "arch/x86/insts/macroop.hh"
#include "arch/x86/insts/microfpop.hh"
#include "arch/x86/insts/microldstop.hh"
#include "arch/x86/insts/microregop.hh"
diff --git a/src/arch/x86/isa/macroop.isa b/src/arch/x86/isa/macroop.isa
index 7d94dd95c..c5134f336 100644
--- a/src/arch/x86/isa/macroop.isa
+++ b/src/arch/x86/isa/macroop.isa
@@ -72,56 +72,14 @@ def template MacroExecPanic {{
output header {{
// Base class for combinationally generated macroops
- class Macroop : public StaticInst
+ class Macroop : public X86ISA::MacroopBase
{
- protected:
- const uint32_t numMicroops;
- X86ISA::EmulEnv emulEnv;
-
- //Constructor.
+ public:
Macroop(const char *mnem, ExtMachInst _machInst,
uint32_t _numMicroops, X86ISA::EmulEnv _emulEnv)
- : StaticInst(mnem, _machInst, No_OpClass),
- numMicroops(_numMicroops), emulEnv(_emulEnv)
- {
- assert(numMicroops);
- microops = new StaticInstPtr[numMicroops];
- flags[IsMacroop] = true;
- }
-
- ~Macroop()
- {
- delete [] microops;
- }
-
- StaticInstPtr * microops;
-
- StaticInstPtr fetchMicroop(MicroPC microPC)
- {
- assert(microPC < numMicroops);
- return microops[microPC];
- }
-
- std::string generateDisassembly(Addr pc,
- const SymbolTable *symtab) const
- {
- return mnemonic;
- }
-
- public:
+ : MacroopBase(mnem, _machInst, _numMicroops, _emulEnv)
+ {}
%(MacroExecPanic)s
-
- ExtMachInst
- getExtMachInst()
- {
- return machInst;
- }
-
- X86ISA::EmulEnv
- getEmulEnv()
- {
- return emulEnv;
- }
};
}};