diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/kern/linux/helpers.cc | 12 |
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; |