arm: Add support for the m5fail pseudo-op
authorAndreas Sandberg <andreas@sandberg.pp.se>
Tue, 14 May 2013 13:06:50 +0000 (15:06 +0200)
committerAndreas Sandberg <andreas@sandberg.pp.se>
Tue, 14 May 2013 13:06:50 +0000 (15:06 +0200)
src/arch/arm/isa/formats/m5ops.isa
src/arch/arm/isa/insts/m5ops.isa
util/m5/m5op_arm.S

index 1eb7d3f652578e7438ce98be81ecf3484c4df4a9..26210af0b6446338c23880e644bccf4258656e3a 100644 (file)
@@ -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);
index 272f16b1705a6270bd654c13384617c6b3e66c09..06ed34af8ecb05fb2aafcec37e11d37d5da11094 100644 (file)
@@ -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());
     '''
index 115c7a017d109430505c4a437e0847234d755875..3a43913f7c93c8a2b41452bb1450ac953e9d9ab1 100644 (file)
@@ -90,6 +90,7 @@ SIMPLE_OP(quiesceTime, quiescetime_func, 0)
 SIMPLE_OP(rpns, rpns_func, 0)
 SIMPLE_OP(wakeCPU, wakecpu_func, 0)
 SIMPLE_OP(m5_exit, exit_func, 0)
+SIMPLE_OP(m5_fail, fail_func, 0)
 SIMPLE_OP(m5_initparam, initparam_func, 0)
 SIMPLE_OP(m5_loadsymbol, loadsymbol_func, 0)
 SIMPLE_OP(m5_reset_stats, resetstats_func, 0)