Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/56607 )

 (

5 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
 )Change subject: arch-arm: Implement DSB Shareable as a DVM op
......................................................................

arch-arm: Implement DSB Shareable as a DVM op

JIRA: https://gem5.atlassian.net/browse/GEM5-1097

Change-Id: I52c965817dd9d70feca31d1ec2981ad3a090e6a3
Signed-off-by: Giacomo Travaglini <giacomo.travagl...@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56607
Reviewed-by: Andreas Sandberg <andreas.sandb...@arm.com>
Maintainer: Andreas Sandberg <andreas.sandb...@arm.com>
Tested-by: kokoro <noreply+kok...@google.com>
---
M src/arch/arm/isa/formats/aarch64.isa
M src/arch/arm/isa/insts/misc64.isa
2 files changed, 39 insertions(+), 5 deletions(-)

Approvals:
  Andreas Sandberg: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass




diff --git a/src/arch/arm/isa/formats/aarch64.isa b/src/arch/arm/isa/formats/aarch64.isa
index c7339c6..9574012 100644
--- a/src/arch/arm/isa/formats/aarch64.isa
+++ b/src/arch/arm/isa/formats/aarch64.isa
@@ -407,7 +407,8 @@
                               case 0x0: // OuterShareable
                               case 0x2: // InnerShareable
                               case 0x3: // FullSystem
-                                return new Dsb64Shareable(machInst);
+                                return new Dsb64Shareable(
+                                    machInst, dec.dvmEnabled);
                               default:
                                 GEM5_UNREACHABLE;
                             }
diff --git a/src/arch/arm/isa/insts/misc64.isa b/src/arch/arm/isa/insts/misc64.isa
index 9151b88..f98d894 100644
--- a/src/arch/arm/isa/insts/misc64.isa
+++ b/src/arch/arm/isa/insts/misc64.isa
@@ -179,12 +179,29 @@
     decoder_output += BasicConstructor64.subst(dsbLocalIop)
     exec_output += BasicExecute.subst(dsbLocalIop)

- dsbShareableIop = ArmInstObjParams("dsb", "Dsb64Shareable", "ArmStaticInst", "",
+    dvmCode = '''
+        if (dvmEnabled) {
+            Request::Flags memAccessFlags =
+                Request::STRICT_ORDER|Request::TLBI_SYNC;
+
+            if (!PendingDvm) {
+                memAccessFlags = memAccessFlags | Request::NO_ACCESS;
+            }
+
+            fault = xc->initiateSpecialMemCmd(memAccessFlags);
+
+            PendingDvm = false;
+        }
+    '''
+ dsbShareableIop = ArmInstObjParams("dsb", "Dsb64Shareable", "ArmStaticInst", + { "code" : "", "dvm_code" : dvmCode },
                                        ['IsReadBarrier', 'IsWriteBarrier',
-                                       'IsSerializeAfter'])
-    header_output += BasicDeclare.subst(dsbShareableIop)
-    decoder_output += BasicConstructor64.subst(dsbShareableIop)
+                                        'IsSerializeAfter'])
+    header_output += DvmDeclare.subst(dsbShareableIop)
+    decoder_output += DvmConstructor.subst(dsbShareableIop)
     exec_output += BasicExecute.subst(dsbShareableIop)
+    exec_output += DvmInitiateAcc.subst(dsbShareableIop)
+    exec_output += DvmCompleteAcc.subst(dsbShareableIop)

     dmbIop = ArmInstObjParams("dmb", "Dmb64", "ArmStaticInst", "",
                               ['IsReadBarrier', 'IsWriteBarrier'])

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/56607
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I52c965817dd9d70feca31d1ec2981ad3a090e6a3
Gerrit-Change-Number: 56607
Gerrit-PatchSet: 7
Gerrit-Owner: Giacomo Travaglini <giacomo.travagl...@arm.com>
Gerrit-Reviewer: Andreas Sandberg <andreas.sandb...@arm.com>
Gerrit-Reviewer: Giacomo Travaglini <giacomo.travagl...@arm.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to