From 7391ea6de63578722d97c9169e60db5b06754137 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Wed, 23 Feb 2011 15:10:49 -0600 Subject: ARM: Do something for ISB, DSB, DMB --- src/arch/arm/isa/formats/misc.isa | 9 +++------ src/arch/arm/isa/insts/misc.isa | 11 ++++++++--- 2 files changed, 11 insertions(+), 9 deletions(-) (limited to 'src/arch') diff --git a/src/arch/arm/isa/formats/misc.isa b/src/arch/arm/isa/formats/misc.isa index 3bcb5c97d..4a9200504 100644 --- a/src/arch/arm/isa/formats/misc.isa +++ b/src/arch/arm/isa/formats/misc.isa @@ -120,14 +120,11 @@ let {{ return new WarnUnimplemented( isRead ? "mrc dccmvau" : "mcr dccmvau", machInst); case MISCREG_CP15ISB: - return new WarnUnimplemented( - isRead ? "mrc cp15isb" : "mcr cp15isb", machInst); + return new Isb(machInst); case MISCREG_CP15DSB: - return new WarnUnimplemented( - isRead ? "mrc cp15dsb" : "mcr cp15dsb", machInst); + return new Dsb(machInst); case MISCREG_CP15DMB: - return new WarnUnimplemented( - isRead ? "mrc cp15dmb" : "mcr cp15dmb", machInst); + return new Dmb(machInst); case MISCREG_ICIALLUIS: return new WarnUnimplemented( isRead ? "mrc icialluis" : "mcr icialluis", machInst); diff --git a/src/arch/arm/isa/insts/misc.isa b/src/arch/arm/isa/insts/misc.isa index ad5021daf..be51d927d 100644 --- a/src/arch/arm/isa/insts/misc.isa +++ b/src/arch/arm/isa/insts/misc.isa @@ -696,19 +696,23 @@ let {{ exec_output += ClrexCompleteAcc.subst(clrexIop) isbCode = ''' + fault = new FlushPipe; ''' isbIop = InstObjParams("isb", "Isb", "PredOp", {"code": isbCode, - "predicate_test": predicateTest}, ['IsSerializing']) + "predicate_test": predicateTest}, + ['IsSerializeAfter']) header_output += BasicDeclare.subst(isbIop) decoder_output += BasicConstructor.subst(isbIop) exec_output += PredOpExecute.subst(isbIop) dsbCode = ''' + fault = new FlushPipe; ''' dsbIop = InstObjParams("dsb", "Dsb", "PredOp", {"code": dsbCode, - "predicate_test": predicateTest},['IsMemBarrier']) + "predicate_test": predicateTest}, + ['IsMemBarrier', 'IsSerializeAfter']) header_output += BasicDeclare.subst(dsbIop) decoder_output += BasicConstructor.subst(dsbIop) exec_output += PredOpExecute.subst(dsbIop) @@ -717,7 +721,8 @@ let {{ ''' dmbIop = InstObjParams("dmb", "Dmb", "PredOp", {"code": dmbCode, - "predicate_test": predicateTest},['IsMemBarrier']) + "predicate_test": predicateTest}, + ['IsMemBarrier']) header_output += BasicDeclare.subst(dmbIop) decoder_output += BasicConstructor.subst(dmbIop) exec_output += PredOpExecute.subst(dmbIop) -- cgit v1.2.3