summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/arch/arm/table_walker.cc9
-rw-r--r--src/arch/arm/utility.hh5
2 files changed, 14 insertions, 0 deletions
diff --git a/src/arch/arm/table_walker.cc b/src/arch/arm/table_walker.cc
index 428556b1a..3c79e43ac 100644
--- a/src/arch/arm/table_walker.cc
+++ b/src/arch/arm/table_walker.cc
@@ -1423,6 +1423,9 @@ TableWalker::doL1Descriptor()
return;
}
+ currState->l1Desc.data = htog(currState->l1Desc.data,
+ byteOrder(currState->tc));
+
DPRINTF(TLB, "L1 descriptor for %#x is %#x\n",
currState->vaddr_tainted, currState->l1Desc.data);
TlbEntry te;
@@ -1518,6 +1521,9 @@ TableWalker::doLongDescriptor()
return;
}
+ currState->longDesc.data = htog(currState->longDesc.data,
+ byteOrder(currState->tc));
+
DPRINTF(TLB, "L%d descriptor for %#llx is %#llx (%s)\n",
currState->longDesc.lookupLevel, currState->vaddr_tainted,
currState->longDesc.data,
@@ -1709,6 +1715,9 @@ TableWalker::doL2Descriptor()
return;
}
+ currState->l2Desc.data = htog(currState->l2Desc.data,
+ byteOrder(currState->tc));
+
DPRINTF(TLB, "L2 descriptor for %#x is %#x\n",
currState->vaddr_tainted, currState->l2Desc.data);
TlbEntry te;
diff --git a/src/arch/arm/utility.hh b/src/arch/arm/utility.hh
index 8efe4ad10..796ded771 100644
--- a/src/arch/arm/utility.hh
+++ b/src/arch/arm/utility.hh
@@ -348,6 +348,11 @@ int decodePhysAddrRange64(uint8_t pa_enc);
*/
uint8_t encodePhysAddrRange64(int pa_size);
+inline ByteOrder byteOrder(ThreadContext *tc)
+{
+ return isBigEndian64(tc) ? BigEndianByteOrder : LittleEndianByteOrder;
+};
+
}
#endif