summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/kern/linux/helpers.cc12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/kern/linux/helpers.cc b/src/kern/linux/helpers.cc
index e514ef8b3..1973a41a6 100644
--- a/src/kern/linux/helpers.cc
+++ b/src/kern/linux/helpers.cc
@@ -56,7 +56,8 @@ struct DmesgEntry {
} M5_ATTR_PACKED;
static int
-dumpDmesgEntry(const uint8_t *base, const uint8_t *end, std::ostream &os)
+dumpDmesgEntry(const uint8_t *base, const uint8_t *end, const ByteOrder bo,
+ std::ostream &os)
{
const size_t max_length = end - base;
DmesgEntry de;
@@ -67,9 +68,9 @@ dumpDmesgEntry(const uint8_t *base, const uint8_t *end, std::ostream &os)
}
memcpy(&de, base, sizeof(de));
- de.ts_nsec = TheISA::gtoh(de.ts_nsec);
- de.len = TheISA::gtoh(de.len);
- de.text_len = TheISA::gtoh(de.text_len);
+ de.ts_nsec = gtoh(de.ts_nsec, bo);
+ de.len = gtoh(de.len, bo);
+ de.text_len = gtoh(de.text_len, bo);
if (de.len < sizeof(de) ||
max_length < de.len ||
@@ -93,6 +94,7 @@ void
Linux::dumpDmesg(ThreadContext *tc, std::ostream &os)
{
System *system = tc->getSystemPtr();
+ const ByteOrder bo = system->getGuestByteOrder();
const SymbolTable *symtab = system->kernelSymtab;
PortProxy &proxy = tc->getVirtProxy();
@@ -144,7 +146,7 @@ Linux::dumpDmesg(ThreadContext *tc, std::ostream &os)
// Print dmesg buffer content
const uint8_t *cur = log_buf.data(), *end = log_buf.data() + length;
while (cur < end) {
- int ret = dumpDmesgEntry(cur, end, os);
+ int ret = dumpDmesgEntry(cur, end, bo, os);
if (ret < 0)
return;
cur += ret;