summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/insts/misc.isa
diff options
context:
space:
mode:
authorGene Wu <Gene.Wu@arm.com>2010-08-23 11:18:41 -0500
committerGene Wu <Gene.Wu@arm.com>2010-08-23 11:18:41 -0500
commit7405f4b7740a4f90c7f5946a1cfb39163d7b8b1d (patch)
tree67c92ce16f244361110389d02202fd5ae0afa6be /src/arch/arm/isa/insts/misc.isa
parentaabf478920671b8daf5c38a50442e80310e50671 (diff)
downloadgem5-7405f4b7740a4f90c7f5946a1cfb39163d7b8b1d.tar.xz
ARM: Implement DSB, DMB, ISB
Diffstat (limited to 'src/arch/arm/isa/insts/misc.isa')
-rw-r--r--src/arch/arm/isa/insts/misc.isa27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/arch/arm/isa/insts/misc.isa b/src/arch/arm/isa/insts/misc.isa
index 09364cd23..5a28a9dba 100644
--- a/src/arch/arm/isa/insts/misc.isa
+++ b/src/arch/arm/isa/insts/misc.isa
@@ -679,6 +679,33 @@ let {{
decoder_output += BasicConstructor.subst(clrexIop)
exec_output += PredOpExecute.subst(clrexIop)
+ isbCode = '''
+ '''
+ isbIop = InstObjParams("isb", "Isb", "PredOp",
+ {"code": isbCode,
+ "predicate_test": predicateTest}, ['IsSerializing'])
+ header_output += BasicDeclare.subst(isbIop)
+ decoder_output += BasicConstructor.subst(isbIop)
+ exec_output += PredOpExecute.subst(isbIop)
+
+ dsbCode = '''
+ '''
+ dsbIop = InstObjParams("dsb", "Dsb", "PredOp",
+ {"code": dsbCode,
+ "predicate_test": predicateTest},['IsMemBarrier'])
+ header_output += BasicDeclare.subst(dsbIop)
+ decoder_output += BasicConstructor.subst(dsbIop)
+ exec_output += PredOpExecute.subst(dsbIop)
+
+ dmbCode = '''
+ '''
+ dmbIop = InstObjParams("dmb", "Dmb", "PredOp",
+ {"code": dmbCode,
+ "predicate_test": predicateTest},['IsMemBarrier'])
+ header_output += BasicDeclare.subst(dmbIop)
+ decoder_output += BasicConstructor.subst(dmbIop)
+ exec_output += PredOpExecute.subst(dmbIop)
+
cpsCode = '''
uint32_t mode = bits(imm, 4, 0);
uint32_t f = bits(imm, 5);