diff options
author | Gabe Black <gabeblack@google.com> | 2018-10-12 05:06:26 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2018-10-17 20:17:44 +0000 |
commit | 2bcb2b031d4419e87337b25936a09228955dc715 (patch) | |
tree | 1da2953b4764a66bca23dfcf1656f4af205206d5 /src/dev/isa_fake.cc | |
parent | 2701fcb2ffe76e2cb087807e87a9114d0009b7db (diff) | |
download | gem5-2bcb2b031d4419e87337b25936a09228955dc715.tar.xz |
dev: Explicitly specify the endianness for packet accessors.
Generally speaking, the endianness of the data devices provide or
accept is dependent on the device and not the ISA the system
executes. This change makes the devices in dev pick an endianness
rather than using the guest's.
For the ISA bus and the UART, accesses are byte sized and so endianness
doesn't matter. The ISA and PCI busses and the devices which use them
are defined to be little endian.
Change-Id: Ib0aa70f192e1d6f3b886d9f3ad41ae03bddb583f
Reviewed-on: https://gem5-review.googlesource.com/c/13462
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/dev/isa_fake.cc')
-rw-r--r-- | src/dev/isa_fake.cc | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/dev/isa_fake.cc b/src/dev/isa_fake.cc index 92ee19a97..407d08ca4 100644 --- a/src/dev/isa_fake.cc +++ b/src/dev/isa_fake.cc @@ -69,16 +69,16 @@ IsaFake::read(PacketPtr pkt) pkt->getAddr(), pkt->getSize()); switch (pkt->getSize()) { case sizeof(uint64_t): - pkt->set(retData64); + pkt->setLE(retData64); break; case sizeof(uint32_t): - pkt->set(retData32); + pkt->setLE(retData32); break; case sizeof(uint16_t): - pkt->set(retData16); + pkt->setLE(retData16); break; case sizeof(uint8_t): - pkt->set(retData8); + pkt->setLE(retData8); break; default: if (params()->fake_mem) @@ -98,16 +98,16 @@ IsaFake::write(PacketPtr pkt) uint64_t data; switch (pkt->getSize()) { case sizeof(uint64_t): - data = pkt->get<uint64_t>(); + data = pkt->getLE<uint64_t>(); break; case sizeof(uint32_t): - data = pkt->get<uint32_t>(); + data = pkt->getLE<uint32_t>(); break; case sizeof(uint16_t): - data = pkt->get<uint16_t>(); + data = pkt->getLE<uint16_t>(); break; case sizeof(uint8_t): - data = pkt->get<uint8_t>(); + data = pkt->getLE<uint8_t>(); break; default: panic("invalid access size: %u\n", pkt->getSize()); @@ -126,16 +126,16 @@ IsaFake::write(PacketPtr pkt) if (params()->update_data) { switch (pkt->getSize()) { case sizeof(uint64_t): - retData64 = pkt->get<uint64_t>(); + retData64 = pkt->getLE<uint64_t>(); break; case sizeof(uint32_t): - retData32 = pkt->get<uint32_t>(); + retData32 = pkt->getLE<uint32_t>(); break; case sizeof(uint16_t): - retData16 = pkt->get<uint16_t>(); + retData16 = pkt->getLE<uint16_t>(); break; case sizeof(uint8_t): - retData8 = pkt->get<uint8_t>(); + retData8 = pkt->getLE<uint8_t>(); break; default: panic("invalid access size!\n"); |