Yu-hsin Wang has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/48823 )
Change subject: fastmodel: correct memory access space id
......................................................................
fastmodel: correct memory access space id
Change-Id: Ie513c44c362baddc0690cd97a2657f9ccdd06e96
---
M src/arch/arm/fastmodel/iris/thread_context.cc
M src/arch/arm/fastmodel/iris/thread_context.hh
2 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/src/arch/arm/fastmodel/iris/thread_context.cc
b/src/arch/arm/fastmodel/iris/thread_context.cc
index 87e4e77..41b354a 100644
--- a/src/arch/arm/fastmodel/iris/thread_context.cc
+++ b/src/arch/arm/fastmodel/iris/thread_context.cc
@@ -45,6 +45,7 @@
#include <vector>
#include "arch/arm/fastmodel/iris/cpu.hh"
+#include "arch/arm/fastmodel/iris/memory_spaces.hh"
#include "arch/arm/system.hh"
#include "arch/arm/utility.hh"
#include "base/logging.hh"
@@ -425,21 +426,23 @@
}
void
-ThreadContext::readMem(Addr addr, void *p, size_t size)
+ThreadContext::readMem(
+ iris::MemorySpaceId space, Addr addr, void *p, size_t size)
{
iris::r0master::MemoryReadResult r;
- auto err = call().memory_read(_instId, r, 0, addr, 1, size);
+ auto err = call().memory_read(_instId, r, space, addr, 1, size);
panic_if(err != iris::r0master::E_ok, "readMem failed.");
std::memcpy(p, r.data.data(), size);
}
void
-ThreadContext::writeMem(Addr addr, const void *p, size_t size)
+ThreadContext::writeMem(
+ iris::MemorySpaceId space, Addr addr, const void *p, size_t size)
{
std::vector<uint64_t> data((size + 7) / 8);
std::memcpy(data.data(), p, size);
iris::MemoryWriteResult r;
- auto err = call().memory_write(_instId, r, 0, addr, 1, size, data);
+ auto err = call().memory_write(_instId, r, space, addr, 1, size, data);
panic_if(err != iris::r0master::E_ok, "writeMem failed.");
}
@@ -503,15 +506,26 @@
void
ThreadContext::sendFunctional(PacketPtr pkt)
{
+ Iris::CanonicalMsn msn = ArmISA::isSecure(this) ?
+ Iris::PhysicalMemorySecureMsn : Iris::PhysicalMemoryNonSecureMsn;
+ iris::MemorySpaceId space_id = iris::IRIS_UINT64_MAX;
+
+ for (auto &space: memorySpaces) {
+ if (space.canonicalMsn == msn) {
+ space_id = space.spaceId;
+ break;
+ }
+ }
+
auto addr = pkt->getAddr();
auto size = pkt->getSize();
auto data = pkt->getPtr<uint8_t>();
pkt->makeResponse();
if (pkt->isRead())
- readMem(addr, data, size);
+ readMem(space_id, addr, data, size);
else
- writeMem(addr, data, size);
+ writeMem(space_id, addr, data, size);
}
ThreadContext::Status
diff --git a/src/arch/arm/fastmodel/iris/thread_context.hh
b/src/arch/arm/fastmodel/iris/thread_context.hh
index d16b480..b491ee7 100644
--- a/src/arch/arm/fastmodel/iris/thread_context.hh
+++ b/src/arch/arm/fastmodel/iris/thread_context.hh
@@ -162,8 +162,10 @@
iris::IrisCppAdapter &call() const { return client.irisCall(); }
iris::IrisCppAdapter &noThrow() const { return
client.irisCallNoThrow(); }
- void readMem(Addr addr, void *p, size_t size);
- void writeMem(Addr addr, const void *p, size_t size);
+ void readMem(iris::MemorySpaceId space,
+ Addr addr, void *p, size_t size);
+ void writeMem(iris::MemorySpaceId space,
+ Addr addr, const void *p, size_t size);
bool translateAddress(Addr &paddr, iris::MemorySpaceId p_space,
Addr vaddr, iris::MemorySpaceId v_space);
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/48823
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: Ie513c44c362baddc0690cd97a2657f9ccdd06e96
Gerrit-Change-Number: 48823
Gerrit-PatchSet: 1
Gerrit-Owner: Yu-hsin Wang <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s