summaryrefslogtreecommitdiff
path: root/src/arch/arm
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas@sandberg.pp.se>2013-05-14 15:06:50 +0200
committerAndreas Sandberg <andreas@sandberg.pp.se>2013-05-14 15:06:50 +0200
commit1ae30c68c1f5159a5e1c557ee33a33aa695d7da5 (patch)
treeda5c230cda5adef21a222fdeb8acbd83f53fb3f1 /src/arch/arm
parente1cbe33c724f46b53ae1d4843883a848d6bb9d20 (diff)
downloadgem5-1ae30c68c1f5159a5e1c557ee33a33aa695d7da5.tar.xz
arm: Add support for the m5fail pseudo-op
Diffstat (limited to 'src/arch/arm')
-rw-r--r--src/arch/arm/isa/formats/m5ops.isa1
-rw-r--r--src/arch/arm/isa/insts/m5ops.isa11
2 files changed, 12 insertions, 0 deletions
diff --git a/src/arch/arm/isa/formats/m5ops.isa b/src/arch/arm/isa/formats/m5ops.isa
index 1eb7d3f65..26210af0b 100644
--- a/src/arch/arm/isa/formats/m5ops.isa
+++ b/src/arch/arm/isa/formats/m5ops.isa
@@ -53,6 +53,7 @@ def format M5ops() {{
case 0x11: return new Deprecated_ivle(machInst);
case 0x20: return new Deprecated_exit (machInst);
case 0x21: return new M5exit(machInst);
+ case 0x22: return new M5fail(machInst);
case 0x31: return new Loadsymbol(machInst);
case 0x30: return new Initparam(machInst);
case 0x40: return new Resetstats(machInst);
diff --git a/src/arch/arm/isa/insts/m5ops.isa b/src/arch/arm/isa/insts/m5ops.isa
index 272f16b17..06ed34af8 100644
--- a/src/arch/arm/isa/insts/m5ops.isa
+++ b/src/arch/arm/isa/insts/m5ops.isa
@@ -179,6 +179,17 @@ let {{
decoder_output += BasicConstructor.subst(m5exitIop)
exec_output += PredOpExecute.subst(m5exitIop)
+ m5fail_code = '''
+ PseudoInst::m5fail(xc->tcBase(), join32to64(R1, R0), join32to64(R3, R2));
+ '''
+ m5failIop = InstObjParams("m5fail", "M5fail", "PredOp",
+ { "code": m5fail_code,
+ "predicate_test": predicateTest },
+ ["No_OpClass", "IsNonSpeculative"])
+ header_output += BasicDeclare.subst(m5failIop)
+ decoder_output += BasicConstructor.subst(m5failIop)
+ exec_output += PredOpExecute.subst(m5failIop)
+
loadsymbolCode = '''
PseudoInst::loadsymbol(xc->tcBase());
'''