Giacomo Travaglini has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/23528 )
Change subject: arch-arm: Using new "raw" memhelpers
......................................................................
arch-arm: Using new "raw" memhelpers
JIRA: https://gem5.atlassian.net/browse/GEM5-196
Change-Id: Ie5ea0fc845a8f6d77a5723bacaff25ba04562f9c
Signed-off-by: Giacomo Travaglini <[email protected]>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23528
Reviewed-by: Nikos Nikoleris <[email protected]>
Tested-by: kokoro <[email protected]>
---
M src/arch/arm/isa/templates/mem.isa
M src/arch/arm/isa/templates/mem64.isa
M src/arch/arm/isa/templates/misc.isa
M src/arch/arm/isa/templates/neon64.isa
M src/arch/arm/isa/templates/sve_mem.isa
5 files changed, 55 insertions(+), 32 deletions(-)
Approvals:
Nikos Nikoleris: Looks good to me, approved
Giacomo Travaglini: Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/arch/arm/isa/templates/mem.isa
b/src/arch/arm/isa/templates/mem.isa
index 693d93a..b056f48 100644
--- a/src/arch/arm/isa/templates/mem.isa
+++ b/src/arch/arm/isa/templates/mem.isa
@@ -206,7 +206,10 @@
if (%(predicate_test)s)
{
if (fault == NoFault) {
- fault = xc->readMem(EA, dataPtr, %(size)d, memAccessFlags);
+ const auto size = %(size)d;
+ fault = readMemAtomic(xc, EA, dataPtr,
+ size, memAccessFlags,
+ std::vector<bool>(size, true));
%(memacc_code)s;
}
@@ -277,8 +280,10 @@
}
if (fault == NoFault) {
- fault = xc->writeMem(dataPtr, %(size)d, EA,
- memAccessFlags, NULL);
+ const auto size = %(size)d;
+ fault = writeMemAtomic(xc, dataPtr, EA, size,
+ memAccessFlags, NULL,
+ std::vector<bool>(size, true));
}
if (fault == NoFault) {
@@ -410,8 +415,10 @@
}
if (fault == NoFault) {
- fault = xc->writeMem(memUnion.bytes, %(size)d, EA,
- memAccessFlags, NULL);
+ const auto size = %(size)d;
+ fault = writeMemTiming(xc, memUnion.bytes, EA,
+ size, memAccessFlags, nullptr,
+ std::vector<bool>(size, true));
}
} else {
xc->setPredicate(false);
@@ -462,7 +469,9 @@
if (%(predicate_test)s)
{
if (fault == NoFault) {
- fault = xc->initiateMemRead(EA, %(size)d, memAccessFlags);
+ const auto size = %(size)d;
+ fault = initiateMemRead(xc, EA, size, memAccessFlags,
+ std::vector<bool>(size, true));
}
} else {
xc->setPredicate(false);
diff --git a/src/arch/arm/isa/templates/mem64.isa
b/src/arch/arm/isa/templates/mem64.isa
index ed43cd7..3b90f8c 100644
--- a/src/arch/arm/isa/templates/mem64.isa
+++ b/src/arch/arm/isa/templates/mem64.isa
@@ -322,7 +322,9 @@
}
if (fault == NoFault) {
- fault = xc->writeMem(NULL, op_size, EA, memAccessFlags, NULL);
+ fault = writeMemAtomic(xc, NULL, EA,
+ op_size, memAccessFlags, NULL,
+ std::vector<bool>(op_size, true));
}
if (fault == NoFault) {
@@ -349,7 +351,9 @@
}
if (fault == NoFault) {
- fault = xc->writeMem(NULL, op_size, EA, memAccessFlags, NULL);
+ fault = writeMemTiming(xc, NULL, EA, op_size,
+ memAccessFlags, NULL,
+ std::vector<bool>(op_size, true));
}
return fault;
diff --git a/src/arch/arm/isa/templates/misc.isa
b/src/arch/arm/isa/templates/misc.isa
index c982e75..51d8337 100644
--- a/src/arch/arm/isa/templates/misc.isa
+++ b/src/arch/arm/isa/templates/misc.isa
@@ -647,7 +647,8 @@
if (fault == NoFault) {
Addr op_size =
xc->tcBase()->getSystemPtr()->cacheLineSize();
EA &= ~(op_size - 1);
- fault = xc->writeMem(NULL, op_size, EA, memAccessFlags,
NULL);
+ fault = writeMemAtomic(xc, NULL, EA, op_size,
+ memAccessFlags, NULL, std::vector<bool>(op_size,
true));
}
} else {
xc->setPredicate(false);
@@ -676,7 +677,8 @@
if (fault == NoFault) {
Addr op_size =
xc->tcBase()->getSystemPtr()->cacheLineSize();
EA &= ~(op_size - 1);
- fault = xc->writeMem(NULL, op_size, EA, memAccessFlags,
NULL);
+ fault = writeMemTiming(xc, NULL, EA, op_size,
+ memAccessFlags, NULL, std::vector<bool>(op_size,
true));
}
} else {
xc->setPredicate(false);
diff --git a/src/arch/arm/isa/templates/neon64.isa
b/src/arch/arm/isa/templates/neon64.isa
index 5d30107..d281c95 100644
--- a/src/arch/arm/isa/templates/neon64.isa
+++ b/src/arch/arm/isa/templates/neon64.isa
@@ -287,7 +287,9 @@
uint8_t *dataPtr = memUnion.bytes;
if (fault == NoFault) {
- fault = xc->readMem(EA, dataPtr, accSize, memAccessFlags);
+ fault = readMemAtomic(xc, EA, dataPtr,
+ accSize, memAccessFlags,
+ std::vector<bool>(accSize, true));
%(memacc_code)s;
}
@@ -312,7 +314,9 @@
%(ea_code)s;
if (fault == NoFault) {
- fault = xc->initiateMemRead(EA, accSize, memAccessFlags);
+ fault = initiateMemRead(xc, EA, accSize,
+ memAccessFlags,
+ std::vector<bool>(accSize, true));
}
return fault;
@@ -364,8 +368,9 @@
}
if (fault == NoFault) {
- fault = xc->writeMem(dataPtr, accSize, EA, memAccessFlags,
- NULL);
+ fault = writeMemAtomic(xc, dataPtr, EA, accSize,
+ memAccessFlags, nullptr,
+ std::vector<bool>(accSize, true));
}
if (fault == NoFault) {
@@ -394,8 +399,9 @@
}
if (fault == NoFault) {
- fault = xc->writeMem(memUnion.bytes, accSize, EA,
memAccessFlags,
- NULL);
+ fault = writeMemTiming(xc, memUnion.bytes, EA,
+ accSize, memAccessFlags, NULL,
+ std::vector<bool>(accSize, true));
}
return fault;
diff --git a/src/arch/arm/isa/templates/sve_mem.isa
b/src/arch/arm/isa/templates/sve_mem.isa
index fb306fc..7d59908 100644
--- a/src/arch/arm/isa/templates/sve_mem.isa
+++ b/src/arch/arm/isa/templates/sve_mem.isa
@@ -155,8 +155,8 @@
%(rden_code)s;
- fault = xc->readMem(EA, memData.raw_ptr<uint8_t>(), memAccessSize,
- this->memAccessFlags, rdEn);
+ fault = readMemAtomic(xc, EA, memData.raw_ptr<uint8_t>(),
+ memAccessSize, this->memAccessFlags, rdEn);
%(fault_code)s;
@@ -186,8 +186,8 @@
%(rden_code)s;
- fault = xc->initiateMemRead(EA, memAccessSize,
this->memAccessFlags,
- rdEn);
+ fault = initiateMemRead(xc, EA, memAccessSize,
+ this->memAccessFlags, rdEn);
%(fault_code)s;
@@ -247,8 +247,8 @@
}
if (fault == NoFault) {
- fault = xc->writeMem(memData.raw_ptr<uint8_t>(),
memAccessSize, EA,
- this->memAccessFlags, NULL, wrEn);
+ fault = writeMemAtomic(xc, memData.raw_ptr<uint8_t>(),
+ EA, memAccessSize, this->memAccessFlags, NULL, wrEn);
}
if (fault == NoFault) {
@@ -284,8 +284,8 @@
}
if (fault == NoFault) {
- fault = xc->writeMem(memData.raw_ptr<uint8_t>(),
memAccessSize, EA,
- this->memAccessFlags, NULL, wrEn);
+ fault = writeMemTiming(xc, memData.raw_ptr<uint8_t>(),
+ EA, memAccessSize, this->memAccessFlags, NULL, wrEn);
}
return fault;
@@ -945,8 +945,9 @@
auto memDataView = memData.as<Element>();
if (fault == NoFault) {
- fault = xc->readMem(EA, memData.raw_ptr<uint8_t>(),
memAccessSize,
- this->memAccessFlags);
+ fault = readMemAtomic(xc, EA, memData.raw_ptr<uint8_t>(),
+ memAccessSize, this->memAccessFlags,
+ std::vector<bool>(memAccessSize, true));
%(memacc_code)s;
}
@@ -975,8 +976,9 @@
%(ea_code)s;
if (fault == NoFault) {
- fault = xc->initiateMemRead(EA, memAccessSize,
- this->memAccessFlags);
+ fault = initiateMemRead(xc, EA,
+ memAccessSize, this->memAccessFlags,
+ std::vector<bool>(memAccessSize, true));
}
return fault;
@@ -1039,8 +1041,8 @@
}
if (fault == NoFault) {
- fault = xc->writeMem(memData.raw_ptr<uint8_t>(),
memAccessSize, EA,
- this->memAccessFlags, NULL, wrEn);
+ fault = writeMemAtomic(xc, memData.raw_ptr<uint8_t>(),
+ EA, memAccessSize, this->memAccessFlags, NULL, wrEn);
}
if (fault == NoFault) {
@@ -1076,8 +1078,8 @@
}
if (fault == NoFault) {
- fault = xc->writeMem(memData.raw_ptr<uint8_t>(),
memAccessSize, EA,
- this->memAccessFlags, NULL, wrEn);
+ fault = writeMemTiming(xc, memData.raw_ptr<uint8_t>(),
+ EA, memAccessSize, this->memAccessFlags, NULL, wrEn);
}
return fault;
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/23528
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: Ie5ea0fc845a8f6d77a5723bacaff25ba04562f9c
Gerrit-Change-Number: 23528
Gerrit-PatchSet: 9
Gerrit-Owner: Giacomo Travaglini <[email protected]>
Gerrit-Reviewer: Ciro Santilli <[email protected]>
Gerrit-Reviewer: Giacomo Travaglini <[email protected]>
Gerrit-Reviewer: Nikos Nikoleris <[email protected]>
Gerrit-Reviewer: kokoro <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s