[gem5-dev] Change in gem5/gem5[develop]: arm: Return whether a semihosting call was recognized/handled.

2020-02-26 Thread Gabe Black (Gerrit)
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25949 )



Change subject: arm: Return whether a semihosting call was  
recognized/handled.

..

arm: Return whether a semihosting call was recognized/handled.

Change-Id: Ie2da812172fe2f9c1e2b5be95561863bd12920b1
---
M src/arch/arm/semihosting.cc
M src/arch/arm/semihosting.hh
M src/arch/arm/system.cc
M src/arch/arm/system.hh
4 files changed, 18 insertions(+), 14 deletions(-)



diff --git a/src/arch/arm/semihosting.cc b/src/arch/arm/semihosting.cc
index 08728ed..6e58556 100644
--- a/src/arch/arm/semihosting.cc
+++ b/src/arch/arm/semihosting.cc
@@ -153,21 +153,21 @@
tickShift);
 }

-void
+bool
 ArmSemihosting::call64(ThreadContext *tc, bool gem5_ops)
 {
 RegVal op = tc->readIntReg(ArmISA::INTREG_X0 & mask(32));
 if (op > MaxStandardOp && !gem5_ops) {
 unrecognizedCall(
 tc, "Gem5 semihosting op (0x%x) disabled from here.", op);
-return;
+return false;
 }

 auto it = calls.find(op);
 if (it == calls.end()) {
 unrecognizedCall(
 tc, "Unknown aarch64 semihosting call: op = 0x%x", op);
-return;
+return false;
 }
 const SemiCall  = it->second;

@@ -175,23 +175,25 @@
 auto err = call.call64(this, tc);
 semiErrno = err.second;
 DPRINTF(Semihosting, "\t ->: 0x%x, %i\n", err.first, err.second);
+
+return true;
 }

-void
+bool
 ArmSemihosting::call32(ThreadContext *tc, bool gem5_ops)
 {
 RegVal op = tc->readIntReg(ArmISA::INTREG_R0);
 if (op > MaxStandardOp && !gem5_ops) {
 unrecognizedCall(
 tc, "Gem5 semihosting op (0x%x) disabled from here.", op);
-return;
+return false;
 }

 auto it = calls.find(op);
 if (it == calls.end()) {
 unrecognizedCall(
 tc, "Unknown aarch32 semihosting call: op = 0x%x", op);
-return;
+return false;
 }
 const SemiCall  = it->second;

@@ -199,6 +201,8 @@
 auto err = call.call32(this, tc);
 semiErrno = err.second;
 DPRINTF(Semihosting, "\t ->: 0x%x, %i\n", err.first, err.second);
+
+return true;
 }

 void
diff --git a/src/arch/arm/semihosting.hh b/src/arch/arm/semihosting.hh
index 7b575c0..d45aa74 100644
--- a/src/arch/arm/semihosting.hh
+++ b/src/arch/arm/semihosting.hh
@@ -214,9 +214,9 @@
 ArmSemihosting(const ArmSemihostingParams *p);

 /** Perform an Arm Semihosting call from aarch64 code. */
-void call64(ThreadContext *tc, bool gem5_ops=false);
+bool call64(ThreadContext *tc, bool gem5_ops=false);
 /** Perform an Arm Semihosting call from aarch32 code. */
-void call32(ThreadContext *tc, bool gem5_ops=false);
+bool call32(ThreadContext *tc, bool gem5_ops=false);

   public: // SimObject and related interfaces
 void serialize(CheckpointOut ) const override;
diff --git a/src/arch/arm/system.cc b/src/arch/arm/system.cc
index 3cd8858..950caee 100644
--- a/src/arch/arm/system.cc
+++ b/src/arch/arm/system.cc
@@ -291,16 +291,16 @@
 return FullSystem && getArmSystem(tc)->haveSemihosting();
 }

-void
+bool
 ArmSystem::callSemihosting64(ThreadContext *tc, bool gem5_ops)
 {
-getArmSystem(tc)->semihosting->call64(tc, gem5_ops);
+return getArmSystem(tc)->semihosting->call64(tc, gem5_ops);
 }

-void
+bool
 ArmSystem::callSemihosting32(ThreadContext *tc, bool gem5_ops)
 {
-getArmSystem(tc)->semihosting->call32(tc, gem5_ops);
+return getArmSystem(tc)->semihosting->call32(tc, gem5_ops);
 }

 ArmSystem *
diff --git a/src/arch/arm/system.hh b/src/arch/arm/system.hh
index b598977..e890d10 100644
--- a/src/arch/arm/system.hh
+++ b/src/arch/arm/system.hh
@@ -334,10 +334,10 @@
 static bool haveSemihosting(ThreadContext *tc);

 /** Make a Semihosting call from aarch64 */
-static void callSemihosting64(ThreadContext *tc, bool gem5_ops=false);
+static bool callSemihosting64(ThreadContext *tc, bool gem5_ops=false);

 /** Make a Semihosting call from aarch32 */
-static void callSemihosting32(ThreadContext *tc, bool gem5_ops=false);
+static bool callSemihosting32(ThreadContext *tc, bool gem5_ops=false);
 };

 class GenericArmSystem : public ArmSystem

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/25949
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: Ie2da812172fe2f9c1e2b5be95561863bd12920b1
Gerrit-Change-Number: 25949
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[develop]: arm: Make the semihosting implementation use GuestABI.

2020-02-26 Thread Gabe Black (Gerrit)
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25946 )



Change subject: arm: Make the semihosting implementation use GuestABI.
..

arm: Make the semihosting implementation use GuestABI.

Change-Id: Ie99e7d79c08c039384250fab0c98117554c93128
---
M src/arch/arm/isa/insts/misc.isa
M src/arch/arm/isa/insts/misc64.isa
M src/arch/arm/semihosting.cc
M src/arch/arm/semihosting.hh
M src/arch/arm/system.cc
M src/arch/arm/system.hh
6 files changed, 532 insertions(+), 326 deletions(-)



diff --git a/src/arch/arm/isa/insts/misc.isa  
b/src/arch/arm/isa/insts/misc.isa

index f0394be..197a9cd 100644
--- a/src/arch/arm/isa/insts/misc.isa
+++ b/src/arch/arm/isa/insts/misc.isa
@@ -43,7 +43,7 @@
 const auto semihost_imm = Thumb? 0xAB : 0x123456;

 if (ArmSystem::haveSemihosting(tc) && imm == semihost_imm) {
-R0 = ArmSystem::callSemihosting32(tc, R0, R1);
+ArmSystem::callSemihosting32(tc);
 } else {
 fault = std::make_shared(machInst, imm);
 }
@@ -66,7 +66,7 @@
 const auto semihost_imm = Thumb? 0x3C : 0xF000;

 if (ArmSystem::haveSemihosting(tc) && imm == semihost_imm) {
-R0 = ArmSystem::callSemihosting32(tc, R0, R1);
+ArmSystem::callSemihosting32(tc);
 } else {
 // HLT instructions aren't implemented, so treat them as undefined
 // instructions.
@@ -80,7 +80,7 @@
  "predicate_test": predicateTest,
  "thumb_semihost": '0x3C',
  "arm_semihost": '0xF000' },
-   ["IsNonSpeculative"])
+   ["IsNonSpeculative", "IsSerializeAfter"])
 header_output += ImmOpDeclare.subst(hltIop)
 decoder_output += SemihostConstructor.subst(hltIop)
 exec_output += PredOpExecute.subst(hltIop)
diff --git a/src/arch/arm/isa/insts/misc64.isa  
b/src/arch/arm/isa/insts/misc64.isa

index 88c68e6..e2cfb41 100644
--- a/src/arch/arm/isa/insts/misc64.isa
+++ b/src/arch/arm/isa/insts/misc64.isa
@@ -186,7 +186,7 @@
 hltCode = '''
 ThreadContext *tc = xc->tcBase();
 if (ArmSystem::haveSemihosting(tc) && imm == 0xF000) {
-X0 = ArmSystem::callSemihosting64(tc, X0 & mask(32), X1);
+ArmSystem::callSemihosting64(tc);
 } else {
 // HLT instructions aren't implemented, so treat them as undefined
 // instructions.
@@ -197,7 +197,7 @@
 '''

 hltIop = InstObjParams("hlt", "Hlt64", "ImmOp64",
-   hltCode, ["IsNonSpeculative"])
+   hltCode,  
["IsNonSpeculative", "IsSerializeAfter"])

 header_output += ImmOp64Declare.subst(hltIop)
 decoder_output += SemihostConstructor64.subst(hltIop)
 exec_output += BasicExecute.subst(hltIop)
