From 1ae30c68c1f5159a5e1c557ee33a33aa695d7da5 Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Tue, 14 May 2013 15:06:50 +0200 Subject: arm: Add support for the m5fail pseudo-op --- src/arch/arm/isa/formats/m5ops.isa | 1 + src/arch/arm/isa/insts/m5ops.isa | 11 +++++++++++ 2 files changed, 12 insertions(+) (limited to 'src') 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()); ''' -- cgit v1.2.3