diff options
author | Dylan Johnson <Dylan.Johnson@ARM.com> | 2016-08-02 10:38:02 +0100 |
---|---|---|
committer | Dylan Johnson <Dylan.Johnson@ARM.com> | 2016-08-02 10:38:02 +0100 |
commit | eac27759e77edfcb772021be714469f43f2e3b46 (patch) | |
tree | 19aab813bb35fa1ad7cf9a8d18558b3659d3bc2c /src/arch | |
parent | f9a6f68e0bcb1f7e2a34ad1bbf93515b473b610f (diff) | |
download | gem5-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')
-rw-r--r-- | src/arch/arm/table_walker.cc | 12 |
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; |