diff --git a/src/arch/arm/semihosting.cc b/src/arch/arm/semihosting.cc
index 4f897e2..fa918d2 100644
--- a/src/arch/arm/semihosting.cc
+++ b/src/arch/arm/semihosting.cc
@@ -52,39 +52,37 @@
 #include "sim/system.hh"

 const std::map ArmSemihosting::calls{
-{ SYS_OPEN, { "SYS_OPEN", ::callOpen, 3, 3 } },
-{ SYS_CLOSE,{ "SYS_CLOSE", ::callClose, 1, 1 } },
-
-// Write(C|0) are special since we want to read the character
-// manually. We therefore declare them as having 0 params.
-{ SYS_WRITEC,   { "SYS_WRITEC", ::callWriteC, 0, 0 } },
-{ SYS_WRITE0,   { "SYS_WRITE0", ::callWrite0, 1, 1 } },
-
-{ SYS_WRITE,{ "SYS_WRITE", ::callWrite, 3, 3 } },
-{ SYS_READ, { "SYS_READ", ::callRead, 3, 3 } },
-{ SYS_READC,{ "SYS_READC", ::callReadC, 0, 0 } },
-{ SYS_ISERROR,  { "SYS_ISERROR", ::callIsError, 1, 1 }  
},

-{ SYS_ISTTY,{ "SYS_ISTTY", ::callIsTTY, 1, 1 } },
-{ SYS_SEEK, { "SYS_SEEK", ::callSeek, 2, 2 } },
-{ SYS_FLEN, { "SYS_FLEN", ::callFLen, 1, 1 } },
-{ SYS_TMPNAM,   { "SYS_TMPNAM", ::callTmpNam, 3, 3 } },
-{ SYS_REMOVE,   { "SYS_REMOVE", ::callRemove, 2, 2} },
-{ SYS_RENAME,   { "SYS_RENAME", ::callRename, 4, 4} },
-{ SYS_CLOCK,{ "SYS_CLOCK", ::callClock, 0, 0} },
-{ SYS_TIME, { "SYS_TIME", ::callTime, 0, 0} },
-{ SYS_SYSTEM,   { "SYS_SYSTEM", ::callSystem, 2, 2} },
-{ SYS_ERRNO,{ "SYS_ERRNO", ::callErrno, 0, 0 } },
+{ SYS_OPEN, { "SYS_OPEN", ::callOpen } },
+{ SYS_CLOSE,{ "SYS_CLOSE", ::callClose } },
+{ SYS_WRITEC,   { "SYS_WRITEC", ::callWriteC } },
+{ SYS_WRITE0,   { "SYS_WRITE0", ::callWrite0 } },
+{ SYS_WRITE,{ "SYS_WRITE", ::callWrite } },
+{ SYS_READ, { "SYS_READ", ::callRead } },
+{ SYS_READC,{ "SYS_READC", ::callReadC } },
+{ SYS_ISERROR,  { "SYS_ISERROR", ::callIsError } },
+{ SYS_ISTTY,{ "SYS_ISTTY", ::callIsTTY } },
+{ SYS_SEEK, { "SYS_SEEK", ::callSeek } },
+{ SYS_FLEN, { "SYS_FLEN", ::callFLen } },
+{ SYS_TMPNAM,   { "SYS_TMPNAM", ::callTmpNam } },
+{ SYS_REMOVE,   { 

[gem5-dev] Change in gem5/gem5[develop]: arm: Optionally enable gem5 extended semihosting calls.

2020-02-26 Thread Gabe Black (Gerrit)
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25947 )



Change subject: arm: Optionally enable gem5 extended semihosting calls.
..

arm: Optionally enable gem5 extended semihosting calls.

Change-Id: I34b01a4439c8a88242971ac486e34d810b054baf
---
M src/arch/arm/semihosting.cc
M src/arch/arm/semihosting.hh
M src/arch/arm/system.cc
M src/arch/arm/system.hh
4 files changed, 20 insertions(+), 10 deletions(-)



diff --git a/src/arch/arm/semihosting.cc b/src/arch/arm/semihosting.cc
index fa918d2..08728ed 100644
--- a/src/arch/arm/semihosting.cc
+++ b/src/arch/arm/semihosting.cc
@@ -154,9 +154,14 @@
 }

 void
-ArmSemihosting::call64(ThreadContext *tc)
+ArmSemihosting::call64(ThreadContext *tc, bool gem5_ops)
 {
 RegVal op = tc->readIntReg(ArmISA::INTREG_X0 & mask(32));
+if (op > MaxStandardOp && !gem5_ops) {
+unrecognizedCall(
+tc, "Gem5 semihosting op (0x%x) disabled from here.", op);
+return;
+}

 auto it = calls.find(op);
 if (it == calls.end()) {
@@ -173,9 +178,14 @@
 }

 void
-ArmSemihosting::call32(ThreadContext *tc)
+ArmSemihosting::call32(ThreadContext *tc, bool gem5_ops)
 {
 RegVal op = tc->readIntReg(ArmISA::INTREG_R0);
+if (op > MaxStandardOp && !gem5_ops) {
+unrecognizedCall(
+tc, "Gem5 semihosting op (0x%x) disabled from here.", op);
+return;
+}

 auto it = calls.find(op);
 if (it == calls.end()) {
diff --git a/src/arch/arm/semihosting.hh b/src/arch/arm/semihosting.hh
index fa070b6..7b575c0 100644
--- a/src/arch/arm/semihosting.hh
+++ b/src/arch/arm/semihosting.hh
@@ -214,9 +214,9 @@
 ArmSemihosting(const ArmSemihostingParams *p);

 /** Perform an Arm Semihosting call from aarch64 code. */
-void call64(ThreadContext *tc);
+void call64(ThreadContext *tc, bool gem5_ops=false);
 /** Perform an Arm Semihosting call from aarch32 code. */
-void call32(ThreadContext *tc);
+void call32(ThreadContext *tc, bool gem5_ops=false);

   public: // SimObject and related interfaces
 void serialize(CheckpointOut ) const override;
diff --git a/src/arch/arm/system.cc b/src/arch/arm/system.cc
index e26dbc0..3cd8858 100644
--- a/src/arch/arm/system.cc
+++ b/src/arch/arm/system.cc
@@ -292,15 +292,15 @@
 }

 void
-ArmSystem::callSemihosting64(ThreadContext *tc)
+ArmSystem::callSemihosting64(ThreadContext *tc, bool gem5_ops)
 {
-getArmSystem(tc)->semihosting->call64(tc);
+getArmSystem(tc)->semihosting->call64(tc, gem5_ops);
 }

 void
-ArmSystem::callSemihosting32(ThreadContext *tc)
+ArmSystem::callSemihosting32(ThreadContext *tc, bool gem5_ops)
 {
-getArmSystem(tc)->semihosting->call32(tc);
+getArmSystem(tc)->semihosting->call32(tc, gem5_ops);
 }

 ArmSystem *
diff --git a/src/arch/arm/system.hh b/src/arch/arm/system.hh
index b712d56..b598977 100644
--- a/src/arch/arm/system.hh
+++ b/src/arch/arm/system.hh
@@ -334,10 +334,10 @@
 static bool haveSemihosting(ThreadContext *tc);

 /** Make a Semihosting call from aarch64 */
-static void callSemihosting64(ThreadContext *tc);
+static void callSemihosting64(ThreadContext *tc, bool gem5_ops=false);

 /** Make a Semihosting call from aarch32 */
-static void callSemihosting32(ThreadContext *tc);
+static void callSemihosting32(ThreadContext *tc, bool gem5_ops=false);
 };

 class GenericArmSystem : public ArmSystem

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/25947
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: I34b01a4439c8a88242971ac486e34d810b054baf
Gerrit-Change-Number: 25947
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[develop]: arm: Expose the constants which select a semihosting operation.

2020-02-26 Thread Gabe Black (Gerrit)
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25945 )



Change subject: arm: Expose the constants which select a semihosting  
operation.

..

arm: Expose the constants which select a semihosting operation.

Give these constants meaningful names instead of opaque constants only
visible in the .cc file.

Change-Id: Ib88912dae79960f785099c236c337db52a69d563
---
M src/arch/arm/semihosting.cc
M src/arch/arm/semihosting.hh
2 files changed, 56 insertions(+), 24 deletions(-)



diff --git a/src/arch/arm/semihosting.cc b/src/arch/arm/semihosting.cc
index e85fe7e..4f897e2 100644
--- a/src/arch/arm/semihosting.cc
+++ b/src/arch/arm/semihosting.cc
@@ -52,37 +52,39 @@
 #include "sim/system.hh"

 const std::map ArmSemihosting::calls{
-{ 0x01, { "SYS_OPEN", ::callOpen, 3, 3 } },
-{ 0x02, { "SYS_CLOSE", ::callClose, 1, 1 } },
+{ SYS_OPEN, { "SYS_OPEN", ::callOpen, 3, 3 } },
+{ SYS_CLOSE,{ "SYS_CLOSE", ::callClose, 1, 1 } },

 // Write(C|0) are special since we want to read the character
 // manually. We therefore declare them as having 0 params.
-{ 0x03, { "SYS_WRITEC", ::callWriteC, 0, 0 } },
-{ 0x04, { "SYS_WRITE0", ::callWrite0, 1, 1 } },
+{ SYS_WRITEC,   { "SYS_WRITEC", ::callWriteC, 0, 0 } },
+{ SYS_WRITE0,   { "SYS_WRITE0", ::callWrite0, 1, 1 } },

-{ 0x05, { "SYS_WRITE", ::callWrite, 3, 3 } },
-{ 0x06, { "SYS_READ", ::callRead, 3, 3 } },
-{ 0x07, { "SYS_READC", ::callReadC, 0, 0 } },
-{ 0x08, { "SYS_ISERROR", ::callIsError, 1, 1 } },
-{ 0x09, { "SYS_ISTTY", ::callIsTTY, 1, 1 } },
-{ 0x0A, { "SYS_SEEK", ::callSeek, 2, 2 } },
-{ 0x0C, { "SYS_FLEN", ::callFLen, 1, 1 } },
-{ 0x0D, { "SYS_TMPNAM", ::callTmpNam, 3, 3 } },
-{ 0x0E, { "SYS_REMOVE", ::callRemove, 2, 2} },
-{ 0x0F, { "SYS_RENAME", ::callRename, 4, 4} },
-{ 0x10, { "SYS_CLOCK", ::callClock, 0, 0} },
-{ 0x11, { "SYS_TIME", ::callTime, 0, 0} },
-{ 0x12, { "SYS_SYSTEM", ::callSystem, 2, 2} },
-{ 0x13, { "SYS_ERRNO", ::callErrno, 0, 0 } },
-{ 0x15, { "SYS_GET_CMDLINE", ::callGetCmdLine, 2, 2} },
-{ 0x16, { "SYS_HEAPINFO", ::callHeapInfo, 1, 1} },
+{ SYS_WRITE,{ "SYS_WRITE", ::callWrite, 3, 3 } },
+{ SYS_READ, { "SYS_READ", ::callRead, 3, 3 } },
+{ SYS_READC,{ "SYS_READC", ::callReadC, 0, 0 } },
+{ SYS_ISERROR,  { "SYS_ISERROR", ::callIsError, 1, 1 }  
},

+{ SYS_ISTTY,{ "SYS_ISTTY", ::callIsTTY, 1, 1 } },
+{ SYS_SEEK, { "SYS_SEEK", ::callSeek, 2, 2 } },
+{ SYS_FLEN, { "SYS_FLEN", ::callFLen, 1, 1 } },
+{ SYS_TMPNAM,   { "SYS_TMPNAM", ::callTmpNam, 3, 3 } },
+{ SYS_REMOVE,   { "SYS_REMOVE", ::callRemove, 2, 2} },
+{ SYS_RENAME,   { "SYS_RENAME", ::callRename, 4, 4} },
+{ SYS_CLOCK,{ "SYS_CLOCK", ::callClock, 0, 0} },
+{ SYS_TIME, { "SYS_TIME", ::callTime, 0, 0} },
+{ SYS_SYSTEM,   { "SYS_SYSTEM", ::callSystem, 2, 2} },
+{ SYS_ERRNO,{ "SYS_ERRNO", ::callErrno, 0, 0 } },
+{ SYS_GET_CMDLINE,
+{ "SYS_GET_CMDLINE", ::callGetCmdLine, 2, 2} },
+{ SYS_HEAPINFO, { "SYS_HEAPINFO", ::callHeapInfo, 1, 1}  
},


 // Exit is special and requires custom handling in aarch32.
-{ 0x18, { "SYS_EXIT", ::callExit, 0, 2 } },
-{ 0x20, { "SYS_EXIT_EXTENDED", ::callExitExtended, 2, 2  
} },

+{ SYS_EXIT, { "SYS_EXIT", ::callExit, 0, 2 } },
+{ SYS_EXIT_EXTENDED,
+{ "SYS_EXIT_EXTENDED", ::callExitExtended, 2, 2 } },

-{ 0x30, { "SYS_ELAPSED", ::callElapsed, 0, 0 } },
-{ 0x31, { "SYS_TICKFREQ", ::callTickFreq, 0, 0 } },
+{ SYS_ELAPSED,  { "SYS_ELAPSED", ::callElapsed, 0, 0 }  
},
+{ SYS_TICKFREQ, { "SYS_TICKFREQ", ::callTickFreq, 0, 0  
} },

 };

 const std::vector ArmSemihosting::fmodes{
diff --git a/src/arch/arm/semihosting.hh b/src/arch/arm/semihosting.hh
index 3b5b46e..104b479 100644
--- a/src/arch/arm/semihosting.hh
+++ b/src/arch/arm/semihosting.hh
@@ -68,6 +68,36 @@
 class ArmSemihosting : public SimObject
 {
   public:
+
+enum Operation {
+SYS_OPEN = 0x01,
+SYS_CLOSE = 0x02,
+SYS_WRITEC = 0x03,
+SYS_WRITE0 = 0x04,
+SYS_WRITE = 0x05,
+SYS_READ = 0x06,
+SYS_READC = 0x07,
+SYS_ISERROR = 0x08,
+SYS_ISTTY = 0x09,
+SYS_SEEK = 0x0A,
+SYS_FLEN = 0x0C,
+SYS_TMPNAM = 0x0D,
+SYS_REMOVE = 0x0E,
+SYS_RENAME = 0x0F,
+SYS_CLOCK = 0x10,
+SYS_TIME = 0x11,
+SYS_SYSTEM = 0x12,
+SYS_ERRNO = 0x13,
+SYS_GET_CMDLINE = 0x15,
+SYS_HEAPINFO = 0x16,
+SYS_EXIT = 0x18,
+SYS_EXIT_EXTENDED = 0x20,
+SYS_ELAPSED = 0x30,
+SYS_TICKFREQ = 0x31,
+
+MaxStandardOp = 0xFF
+};
+
 ArmSemihosting(const ArmSemihostingParams *p);

 /** Perform an Arm Semihosting call from aarch64 code. */

--
To view, visit 

[gem5-dev] Change in gem5/gem5[develop]: arch, sim: Return whether or not a pseudo inst was recognized.

2020-02-26 Thread Gabe Black (Gerrit)
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25948 )



Change subject: arch,sim: Return whether or not a pseudo inst was  
recognized.

..

arch,sim: Return whether or not a pseudo inst was recognized.

Change-Id: I3e71c277f175c69af0d1adeb3299d88d095dfa84
---
M src/arch/arm/kvm/arm_cpu.cc
M src/arch/arm/mmapped_ipr.hh
M src/arch/x86/mmapped_ipr.hh
M src/sim/pseudo_inst.hh
4 files changed, 48 insertions(+), 37 deletions(-)



diff --git a/src/arch/arm/kvm/arm_cpu.cc b/src/arch/arm/kvm/arm_cpu.cc
index 02e6240..688cbd1 100644
--- a/src/arch/arm/kvm/arm_cpu.cc
+++ b/src/arch/arm/kvm/arm_cpu.cc
@@ -320,8 +320,8 @@
 const uint8_t func((reg_ip >> 8) & 0xFF);

 DPRINTF(Kvm, "KVM Hypercall: %#x/%#x\n", func, subfunc);
-const uint64_t ret =
-PseudoInst::pseudoInst(getContext(0), func);
+uint64_t ret;
+PseudoInst::pseudoInst(getContext(0), func, ret);

 // Just set the return value using the KVM API instead of messing
 // with the context. We could have used the context, but that
diff --git a/src/arch/arm/mmapped_ipr.hh b/src/arch/arm/mmapped_ipr.hh
index 7df6667..92b11dc 100644
--- a/src/arch/arm/mmapped_ipr.hh
+++ b/src/arch/arm/mmapped_ipr.hh
@@ -55,7 +55,8 @@
 if (m5opRange.contains(addr)) {
 uint8_t func;
 PseudoInst::decodeAddrOffset(addr - m5opRange.start(), func);
-uint64_t ret = PseudoInst::pseudoInst(tc, func);
+uint64_t ret;
+PseudoInst::pseudoInst(tc, func, ret);
 pkt->setLE(ret);
 }
 return Cycles(1);
@@ -68,8 +69,9 @@
 auto m5opRange = tc->getSystemPtr()->m5opRange();
 if (m5opRange.contains(addr)) {
 uint8_t func;
+uint64_t ret;
 PseudoInst::decodeAddrOffset(addr - m5opRange.start(), func);
-PseudoInst::pseudoInst(tc, func);
+PseudoInst::pseudoInst(tc, func, ret);
 }
 return Cycles(1);
 }
diff --git a/src/arch/x86/mmapped_ipr.hh b/src/arch/x86/mmapped_ipr.hh
index 5b0a1e9..e2f0ccc 100644
--- a/src/arch/x86/mmapped_ipr.hh
+++ b/src/arch/x86/mmapped_ipr.hh
@@ -62,7 +62,8 @@
 if (m5opRange.contains(addr)) {
 uint8_t func;
 PseudoInst::decodeAddrOffset(addr - m5opRange.start(), func);
-uint64_t ret = PseudoInst::pseudoInst(tc,  
func);

+uint64_t ret;
+PseudoInst::pseudoInst(tc, func, ret);
 pkt->setLE(ret);
 } else {
 Addr offset = addr & mask(3);
@@ -83,7 +84,8 @@
 if (m5opRange.contains(addr)) {
 uint8_t func;
 PseudoInst::decodeAddrOffset(addr - m5opRange.start(), func);
-PseudoInst::pseudoInst(tc, func);
+uint64_t ret;
+PseudoInst::pseudoInst(tc, func, ret);
 } else {
 Addr offset = addr & mask(3);
 MiscRegIndex index = (MiscRegIndex)(addr / sizeof(RegVal));
diff --git a/src/sim/pseudo_inst.hh b/src/sim/pseudo_inst.hh
index 9be742e..5b7a073 100644
--- a/src/sim/pseudo_inst.hh
+++ b/src/sim/pseudo_inst.hh
@@ -130,100 +130,109 @@
  * manner using the ISA-specific getArguments functions.
  *
  * @param func M5 pseudo op major function number (see utility/m5/m5ops.h)
+ * @param result A reference to a uint64_t to store a result in.
+ * @return Whether the pseudo instruction was recognized/handled.
  */

 template 
-uint64_t
-pseudoInst(ThreadContext *tc, uint8_t func)
+bool
+pseudoInst(ThreadContext *tc, uint8_t func, uint64_t )
 {
 DPRINTF(PseudoInst, "PseudoInst::pseudoInst(%i)\n", func);

+result = 0;
+
 switch (func) {
   case M5OP_ARM:
 invokeSimcall(tc, arm);
-break;
+return true;

   case M5OP_QUIESCE:
 invokeSimcall(tc, quiesce);
-break;
+return true;

   case M5OP_QUIESCE_NS:
 invokeSimcall(tc, quiesceNs);
-break;
+return true;

   case M5OP_QUIESCE_CYCLE:
 invokeSimcall(tc, quiesceCycles);
-break;
+return true;

   case M5OP_QUIESCE_TIME:
-return invokeSimcall(tc, quiesceTime);
+result = invokeSimcall(tc, quiesceTime);
+return true;

   case M5OP_RPNS:
-return invokeSimcall(tc, rpns);
+result = invokeSimcall(tc, rpns);
+return true;

   case M5OP_WAKE_CPU:
 invokeSimcall(tc, wakeCPU);
-break;
+return true;

   case M5OP_EXIT:
 invokeSimcall(tc, m5exit);
-break;
+return true;

   case M5OP_FAIL:
 invokeSimcall(tc, m5fail);
-break;
+return true;

   case M5OP_INIT_PARAM:
-return invokeSimcall(tc, initParam);
+result = invokeSimcall(tc, initParam);
+return true;

   case M5OP_LOAD_SYMBOL:
 invokeSimcall(tc, loadsymbol);
-break;
+return true;

   case M5OP_RESET_STATS:
 invokeSimcall(tc, resetstats);

[gem5-dev] Change in gem5/gem5[develop]: arm: Add a gem5 specific pseudo op semihosting call.

2020-02-26 Thread Gabe Black (Gerrit)
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25950 )



Change subject: arm: Add a gem5 specific pseudo op semihosting call.
..

arm: Add a gem5 specific pseudo op semihosting call.

This is in the range of call numbers set aside for extensions. When
called, it will extract the function to use from the first argument
slot. Then it calls the pseudoInst dispatching function using an ABI
which drops the return value (which is handled by semihosting itself)
and which extracts arguments from the remaining slots in the param
structure.

Change-Id: Ic4817f2b1e6aad7784af77a1a494cf614d4d4c6c
---
M src/arch/arm/semihosting.cc
M src/arch/arm/semihosting.hh
2 files changed, 91 insertions(+), 1 deletion(-)



diff --git a/src/arch/arm/semihosting.cc b/src/arch/arm/semihosting.cc
index 6e58556..c919b49 100644
--- a/src/arch/arm/semihosting.cc
+++ b/src/arch/arm/semihosting.cc
@@ -48,6 +48,7 @@
 #include "mem/secure_port_proxy.hh"
 #include "params/ArmSemihosting.hh"
 #include "sim/byteswap.hh"
+#include "sim/pseudo_inst.hh"
 #include "sim/sim_exit.hh"
 #include "sim/system.hh"

@@ -83,6 +84,9 @@
 { SYS_ELAPSED,  { "SYS_ELAPSED", ::callElapsed32,
  ::callElapsed64 } },
 { SYS_TICKFREQ, { "SYS_TICKFREQ", ::callTickFreq } },
+{ SYS_GEM5_PSEUDO_OP,
+{ "SYS_GEM5_PSEUDO_OP", ::callGem5PseudoOp32,
+::callGem5PseudoOp64 } },
 };

 const std::vector ArmSemihosting::fmodes{
@@ -651,6 +655,87 @@
 return retOK(semiTick(SimClock::Frequency));
 }

+
+struct SemiPseudoAbi32 : public ArmSemihosting::Abi32
+{
+class Position : public ArmSemihosting::Abi32::Position
+{
+  public:
+Position(const ThreadContext *tc) :  
ArmSemihosting::Abi32::Position(tc)

+{
+// Use getAddr() to skip the func number in the first slot.
+getAddr();
+}
+};
+};
+
+struct SemiPseudoAbi64 : public ArmSemihosting::Abi64
+{
+class Position : public ArmSemihosting::Abi64::Position
+{
+  public:
+Position(const ThreadContext *tc) :  
ArmSemihosting::Abi64::Position(tc)

+{
+// Use getAddr() to skip the func number in the first slot.
+getAddr();
+}
+};
+};
+
+namespace GuestABI
+{
+
+// Ignore return values since those will be handled by semihosting.
+template 
+struct Result
+{
+static void store(ThreadContext *tc, const T ) {}
+};
+template 
+struct Result
+{
+static void store(ThreadContext *tc, const T ) {}
+};
+
+// Handle arguments the same as for semihosting operations. Skipping the  
first

+// slot is handled internally by the Position type.
+template 
+struct Argument :
+public Argument
+{};
+template 
+struct Argument :
+public Argument
+{};
+
+} // namespace GuestABI
+
+ArmSemihosting::RetErrno
+ArmSemihosting::callGem5PseudoOp32(ThreadContext *tc, uint32_t  
encoded_func)

+{
+uint8_t func;
+PseudoInst::decodeAddrOffset(encoded_func, func);
+
+uint64_t ret;
+if (PseudoInst::pseudoInst(tc, func, ret))
+return retOK(ret);
+else
+return retError(EINVAL);
+}
+
+ArmSemihosting::RetErrno
+ArmSemihosting::callGem5PseudoOp64(ThreadContext *tc, uint64_t  
encoded_func)

+{
+uint8_t func;
+PseudoInst::decodeAddrOffset(encoded_func, func);
+
+uint64_t ret;
+if (PseudoInst::pseudoInst(tc, func, ret))
+return retOK(ret);
+else
+return retError(EINVAL);
+}
+
 FILE *
 ArmSemihosting::getSTDIO(const char *stream_name,
  const std::string , const char *mode)
diff --git a/src/arch/arm/semihosting.hh b/src/arch/arm/semihosting.hh
index d45aa74..07bd739 100644
--- a/src/arch/arm/semihosting.hh
+++ b/src/arch/arm/semihosting.hh
@@ -208,7 +208,9 @@
 SYS_ELAPSED = 0x30,
 SYS_TICKFREQ = 0x31,

-MaxStandardOp = 0xFF
+MaxStandardOp = 0xFF,
+
+SYS_GEM5_PSEUDO_OP = 0x100
 };

 ArmSemihosting(const ArmSemihostingParams *p);
@@ -544,6 +546,9 @@
 RetErrno callElapsed64(ThreadContext *tc, InPlaceArg ticks);
 RetErrno callTickFreq(ThreadContext *tc);

+RetErrno callGem5PseudoOp32(ThreadContext *tc, uint32_t encoded_func);
+RetErrno callGem5PseudoOp64(ThreadContext *tc, uint64_t encoded_func);
+
 template 
 void
 unrecognizedCall(ThreadContext *tc, const char *format, uint64_t op)

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/25950
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: Ic4817f2b1e6aad7784af77a1a494cf614d4d4c6c
Gerrit-Change-Number: 25950
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org

[gem5-dev] Change in gem5/gem5[develop]: arm: Use a const ThreadContext * and readMiscRegNoEffect in places.

2020-02-26 Thread Gabe Black (Gerrit)
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25944 )



Change subject: arm: Use a const ThreadContext * and readMiscRegNoEffect in  
places.

..

arm: Use a const ThreadContext * and readMiscRegNoEffect in places.

Unlike readMiscReg, readMiscRegNoEffect won't have any read related
side effects and so can be used on a const ThreadContext. Also, using
a const ThreadContext * in a few functions which don't actually intend
to change state makes them usable in more situations.

Change-Id: I4fe538ba1158b25f512d3cccd779e12f6c91da6c
---
M src/arch/arm/utility.cc
M src/arch/arm/utility.hh
2 files changed, 10 insertions(+), 10 deletions(-)



diff --git a/src/arch/arm/utility.cc b/src/arch/arm/utility.cc
index facb7f8..e1dffaf 100644
--- a/src/arch/arm/utility.cc
+++ b/src/arch/arm/utility.cc
@@ -397,17 +397,17 @@
 }

 bool
