summaryrefslogtreecommitdiff
path: root/src/arch/arm/table_walker.cc
diff options
context:
space:
mode:
authorDylan Johnson <Dylan.Johnson@ARM.com>2016-08-02 10:38:02 +0100
committerDylan Johnson <Dylan.Johnson@ARM.com>2016-08-02 10:38:02 +0100
commiteac27759e77edfcb772021be714469f43f2e3b46 (patch)
tree19aab813bb35fa1ad7cf9a8d18558b3659d3bc2c /src/arch/arm/table_walker.cc
parentf9a6f68e0bcb1f7e2a34ad1bbf93515b473b610f (diff)
downloadgem5-eac27759e77edfcb772021be714469f43f2e3b46.tar.xz
arm: Refactor aarch64 table walk logic to remove redundancy
The functional case is already handled within the fetchDescriptor() function. We can thus use that function for both atomic and functional mode when we start the table walk. Change-Id: Iacaed28cd9024d259fd37a58150efd00ff94d86e
Diffstat (limited to 'src/arch/arm/table_walker.cc')
-rw-r--r--src/arch/arm/table_walker.cc12
1 files changed, 1 insertions, 11 deletions
diff --git a/src/arch/arm/table_walker.cc b/src/arch/arm/table_walker.cc
index 4eb57c59a..f1a7ca250 100644
--- a/src/arch/arm/table_walker.cc
+++ b/src/arch/arm/table_walker.cc
@@ -992,21 +992,11 @@ TableWalker::processWalkAArch64()
stateQueues[start_lookup_level].size());
stateQueues[start_lookup_level].push_back(currState);
currState = NULL;
- } else if (!currState->functional) {
+ } else {
fetchDescriptor(desc_addr, (uint8_t*)&currState->longDesc.data,
sizeof(uint64_t), flag, -1, NULL,
&TableWalker::doLongDescriptor);
f = currState->fault;
- } else {
- RequestPtr req = new Request(desc_addr, sizeof(uint64_t), flag,
- masterId);
- PacketPtr pkt = new Packet(req, MemCmd::ReadReq);
- pkt->dataStatic((uint8_t*) &currState->longDesc.data);
- port->sendFunctional(pkt);
- doLongDescriptor();
- delete req;
- delete pkt;
- f = currState->fault;
}
return f;