-isBigEndian64(ThreadContext *tc)
+isBigEndian64(const ThreadContext *tc)
 {
 switch (currEL(tc)) {
   case EL3:
-return ((SCTLR) tc->readMiscReg(MISCREG_SCTLR_EL3)).ee;
+return ((SCTLR) tc->readMiscRegNoEffect(MISCREG_SCTLR_EL3)).ee;
   case EL2:
-return ((SCTLR) tc->readMiscReg(MISCREG_SCTLR_EL2)).ee;
+return ((SCTLR) tc->readMiscRegNoEffect(MISCREG_SCTLR_EL2)).ee;
   case EL1:
-return ((SCTLR) tc->readMiscReg(MISCREG_SCTLR_EL1)).ee;
+return ((SCTLR) tc->readMiscRegNoEffect(MISCREG_SCTLR_EL1)).ee;
   case EL0:
-return ((SCTLR) tc->readMiscReg(MISCREG_SCTLR_EL1)).e0e;
+return ((SCTLR) tc->readMiscRegNoEffect(MISCREG_SCTLR_EL1)).e0e;
   default:
 panic("Invalid exception level");
 break;
diff --git a/src/arch/arm/utility.hh b/src/arch/arm/utility.hh
index f16c0b5..4636d17 100644
--- a/src/arch/arm/utility.hh
+++ b/src/arch/arm/utility.hh
@@ -131,14 +131,14 @@
 bool inAArch64(ThreadContext *tc);

 static inline OperatingMode
-currOpMode(ThreadContext *tc)
+currOpMode(const ThreadContext *tc)
 {
-CPSR cpsr = tc->readMiscReg(MISCREG_CPSR);
+CPSR cpsr = tc->readMiscRegNoEffect(MISCREG_CPSR);
 return (OperatingMode) (uint8_t) cpsr.mode;
 }

 static inline ExceptionLevel
-currEL(ThreadContext *tc)
+currEL(const ThreadContext *tc)
 {
 return opModeToEL(currOpMode(tc));
 }
@@ -182,7 +182,7 @@
  */
 bool ELIsInHost(ThreadContext *tc, ExceptionLevel el);

-bool isBigEndian64(ThreadContext *tc);
+bool isBigEndian64(const ThreadContext *tc);

 /**
  * badMode is checking if the execution mode provided as an argument is
@@ -368,7 +368,7 @@
  */
 uint8_t encodePhysAddrRange64(int pa_size);

-inline ByteOrder byteOrder(ThreadContext *tc)
+inline ByteOrder byteOrder(const ThreadContext *tc)
 {
 return isBigEndian64(tc) ? BigEndianByteOrder : LittleEndianByteOrder;
 };

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/25944
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: I4fe538ba1158b25f512d3cccd779e12f6c91da6c
Gerrit-Change-Number: 25944
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[develop]: arm: Add a callSemihosting method that figures out the width.

2020-02-26 Thread Gabe Black (Gerrit)
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25951 )



Change subject: arm: Add a callSemihosting method that figures out the  
width.

..

arm: Add a callSemihosting method that figures out the width.

Change-Id: Ic94987fffd04648932e5dd085ffeef8500e335cf
---
M src/arch/arm/system.cc
M src/arch/arm/system.hh
2 files changed, 12 insertions(+), 0 deletions(-)



diff --git a/src/arch/arm/system.cc b/src/arch/arm/system.cc
index 950caee..e25e201 100644
--- a/src/arch/arm/system.cc
+++ b/src/arch/arm/system.cc
@@ -303,6 +303,15 @@
 return getArmSystem(tc)->semihosting->call32(tc, gem5_ops);
 }

+bool
+ArmSystem::callSemihosting(ThreadContext *tc, bool gem5_ops)
+{
+if (ArmISA::inAArch64(tc))
+return callSemihosting64(tc, gem5_ops);
+else
+return callSemihosting32(tc, gem5_ops);
+}
+
 ArmSystem *
 ArmSystemParams::create()
 {
diff --git a/src/arch/arm/system.hh b/src/arch/arm/system.hh
index e890d10..709a12e 100644
--- a/src/arch/arm/system.hh
+++ b/src/arch/arm/system.hh
@@ -338,6 +338,9 @@

 /** Make a Semihosting call from aarch32 */
 static bool callSemihosting32(ThreadContext *tc, bool gem5_ops=false);
+
+/** Make a Semihosting call from either aarch64 or aarch32 */
+static bool callSemihosting(ThreadContext *tc, bool gem5_ops=false);
 };

 class GenericArmSystem : public ArmSystem

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/25951
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: Ic94987fffd04648932e5dd085ffeef8500e335cf
Gerrit-Change-Number: 25951
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[develop]: cpu: update info related direction into BP if mispredicted.

2020-02-26 Thread Trivikram Reddy (Gerrit)
Trivikram Reddy has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25903 )



Change subject: cpu: update info related direction into BP if mispredicted.
..

cpu: update info related direction into BP if mispredicted.

Update direction info of a branch into BP if, the branch is not
found in the target buffer. Therefore, this  updated direction is
used to squash the branch later on. Previously, some mispredicted
branches were not sqaushed as the BP had old info.

Reported-by: Dimitrios Chasapis

Change-Id: I4be2eb706edc5ffa9935948fb52a01667286c721
jira-issue: https://gem5.atlassian.net/browse/GEM5-355
---
M src/cpu/pred/bpred_unit.cc
1 file changed, 2 insertions(+), 0 deletions(-)



diff --git a/src/cpu/pred/bpred_unit.cc b/src/cpu/pred/bpred_unit.cc
index 3d9e3ea..4b93e30 100644
--- a/src/cpu/pred/bpred_unit.cc
+++ b/src/cpu/pred/bpred_unit.cc
@@ -263,6 +263,7 @@
 DPRINTF(Branch, "[tid:%i] [sn:%llu] BTB doesn't have  
a "

 "valid entry\n",tid,seqNum);
 pred_taken = false;
+predict_record.predTaken = pred_taken;
 // The Direction of the branch predictor is altered
 // because the BTB did not have an entry
 // The predictor needs to be updated accordingly
@@ -293,6 +294,7 @@
 } else {
 ++indirectMisses;
 pred_taken = false;
+predict_record.predTaken = pred_taken;
 DPRINTF(Branch,
 "[tid:%i] [sn:%llu] "
 "Instruction %s no indirect "

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/25903
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: I4be2eb706edc5ffa9935948fb52a01667286c721
Gerrit-Change-Number: 25903
Gerrit-PatchSet: 1
Gerrit-Owner: Trivikram Reddy 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[develop]: cpu: change the location of BTBlookup

2020-02-26 Thread Trivikram Reddy (Gerrit)
Trivikram Reddy has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25625 )


Change subject: cpu: change the location of BTBlookup
..

cpu: change the location of BTBlookup

BTBlookup should be done only if BTB is used, previously
this stat was updated for indirector predictor as well.

https: //gem5.atlassian.net/browse/GEM5-338
Change-Id: I20695dc7a8677d4fd0c4ae9f4f7d279387d5ad62
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/25625
Reviewed-by: Jason Lowe-Power 
Reviewed-by: Ayaz Akram 
Reviewed-by: Giacomo Travaglini 
Maintainer: Jason Lowe-Power 
Tested-by: kokoro 
---
M src/cpu/pred/bpred_unit.cc
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  Giacomo Travaglini: Looks good to me, approved
  Ayaz Akram: Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/cpu/pred/bpred_unit.cc b/src/cpu/pred/bpred_unit.cc
index a2faad1..3d9e3ea 100644
--- a/src/cpu/pred/bpred_unit.cc
+++ b/src/cpu/pred/bpred_unit.cc
@@ -233,7 +233,6 @@
 "RAS predicted target: %s, RAS index: %i\n",
 tid, seqNum, pc, target, predict_record.RASIndex);
 } else {
-++BTBLookups;

 if (inst->isCall()) {
 RAS[tid].push(pc);
@@ -250,6 +249,7 @@
 }

 if (inst->isDirectCtrl() || !iPred) {
+++BTBLookups;
 // Check BTB on direct branches
 if (BTB.valid(pc.instAddr(), tid)) {
 ++BTBHits;

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/25625
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: I20695dc7a8677d4fd0c4ae9f4f7d279387d5ad62
Gerrit-Change-Number: 25625
Gerrit-PatchSet: 2
Gerrit-Owner: Trivikram Reddy 
Gerrit-Reviewer: Ayaz Akram 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Trivikram Reddy 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[develop]: tests, misc: Updated tests/.gitignore to ignore test resources

2020-02-26 Thread Bobby R. Bruce (Gerrit)
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/24324 )


Change subject: tests,misc: Updated tests/.gitignore to ignore test  
resources

..

tests,misc: Updated tests/.gitignore to ignore test resources

Tests run via main.py create some temp resources. These are now ignored.

Change-Id: I63e2b7e1d70f8813e12c2e538a633046d614f1d2
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24324
Tested-by: kokoro 
Reviewed-by: Bobby R. Bruce 
Maintainer: Bobby R. Bruce 
---
M tests/.gitignore
1 file changed, 5 insertions(+), 0 deletions(-)

Approvals:
  Bobby R. Bruce: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/tests/.gitignore b/tests/.gitignore
index 63c0e1b..642f8e4 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -1 +1,6 @@
 .testing-results
+gem5/cpu_tests/benchmarks
+gem5/fs/linux/arm/*.tar.bz2
+gem5/fs/linux/arm/binaries
+gem5/fs/linux/arm/disks
+gem5/test-progs

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/24324
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: I63e2b7e1d70f8813e12c2e538a633046d614f1d2
Gerrit-Change-Number: 24324
Gerrit-PatchSet: 9
Gerrit-Owner: Bobby R. Bruce 
Gerrit-Reviewer: Bobby R. Bruce 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Cron /z/m5/regression/do-regression --scratch all

2020-02-26 Thread Cron Daemon
* 
build/ARM/tests/opt/quick/fs/10.linux-boot/arm/linux/realview-switcheroo-timing:
 FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-simple-timing-ruby-MOESI_CMP_directory:
 FAILED!
* build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview-minor: 
FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-simple-timing-dual:
 FAILED!
* 
build/ARM/tests/opt/quick/fs/10.linux-boot/arm/linux/realview-simple-timing: 
FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-simple-timing-dual-ruby-MOESI_CMP_directory:
 FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-switcheroo-timing:
 FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview-simple-timing-ruby-MOESI_CMP_directory:
 FAILED!
* build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview-minor-dual: 
FAILED!
* build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview-o3-dual: 
FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-simple-atomic-checkpoint:
 FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-switcheroo-atomic:
 FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-minor-dual: 
FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-simple-atomic: 
FAILED!
* build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview-o3: FAILED!
* build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-o3-dual: 
FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-simple-atomic-dual:
 FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview-switcheroo-o3: 
FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview-simple-timing-dual-ruby-MOESI_CMP_directory:
 FAILED!
* 
build/ARM/tests/opt/quick/fs/10.linux-boot/arm/linux/realview-simple-timing-dual:
 FAILED!
* build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-o3: FAILED!
* 
build/ARM/tests/opt/quick/fs/10.linux-boot/arm/linux/realview-switcheroo-atomic:
 FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-switcheroo-o3: 
FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-simple-timing: 
FAILED!
* 
build/ARM/tests/opt/quick/fs/10.linux-boot/arm/linux/realview-simple-atomic-checkpoint:
 FAILED!
* build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview-o3-checker: 
FAILED!
* 
build/ARM/tests/opt/quick/fs/10.linux-boot/arm/linux/realview-simple-atomic: 
FAILED!
* build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-minor: 
FAILED!
* 
build/ARM/tests/opt/quick/fs/10.linux-boot/arm/linux/realview-simple-atomic-dual:
 FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview-switcheroo-full: 
FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-o3-checker: 
FAILED!
* 
build/ARM/tests/opt/long/fs/10.linux-boot/arm/linux/realview64-switcheroo-full: 
FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/minor-timing: 
FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-atomic: 
FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-timing-ruby:
 FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-timing: 
FAILED!
* build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/o3-timing: 
FAILED!
* build/NULL/tests/opt/quick/se/80.dram-openpage/null/none/dram-lowp: 
CHANGED!
* build/NULL/tests/opt/quick/se/80.dram-closepage/null/none/dram-lowp: 
CHANGED!
* build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-simple-mem: CHANGED!
* build/NULL/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby: 
CHANGED!
* build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-dram-ctrl: CHANGED!
* 
build/NULL_MOESI_hammer/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_hammer:
 CHANGED!
* 
build/NULL_MESI_Two_Level/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MESI_Two_Level:
 CHANGED!
* 
build/NULL_MOESI_CMP_token/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_token:
 CHANGED!
* build/ARM/tests/opt/quick/se/50.vortex/arm/linux/simple-atomic: CHANGED!
* 
build/ARM/tests/opt/quick/se/03.learning-gem5/arm/linux/learning-gem5-p1-two-level:
 CHANGED!
* 
build/ARM/tests/opt/quick/se/03.learning-gem5/arm/linux/learning-gem5-p1-simple:
 CHANGED!
* 
build/X86_MESI_Two_Level/tests/opt/long/fs/10.linux-boot/x86/linux/pc-simple-timing-ruby-MESI_Two_Level:
 CHANGED!
* build/ARM/tests/opt/quick/se/50.vortex/arm/linux/simple-timing: CHANGED!
* build/ARM/tests/opt/long/se/10.mcf/arm/linux/minor-timing: CHANGED!
* build/ARM/tests/opt/long/se/10.mcf/arm/linux/o3-timing: CHANGED!
* build/ARM/tests/opt/long/se/70.twolf/arm/linux/minor-timing: CHANGED!
* 

[gem5-dev] Change in gem5/gem5[develop]: tests: Fixed .testignore from 'arch64' to 'aarch64'

2020-02-26 Thread Bobby R. Bruce (Gerrit)
Bobby R. Bruce has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25845 )



Change subject: tests: Fixed .testignore from 'arch64' to 'aarch64'
..

tests: Fixed .testignore from 'arch64' to 'aarch64'

Entries in `tests/gem5/.testignore` which were ignoring insttest tests,
were stating the host system as 'arch64' instead of 'aarch64'. This has
been fixed.

Change-Id: Ib90bd89e0544d225afc012fefca98db0ea2d8dd0
---
M tests/gem5/.testignore
1 file changed, 33 insertions(+), 33 deletions(-)



diff --git a/tests/gem5/.testignore b/tests/gem5/.testignore
index 1c0c1bf..3a15144 100644
--- a/tests/gem5/.testignore
+++ b/tests/gem5/.testignore
@@ -67,39 +67,39 @@
 test-insttest-rv64i-linux-DerivO3CPU-RISCV-x86_64-fast
 test-insttest-linux-AtomicSimpleCPU-SPARC-x86_64-fast
 test-insttest-linux-TimingSimpleCPU-SPARC-x86_64-fast
-test-insttest-rv64a-linux-MinorCPU-RISCV-arch64-opt
-test-insttest-rv64c-linux-MinorCPU-RISCV-arch64-opt
-test-insttest-rv64d-linux-MinorCPU-RISCV-arch64-opt
-test-insttest-rv64f-linux-MinorCPU-RISCV-arch64-opt
-test-insttest-rv64i-linux-MinorCPU-RISCV-arch64-opt
-test-insttest-rv64m-linux-MinorCPU-RISCV-arch64-opt
-test-insttest-rv64i-linux-AtomicSimpleCPU-RISCV-arch64-opt
-test-insttest-rv64i-linux-TimingSimpleCPU-RISCV-arch64-opt
-test-insttest-rv64i-linux-DerivO3CPU-RISCV-arch64-opt
-test-insttest-linux-AtomicSimpleCPU-SPARC-arch64-opt
-test-insttest-linux-TimingSimpleCPU-SPARC-arch64-opt
-test-insttest-rv64a-linux-MinorCPU-RISCV-arch64-debug
-test-insttest-rv64c-linux-MinorCPU-RISCV-arch64-debug
-test-insttest-rv64d-linux-MinorCPU-RISCV-arch64-debug
-test-insttest-rv64f-linux-MinorCPU-RISCV-arch64-debug
-test-insttest-rv64i-linux-MinorCPU-RISCV-arch64-debug
-test-insttest-rv64m-linux-MinorCPU-RISCV-arch64-debug
-test-insttest-rv64i-linux-AtomicSimpleCPU-RISCV-arch64-debug
-test-insttest-rv64i-linux-TimingSimpleCPU-RISCV-arch64-debug
-test-insttest-rv64i-linux-DerivO3CPU-RISCV-arch64-debug
-test-insttest-linux-AtomicSimpleCPU-SPARC-arch64-debug
-test-insttest-linux-TimingSimpleCPU-SPARC-arch64-debug
-test-insttest-rv64a-linux-MinorCPU-RISCV-arch64-fast
-test-insttest-rv64c-linux-MinorCPU-RISCV-arch64-fast
-test-insttest-rv64d-linux-MinorCPU-RISCV-arch64-fast
-test-insttest-rv64f-linux-MinorCPU-RISCV-arch64-fast
-test-insttest-rv64i-linux-MinorCPU-RISCV-arch64-fast
-test-insttest-rv64m-linux-MinorCPU-RISCV-arch64-fast
-test-insttest-rv64i-linux-AtomicSimpleCPU-RISCV-arch64-fast
-test-insttest-rv64i-linux-TimingSimpleCPU-RISCV-arch64-fast
-test-insttest-rv64i-linux-DerivO3CPU-RISCV-arch64-fast
-test-insttest-linux-AtomicSimpleCPU-SPARC-arch64-fast
-test-insttest-linux-TimingSimpleCPU-SPARC-arch64-fast
+test-insttest-rv64a-linux-MinorCPU-RISCV-aarch64-opt
+test-insttest-rv64c-linux-MinorCPU-RISCV-aarch64-opt
+test-insttest-rv64d-linux-MinorCPU-RISCV-aarch64-opt
+test-insttest-rv64f-linux-MinorCPU-RISCV-aarch64-opt
+test-insttest-rv64i-linux-MinorCPU-RISCV-aarch64-opt
+test-insttest-rv64m-linux-MinorCPU-RISCV-aarch64-opt
+test-insttest-rv64i-linux-AtomicSimpleCPU-RISCV-aarch64-opt
+test-insttest-rv64i-linux-TimingSimpleCPU-RISCV-aarch64-opt
+test-insttest-rv64i-linux-DerivO3CPU-RISCV-aarch64-opt
+test-insttest-linux-AtomicSimpleCPU-SPARC-aarch64-opt
+test-insttest-linux-TimingSimpleCPU-SPARC-aarch64-opt
+test-insttest-rv64a-linux-MinorCPU-RISCV-aarch64-debug
+test-insttest-rv64c-linux-MinorCPU-RISCV-aarch64-debug
+test-insttest-rv64d-linux-MinorCPU-RISCV-aarch64-debug
+test-insttest-rv64f-linux-MinorCPU-RISCV-aarch64-debug
+test-insttest-rv64i-linux-MinorCPU-RISCV-aarch64-debug
+test-insttest-rv64m-linux-MinorCPU-RISCV-aarch64-debug
+test-insttest-rv64i-linux-AtomicSimpleCPU-RISCV-aarch64-debug
+test-insttest-rv64i-linux-TimingSimpleCPU-RISCV-aarch64-debug
+test-insttest-rv64i-linux-DerivO3CPU-RISCV-aarch64-debug
+test-insttest-linux-AtomicSimpleCPU-SPARC-aarch64-debug
+test-insttest-linux-TimingSimpleCPU-SPARC-aarch64-debug
+test-insttest-rv64a-linux-MinorCPU-RISCV-aarch64-fast
+test-insttest-rv64c-linux-MinorCPU-RISCV-aarch64-fast
+test-insttest-rv64d-linux-MinorCPU-RISCV-aarch64-fast
+test-insttest-rv64f-linux-MinorCPU-RISCV-aarch64-fast
+test-insttest-rv64i-linux-MinorCPU-RISCV-aarch64-fast
+test-insttest-rv64m-linux-MinorCPU-RISCV-aarch64-fast
+test-insttest-rv64i-linux-AtomicSimpleCPU-RISCV-aarch64-fast
+test-insttest-rv64i-linux-TimingSimpleCPU-RISCV-aarch64-fast
+test-insttest-rv64i-linux-DerivO3CPU-RISCV-aarch64-fast
+test-insttest-linux-AtomicSimpleCPU-SPARC-aarch64-fast
+test-insttest-linux-TimingSimpleCPU-SPARC-aarch64-fast
 test-insttest-rv64a-linux-MinorCPU-RISCV-i386-opt
 test-insttest-rv64c-linux-MinorCPU-RISCV-i386-opt
 test-insttest-rv64d-linux-MinorCPU-RISCV-i386-opt

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


Gerrit-Project: 

[gem5-dev] Change in gem5/gem5[develop]: misc: merge branch 'release-staging-v19.0.0.0' into develop

2020-02-26 Thread Bobby R. Bruce (Gerrit)
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25825 )


Change subject: misc: merge branch 'release-staging-v19.0.0.0' into develop
..

misc: merge branch 'release-staging-v19.0.0.0' into develop

Change-Id: I8430c6717697563386d165a40a0d080b0d18832e
---
1 file changed, 0 insertions(+), 0 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass




--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/25825
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: I8430c6717697563386d165a40a0d080b0d18832e
Gerrit-Change-Number: 25825
Gerrit-PatchSet: 1
Gerrit-Owner: Bobby R. Bruce 
Gerrit-Reviewer: Bobby R. Bruce 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[develop]: tests: Removed unneeded 02.insttest data

2020-02-26 Thread Bobby R. Bruce (Gerrit)
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25844 )


Change subject: tests: Removed unneeded 02.insttest data
..

tests: Removed unneeded 02.insttest data

This test has been migrated to be run via `./main.py`.

Change-Id: I3608306da62c301bf0ebea6c5fbd1eebac703467
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/25844
Reviewed-by: Bobby R. Bruce 
Maintainer: Bobby R. Bruce 
Tested-by: kokoro 
---
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/minor-timing/config.ini
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/minor-timing/config.json
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/minor-timing/simerr
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/minor-timing/simout
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/minor-timing/stats.txt
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/o3-timing/config.ini
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/o3-timing/config.json
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/o3-timing/simerr
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/o3-timing/simout
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/o3-timing/stats.txt
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-atomic/config.ini
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-atomic/config.json
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-atomic/simerr
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-atomic/simout
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-atomic/stats.txt
D  
tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-timing-ruby/config.ini
D  
tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-timing-ruby/config.json

D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-timing-ruby/simerr
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-timing-ruby/simout
D  
tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-timing-ruby/stats.txt

D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-timing/config.ini
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-timing/config.json
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-timing/simerr
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-timing/simout
D tests/quick/se/02.insttest/ref/riscv/linux-rv64a/simple-timing/stats.txt
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/minor-timing/config.ini
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/minor-timing/config.json
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/minor-timing/simerr
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/minor-timing/simout
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/minor-timing/stats.txt
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/o3-timing/config.ini
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/o3-timing/config.json
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/o3-timing/simerr
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/o3-timing/simout
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/o3-timing/stats.txt
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-atomic/config.ini
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-atomic/config.json
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-atomic/simerr
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-atomic/simout
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-atomic/stats.txt
D  
tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-timing-ruby/config.ini
D  
tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-timing-ruby/config.json

D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-timing-ruby/simerr
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-timing-ruby/simout
D  
tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-timing-ruby/stats.txt

D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-timing/config.ini
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-timing/config.json
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-timing/simerr
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-timing/simout
D tests/quick/se/02.insttest/ref/riscv/linux-rv64c/simple-timing/stats.txt
D tests/quick/se/02.insttest/ref/riscv/linux-rv64d/minor-timing/config.ini
D tests/quick/se/02.insttest/ref/riscv/linux-rv64d/minor-timing/config.json
D tests/quick/se/02.insttest/ref/riscv/linux-rv64d/minor-timing/simerr
D tests/quick/se/02.insttest/ref/riscv/linux-rv64d/minor-timing/simout
D tests/quick/se/02.insttest/ref/riscv/linux-rv64d/minor-timing/stats.txt
D tests/quick/se/02.insttest/ref/riscv/linux-rv64d/o3-timing/config.ini
D tests/quick/se/02.insttest/ref/riscv/linux-rv64d/o3-timing/config.json
D tests/quick/se/02.insttest/ref/riscv/linux-rv64d/o3-timing/simerr
D tests/quick/se/02.insttest/ref/riscv/linux-rv64d/o3-timing/simout
D tests/quick/se/02.insttest/ref/riscv/linux-rv64d/o3-timing/stats.txt
D 

[gem5-dev] Change in gem5/gem5[develop]: sim: print --debug-flag Event execution and instance ID

2020-02-26 Thread Ciro Santilli (Gerrit)
Ciro Santilli has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25383 )


Change subject: sim: print --debug-flag Event execution and instance ID
..

sim: print --debug-flag Event execution and instance ID

This makes it much easier to determine what event is causing something to
happen, especially when there are multiple events happening at the
same time.

Change-Id: I17378e16bd3de1d98e936a6252aab2cd8c303b23
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/25383
Reviewed-by: Jason Lowe-Power 
Maintainer: Jason Lowe-Power 
Tested-by: kokoro 
---
M src/sim/eventq.cc
M src/sim/eventq.hh
2 files changed, 18 insertions(+), 8 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/sim/eventq.cc b/src/sim/eventq.cc
index 6141380..25131b3 100644
--- a/src/sim/eventq.cc
+++ b/src/sim/eventq.cc
@@ -81,11 +81,7 @@
 const std::string
 Event::name() const
 {
-#ifndef NDEBUG
-return csprintf("Event_%d", instance);
-#else
-return csprintf("Event_%x", (uintptr_t)this);
-#endif
+return csprintf("Event_%s", instanceString());
 }


@@ -220,7 +216,8 @@
 if (!event->squashed()) {
 // forward current cycle to the time when this event occurs.
 setCurTick(event->when());
-
+if (DTRACE(Event))
+event->trace("executed");
 event->process();
 if (event->isExitEvent()) {
 assert(!event->flags.isSet(Event::Managed) ||
@@ -388,8 +385,18 @@
 // more informative message in the trace, override this method on
 // the particular subclass where you have the information that
 // needs to be printed.
-DPRINTF_UNCONDITIONAL(Event, "%s event %s @ %d\n",
-description(), action, when());
+DPRINTF_UNCONDITIONAL(Event, "%s %s %s @ %d\n",
+description(), instanceString(), action, when());
+}
+
+const std::string
+Event::instanceString() const
+{
+#ifndef NDEBUG
+return csprintf("%d", instance);
+#else
+return csprintf("%#x", (uintptr_t)this);
+#endif
 }

 void
diff --git a/src/sim/eventq.hh b/src/sim/eventq.hh
index a703363..2976e11 100644
--- a/src/sim/eventq.hh
+++ b/src/sim/eventq.hh
@@ -284,6 +284,9 @@
 // This function isn't really useful if TRACING_ON is not defined
 virtual void trace(const char *action); //!< trace event activity

+/// Return the instance number as a string.
+const std::string instanceString() const;
+
   protected: /* Memory management */
 /**
  * @{

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/25383
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: I17378e16bd3de1d98e936a6252aab2cd8c303b23
Gerrit-Change-Number: 25383
Gerrit-PatchSet: 2
Gerrit-Owner: Ciro Santilli 
Gerrit-Reviewer: Ciro Santilli 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[develop]: configs: Fix argument handling sweep.py

2020-02-26 Thread Nikos Nikoleris (Gerrit)
Nikos Nikoleris has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25710 )



Change subject: configs: Fix argument handling sweep.py
..

configs: Fix argument handling sweep.py

Change-Id: I6dacbda19971e1c940d1798febb54d20f971c2bc
Signed-off-by: Nikos Nikoleris 
---
M configs/dram/sweep.py
1 file changed, 5 insertions(+), 6 deletions(-)



diff --git a/configs/dram/sweep.py b/configs/dram/sweep.py
index f18e44e..af7ca74 100644
--- a/configs/dram/sweep.py
+++ b/configs/dram/sweep.py
@@ -79,9 +79,9 @@
   help = "DRAM: Random traffic; \
   DRAM_ROTATE: Traffic rotating across banks and  
ranks")


-parser.add_argument("--addr-map",
-choices=m5.objects.AddrMap.vals,
-default="RoRaBaCoCh", help = "DRAM address map policy")
+parser.add_option("--addr-map", type="choice",
+  choices=m5.objects.AddrMap.vals,
+  default="RoRaBaCoCh", help = "DRAM address map policy")

 (options, args) = parser.parse_args()

@@ -124,7 +124,7 @@
 system.mem_ctrls[0].null = True

 # Set the address mapping based on input argument
-system.mem_ctrls[0].addr_mapping = args.addr_map
+system.mem_ctrls[0].addr_mapping = options.addr_map

 # stay in each state for 0.25 ms, long enough to warm things up, and
 # short enough to avoid hitting a refresh
@@ -179,8 +179,7 @@

 m5.instantiate()

-addr_map = m5.objects.AddrMap.map[args.addr_map]
-
+addr_map = m5.internal.params.enum_AddrMap.__members__[options.addr_map]
 def trace():
 generator = dram_generators[options.mode](system.tgen)
 for bank in range(1, nbr_banks + 1):

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/25710
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: I6dacbda19971e1c940d1798febb54d20f971c2bc
Gerrit-Change-Number: 25710
Gerrit-PatchSet: 1
Gerrit-Owner: Nikos Nikoleris 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[develop]: python: Remove unnecessary exports from pybind enums

2020-02-26 Thread Nikos Nikoleris (Gerrit)
Nikos Nikoleris has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25709 )



Change subject: python: Remove unnecessary exports from pybind enums
..

python: Remove unnecessary exports from pybind enums

According to pybind documentation [1], enum entries use
.export_values() to export the enum entries into the parent
scope. However, strongly typed C++11 class enums are in their own
scope and therefore do not need to be exported.

[1]: https://pybind11.readthedocs.io/en/stable/classes.html#enume
rations-and-internal-types

Change-Id: I6181306b530d59eaedcb3daf9cab0a03d01d56f4
Signed-off-by: Nikos Nikoleris 
---
M src/python/m5/params.py
1 file changed, 2 insertions(+), 1 deletion(-)



diff --git a/src/python/m5/params.py b/src/python/m5/params.py
index 9b4198b..e82e96a 100644
--- a/src/python/m5/params.py
+++ b/src/python/m5/params.py
@@ -1438,7 +1438,8 @@
 for val in cls.vals:
 code('.value("${val}", ${wrapper_name}::${val})')
 code('.value("Num_${name}", ${wrapper_name}::Num_${enum_name})')
-code('.export_values()')
+if not cls.is_class:
+code('.export_values()')
 code(';')
 code.dedent()


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/25709
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: I6181306b530d59eaedcb3daf9cab0a03d01d56f4
Gerrit-Change-Number: 25709
Gerrit-PatchSet: 1
Gerrit-Owner: Nikos Nikoleris 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[develop]: cpu-o3: This commit allows checkpoints on o3 cpu & VecElem mode

2020-02-26 Thread Athanasios Chatzidimitriou (Gerrit)
Athanasios Chatzidimitriou has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/25708 )



Change subject: cpu-o3: This commit allows checkpoints on o3 cpu & VecElem  
mode

..

cpu-o3: This commit allows checkpoints on o3 cpu & VecElem mode

This patch allows checkpoints to be taken/restored when VecElem mode is
enabled (e.g. ARMv7).

To allow this, the following parts are added:
- Initialize the full-vector interface on VecElemMode to be used by
  serialize functions
- Add a method that "syncs" the VecElem regs to VecFlat
- Invoke this sync when CPU drains (in order to take checkpoints
  correctly).
- Discard asserts that forbid VecRegClass lookups on VecElem mode as now
  the interface allows it.

Jira Issue: https://gem5.atlassian.net/browse/GEM5-371

Change-Id: Ia0d8377505b9b241578470f1c4aadb1adc021254
---
M src/cpu/o3/cpu.cc
M src/cpu/o3/cpu.hh
M src/cpu/o3/regfile.cc
M src/cpu/o3/rename_map.cc
M src/cpu/o3/rename_map.hh
5 files changed, 72 insertions(+), 35 deletions(-)



diff --git a/src/cpu/o3/cpu.cc b/src/cpu/o3/cpu.cc
index e2c7270..91f4970 100644
--- a/src/cpu/o3/cpu.cc
+++ b/src/cpu/o3/cpu.cc
@@ -246,16 +246,17 @@

 /* Here we need two 'interfaces' the 'whole register' and the
  * 'register element'. At any point only one of them will be
- * active. */
-if (vecMode == Enums::Full) {
-/* Initialize the full-vector interface */
-for (RegIndex ridx = 0; ridx < TheISA::NumVecRegs; ++ridx) {
-RegId rid = RegId(VecRegClass, ridx);
-PhysRegIdPtr phys_reg = freeList.getVecReg();
-renameMap[tid].setEntry(rid, phys_reg);
-commitRenameMap[tid].setEntry(rid, phys_reg);
-}
-} else {
+ * active, but we can Initialize both so that serialize calls
+ * allow whole access on register element mode */
+
+/* Initialize the full-vector interface */
+for (RegIndex ridx = 0; ridx < TheISA::NumVecRegs; ++ridx) {
+RegId rid = RegId(VecRegClass, ridx);
+PhysRegIdPtr phys_reg = freeList.getVecReg();
+renameMap[tid].setEntry(rid, phys_reg);
+commitRenameMap[tid].setEntry(rid, phys_reg);
+}
+if (vecMode == Enums::Elem) {
 /* Initialize the vector-element interface */
 for (RegIndex ridx = 0; ridx < TheISA::NumVecRegs; ++ridx) {
 for (ElemIndex ldx = 0; ldx < TheISA::NumVecElemPerVecReg;
@@ -864,6 +865,21 @@
 }

 template 
+void
+FullO3CPU::syncVecElem(ThreadID tid)
+{
+auto pc = this->pcState(tid);
+auto curr_mode = RenameMode::mode(pc);
+
+/*This is only required if we are on VecElem mode */
+if (curr_mode == Enums::Full) return;
+
+/* Sync the VecElem regs */
+renameMap[tid].syncVecElem();
+commitRenameMap[tid].syncVecElem();
+}
+
+template 
 Fault
 FullO3CPU::getInterrupts()
 {
@@ -990,6 +1006,11 @@
 }

 drainSanityCheck();
+
+/*Sync VecElem regs to VecRegs */
+for (int tid = 0; tid < numThreads; tid++)
+syncVecElem(tid);
+
 return DrainState::Drained;
 }
 }
diff --git a/src/cpu/o3/cpu.hh b/src/cpu/o3/cpu.hh
index 01f58df..ac504bc 100644
--- a/src/cpu/o3/cpu.hh
+++ b/src/cpu/o3/cpu.hh
@@ -321,6 +321,17 @@
  */
 void switchRenameMode(ThreadID tid, UnifiedFreeList* freelist);

+/**
+ * Because operations such as thread serialize only use VecReg regfile
+ * it may happen that, if the cpu is on VecElem mode, state may be
+ * corrupt after CPU drain(). We add this utility method to "sync"
+ * the VecElem with the actual registers (aka. merge splitted portions)
+ * so that any access in the VecReg will not result in a corruption
+ *
+ * @param tid ThreadID
+ */
+void syncVecElem(ThreadID tid);
+
 /** Returns the Fault for any valid interrupt. */
 Fault getInterrupts();

diff --git a/src/cpu/o3/regfile.cc b/src/cpu/o3/regfile.cc
index de9cd5e..d1b7737 100644
--- a/src/cpu/o3/regfile.cc
+++ b/src/cpu/o3/regfile.cc
@@ -158,11 +158,10 @@
 }
 }

-/* depending on the mode we add the vector registers as whole units or
- * as different elements. */
-if (vecMode == Enums::Full)
-freeList->addRegs(vecRegIds.begin(), vecRegIds.end());
-else
+/* We add the vector registers as whole units at all cases and
+ * in addition, elements for the Elem vecMode. */
+freeList->addRegs(vecRegIds.begin(), vecRegIds.end());
+if (vecMode == Enums::Elem)
 freeList->addRegs(vecElemIds.begin(), vecElemIds.end());

 // The next batch of the registers are the predicate physical
diff --git a/src/cpu/o3/rename_map.cc b/src/cpu/o3/rename_map.cc
index fdb9894..8e59160 100644
--- a/src/cpu/o3/rename_map.cc
+++ b/src/cpu/o3/rename_map.cc
@@ -195,25 +195,29