base, sim: Make ByteOrder into a ScopedEnum accessible to Python
There is currently no good way of passing a byte order as a Param
since the ByteOrder type is defined in C++. Make this into a generated
ScopedEnum that can be used in Params.
Change-Id: I990f402340c17c4e0799de57df19516ae61794d4
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33174
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
diff --git a/src/arch/arm/aapcs32.hh b/src/arch/arm/aapcs32.hh
index 7f40bd3..3cd2c50 100644
--- a/src/arch/arm/aapcs32.hh
+++ b/src/arch/arm/aapcs32.hh
@@ -165,7 +165,7 @@
{
if (std::is_same<Integer, Addr>::value) {
tc->setIntReg(ArmISA::INTREG_R0, (uint32_t)i);
- } else if (ArmISA::byteOrder(tc) == LittleEndianByteOrder) {
+ } else if (ArmISA::byteOrder(tc) == ByteOrder::little) {
tc->setIntReg(ArmISA::INTREG_R0, (uint32_t)(i >> 0));
tc->setIntReg(ArmISA::INTREG_R1, (uint32_t)(i >> 32));
} else {
@@ -213,7 +213,7 @@
if (sizeof(Integer) == sizeof(uint64_t) &&
state.ncrn + 1 <= state.MAX_CRN) {
Integer low, high;
- if (ArmISA::byteOrder(tc) == LittleEndianByteOrder) {
+ if (ArmISA::byteOrder(tc) == ByteOrder::little) {
low = tc->readIntReg(state.ncrn++) & mask(32);
high = tc->readIntReg(state.ncrn++) & mask(32);
} else {
diff --git a/src/arch/arm/freebsd/freebsd.hh b/src/arch/arm/freebsd/freebsd.hh
index b136047..ef9da65 100644
--- a/src/arch/arm/freebsd/freebsd.hh
+++ b/src/arch/arm/freebsd/freebsd.hh
@@ -38,7 +38,7 @@
class ArmFreebsd : public FreeBSD
{
public:
- static const ByteOrder byteOrder = LittleEndianByteOrder;
+ static const ByteOrder byteOrder = ByteOrder::little;
};
class ArmFreebsd32 : public ArmFreebsd
diff --git a/src/arch/arm/isa_traits.hh b/src/arch/arm/isa_traits.hh
index 4a7312c..81d4b4f 100644
--- a/src/arch/arm/isa_traits.hh
+++ b/src/arch/arm/isa_traits.hh
@@ -46,7 +46,7 @@
namespace ArmISA
{
- const ByteOrder GuestByteOrder = LittleEndianByteOrder;
+ const ByteOrder GuestByteOrder = ByteOrder::little;
const Addr PageShift = 12;
const Addr PageBytes = ULL(1) << PageShift;
diff --git a/src/arch/arm/linux/linux.hh b/src/arch/arm/linux/linux.hh
index 6aee446..5fd6cdc 100644
--- a/src/arch/arm/linux/linux.hh
+++ b/src/arch/arm/linux/linux.hh
@@ -48,7 +48,7 @@
class ArmLinux : public Linux
{
public:
- static const ByteOrder byteOrder = LittleEndianByteOrder;
+ static const ByteOrder byteOrder = ByteOrder::little;
static void
archClone(uint64_t flags,
diff --git a/src/arch/arm/process.cc b/src/arch/arm/process.cc
index c5ef141..1734066 100644
--- a/src/arch/arm/process.cc
+++ b/src/arch/arm/process.cc
@@ -435,9 +435,9 @@
auxv_array_end += sizeof(zero);
copyStringArray(envp, envp_array_base, env_data_base,
- LittleEndianByteOrder, *initVirtMem);
+ ByteOrder::little, *initVirtMem);
copyStringArray(argv, argv_array_base, arg_data_base,
- LittleEndianByteOrder, *initVirtMem);
+ ByteOrder::little, *initVirtMem);
initVirtMem->writeBlob(argc_base, &guestArgc, intSize);
diff --git a/src/arch/arm/utility.hh b/src/arch/arm/utility.hh
index f17ebc5..636625d 100644
--- a/src/arch/arm/utility.hh
+++ b/src/arch/arm/utility.hh
@@ -448,7 +448,7 @@
inline ByteOrder byteOrder(const ThreadContext *tc)
{
- return isBigEndian64(tc) ? BigEndianByteOrder : LittleEndianByteOrder;
+ return isBigEndian64(tc) ? ByteOrder::big : ByteOrder::little;
};
bool isUnpriviledgeAccess(ThreadContext * tc);
diff --git a/src/arch/generic/memhelpers.hh b/src/arch/generic/memhelpers.hh
index d08bea9..2a5a380 100644
--- a/src/arch/generic/memhelpers.hh
+++ b/src/arch/generic/memhelpers.hh
@@ -72,14 +72,14 @@
void
getMemLE(PacketPtr pkt, MemT &mem, Trace::InstRecord *traceData)
{
- getMem<LittleEndianByteOrder>(pkt, mem, traceData);
+ getMem<ByteOrder::little>(pkt, mem, traceData);
}
template <class MemT>
void
getMemBE(PacketPtr pkt, MemT &mem, Trace::InstRecord *traceData)
{
- getMem<BigEndianByteOrder>(pkt, mem, traceData);
+ getMem<ByteOrder::big>(pkt, mem, traceData);
}
/// Read from memory in atomic mode.
@@ -103,7 +103,7 @@
readMemAtomicLE(XC *xc, Trace::InstRecord *traceData, Addr addr, MemT &mem,
Request::Flags flags)
{
- return readMemAtomic<LittleEndianByteOrder>(
+ return readMemAtomic<ByteOrder::little>(
xc, traceData, addr, mem, flags);
}
@@ -112,7 +112,7 @@
readMemAtomicBE(XC *xc, Trace::InstRecord *traceData, Addr addr, MemT &mem,
Request::Flags flags)
{
- return readMemAtomic<BigEndianByteOrder>(xc, traceData, addr, mem, flags);
+ return readMemAtomic<ByteOrder::big>(xc, traceData, addr, mem, flags);
}
/// Write to memory in timing mode.
@@ -133,7 +133,7 @@
writeMemTimingLE(XC *xc, Trace::InstRecord *traceData, MemT mem, Addr addr,
Request::Flags flags, uint64_t *res)
{
- return writeMemTiming<LittleEndianByteOrder>(
+ return writeMemTiming<ByteOrder::little>(
xc, traceData, mem, addr, flags, res);
}
@@ -142,7 +142,7 @@
writeMemTimingBE(XC *xc, Trace::InstRecord *traceData, MemT mem, Addr addr,
Request::Flags flags, uint64_t *res)
{
- return writeMemTiming<BigEndianByteOrder>(
+ return writeMemTiming<ByteOrder::big>(
xc, traceData, mem, addr, flags, res);
}
@@ -172,7 +172,7 @@
writeMemAtomicLE(XC *xc, Trace::InstRecord *traceData, const MemT &mem,
Addr addr, Request::Flags flags, uint64_t *res)
{
- return writeMemAtomic<LittleEndianByteOrder>(
+ return writeMemAtomic<ByteOrder::little>(
xc, traceData, mem, addr, flags, res);
}
@@ -181,7 +181,7 @@
writeMemAtomicBE(XC *xc, Trace::InstRecord *traceData, const MemT &mem,
Addr addr, Request::Flags flags, uint64_t *res)
{
- return writeMemAtomic<BigEndianByteOrder>(
+ return writeMemAtomic<ByteOrder::big>(
xc, traceData, mem, addr, flags, res);
}
@@ -213,7 +213,7 @@
amoMemAtomicLE(XC *xc, Trace::InstRecord *traceData, MemT &mem, Addr addr,
Request::Flags flags, AtomicOpFunctor *_amo_op)
{
- return amoMemAtomic<LittleEndianByteOrder>(
+ return amoMemAtomic<ByteOrder::little>(
xc, traceData, mem, addr, flags, _amo_op);
}
@@ -222,7 +222,7 @@
amoMemAtomicBE(XC *xc, Trace::InstRecord *traceData, MemT &mem, Addr addr,
Request::Flags flags, AtomicOpFunctor *_amo_op)
{
- return amoMemAtomic<BigEndianByteOrder>(
+ return amoMemAtomic<ByteOrder::big>(
xc, traceData, mem, addr, flags, _amo_op);
}
diff --git a/src/arch/mips/isa_traits.hh b/src/arch/mips/isa_traits.hh
index 5aa167e..aac595a 100644
--- a/src/arch/mips/isa_traits.hh
+++ b/src/arch/mips/isa_traits.hh
@@ -35,7 +35,7 @@
namespace MipsISA
{
-const ByteOrder GuestByteOrder = LittleEndianByteOrder;
+const ByteOrder GuestByteOrder = ByteOrder::little;
const Addr PageShift = 13;
const Addr PageBytes = ULL(1) << PageShift;
diff --git a/src/arch/mips/linux/linux.hh b/src/arch/mips/linux/linux.hh
index 4fcc710..ca24c89 100644
--- a/src/arch/mips/linux/linux.hh
+++ b/src/arch/mips/linux/linux.hh
@@ -35,7 +35,7 @@
{
public:
- static const ByteOrder byteOrder = LittleEndianByteOrder;
+ static const ByteOrder byteOrder = ByteOrder::little;
static const int TGT_SIGHUP = 0x000001;
static const int TGT_SIGINT = 0x000002;
diff --git a/src/arch/mips/process.cc b/src/arch/mips/process.cc
index cdda2b2..f8916af 100644
--- a/src/arch/mips/process.cc
+++ b/src/arch/mips/process.cc
@@ -170,10 +170,10 @@
initVirtMem->writeBlob(memState->getStackMin(), &argc, intSize);
copyStringArray(argv, argv_array_base, arg_data_base,
- LittleEndianByteOrder, *initVirtMem);
+ ByteOrder::little, *initVirtMem);
copyStringArray(envp, envp_array_base, env_data_base,
- LittleEndianByteOrder, *initVirtMem);
+ ByteOrder::little, *initVirtMem);
// Fix up the aux vectors which point to data.
for (auto &aux: auxv) {
diff --git a/src/arch/power/isa_traits.hh b/src/arch/power/isa_traits.hh
index ba7b2f3..4cf0c44 100644
--- a/src/arch/power/isa_traits.hh
+++ b/src/arch/power/isa_traits.hh
@@ -36,7 +36,7 @@
namespace PowerISA
{
-const ByteOrder GuestByteOrder = BigEndianByteOrder;
+const ByteOrder GuestByteOrder = ByteOrder::big;
const Addr PageShift = 12;
const Addr PageBytes = ULL(1) << PageShift;
diff --git a/src/arch/power/linux/linux.hh b/src/arch/power/linux/linux.hh
index 40dfbfb..86936cb 100644
--- a/src/arch/power/linux/linux.hh
+++ b/src/arch/power/linux/linux.hh
@@ -40,7 +40,7 @@
{
public:
- static const ByteOrder byteOrder = BigEndianByteOrder;
+ static const ByteOrder byteOrder = ByteOrder::big;
typedef int32_t time_t;
diff --git a/src/arch/power/process.cc b/src/arch/power/process.cc
index 8168482..19834e9 100644
--- a/src/arch/power/process.cc
+++ b/src/arch/power/process.cc
@@ -261,9 +261,9 @@
auxv_array_end += sizeof(zero);
copyStringArray(envp, envp_array_base, env_data_base,
- BigEndianByteOrder, *initVirtMem);
+ ByteOrder::big, *initVirtMem);
copyStringArray(argv, argv_array_base, arg_data_base,
- BigEndianByteOrder, *initVirtMem);
+ ByteOrder::big, *initVirtMem);
initVirtMem->writeBlob(argc_base, &guestArgc, intSize);
diff --git a/src/arch/riscv/isa_traits.hh b/src/arch/riscv/isa_traits.hh
index 1bb2d26..4cf455d 100644
--- a/src/arch/riscv/isa_traits.hh
+++ b/src/arch/riscv/isa_traits.hh
@@ -47,7 +47,7 @@
namespace RiscvISA
{
-const ByteOrder GuestByteOrder = LittleEndianByteOrder;
+const ByteOrder GuestByteOrder = ByteOrder::little;
const Addr PageShift = 12;
const Addr PageBytes = ULL(1) << PageShift;
diff --git a/src/arch/riscv/linux/linux.hh b/src/arch/riscv/linux/linux.hh
index 89c114d..0b10b7a 100644
--- a/src/arch/riscv/linux/linux.hh
+++ b/src/arch/riscv/linux/linux.hh
@@ -35,7 +35,7 @@
class RiscvLinux : public Linux
{
public:
- static const ByteOrder byteOrder = LittleEndianByteOrder;
+ static const ByteOrder byteOrder = ByteOrder::little;
};
class RiscvLinux64 : public RiscvLinux
diff --git a/src/arch/sparc/isa_traits.hh b/src/arch/sparc/isa_traits.hh
index e1917f9..3f7cdac 100644
--- a/src/arch/sparc/isa_traits.hh
+++ b/src/arch/sparc/isa_traits.hh
@@ -34,7 +34,7 @@
namespace SparcISA
{
-const ByteOrder GuestByteOrder = BigEndianByteOrder;
+const ByteOrder GuestByteOrder = ByteOrder::big;
const Addr PageShift = 13;
const Addr PageBytes = ULL(1) << PageShift;
diff --git a/src/arch/sparc/linux/linux.hh b/src/arch/sparc/linux/linux.hh
index 89cd207..ed50a30 100644
--- a/src/arch/sparc/linux/linux.hh
+++ b/src/arch/sparc/linux/linux.hh
@@ -36,7 +36,7 @@
{
public:
- static const ByteOrder byteOrder = BigEndianByteOrder;
+ static const ByteOrder byteOrder = ByteOrder::big;
struct tgt_stat
{
diff --git a/src/arch/sparc/process.cc b/src/arch/sparc/process.cc
index d28189c..159f582 100644
--- a/src/arch/sparc/process.cc
+++ b/src/arch/sparc/process.cc
@@ -381,9 +381,9 @@
auxv_array_end += sizeof(zero);
copyStringArray(envp, envp_array_base, env_data_base,
- BigEndianByteOrder, *initVirtMem);
+ ByteOrder::big, *initVirtMem);
copyStringArray(argv, argv_array_base, arg_data_base,
- BigEndianByteOrder, *initVirtMem);
+ ByteOrder::big, *initVirtMem);
initVirtMem->writeBlob(argc_base, &guestArgc, intSize);
diff --git a/src/arch/sparc/solaris/solaris.hh b/src/arch/sparc/solaris/solaris.hh
index 5ca811d..0462832 100644
--- a/src/arch/sparc/solaris/solaris.hh
+++ b/src/arch/sparc/solaris/solaris.hh
@@ -35,7 +35,7 @@
{
public:
- static const ByteOrder byteOrder = BigEndianByteOrder;
+ static const ByteOrder byteOrder = ByteOrder::big;
static SyscallFlagTransTable openFlagTable[];
diff --git a/src/arch/x86/isa_traits.hh b/src/arch/x86/isa_traits.hh
index ce90b4b..dee98dc 100644
--- a/src/arch/x86/isa_traits.hh
+++ b/src/arch/x86/isa_traits.hh
@@ -42,7 +42,7 @@
namespace X86ISA
{
- const ByteOrder GuestByteOrder = LittleEndianByteOrder;
+ const ByteOrder GuestByteOrder = ByteOrder::little;
const Addr PageShift = 12;
const Addr PageBytes = ULL(1) << PageShift;
diff --git a/src/arch/x86/linux/linux.hh b/src/arch/x86/linux/linux.hh
index 4705123..de27a74 100644
--- a/src/arch/x86/linux/linux.hh
+++ b/src/arch/x86/linux/linux.hh
@@ -46,7 +46,7 @@
class X86Linux : public Linux
{
public:
- static const ByteOrder byteOrder = LittleEndianByteOrder;
+ static const ByteOrder byteOrder = ByteOrder::little;
static void
archClone(uint64_t flags,
diff --git a/src/arch/x86/process.cc b/src/arch/x86/process.cc
index 0324e94..7718fdc 100644
--- a/src/arch/x86/process.cc
+++ b/src/arch/x86/process.cc
@@ -969,9 +969,9 @@
initVirtMem->writeString(aux_data_base, platform.c_str());
copyStringArray(envp, envp_array_base, env_data_base,
- LittleEndianByteOrder, *initVirtMem);
+ ByteOrder::little, *initVirtMem);
copyStringArray(argv, argv_array_base, arg_data_base,
- LittleEndianByteOrder, *initVirtMem);
+ ByteOrder::little, *initVirtMem);
initVirtMem->writeBlob(argc_base, &guestArgc, intSize);
diff --git a/src/base/pixel.cc b/src/base/pixel.cc
index 44cb2d1..c21d0f1 100644
--- a/src/base/pixel.cc
+++ b/src/base/pixel.cc
@@ -43,10 +43,10 @@
const PixelConverter PixelConverter::rgba8888_le(4, 0, 8, 16, 8, 8, 8);
const PixelConverter PixelConverter::rgba8888_be(4, 0, 8, 16, 8, 8, 8,
- BigEndianByteOrder);
+ ByteOrder::big);
const PixelConverter PixelConverter::rgb565_le(2, 0, 5, 11, 5, 6, 5);
const PixelConverter PixelConverter::rgb565_be(2, 0, 5, 11, 5, 6, 5,
- BigEndianByteOrder);
+ ByteOrder::big);
PixelConverter::PixelConverter(unsigned _length,
unsigned ro, unsigned go, unsigned bo,
@@ -74,7 +74,7 @@
{
uint32_t word(0);
- if (byte_order == LittleEndianByteOrder) {
+ if (byte_order == ByteOrder::little) {
for (int i = 0; i < length; ++i)
word |= p[i] << (8 * i);
} else {
@@ -88,7 +88,7 @@
void
PixelConverter::writeWord(uint8_t *p, uint32_t word) const
{
- if (byte_order == LittleEndianByteOrder) {
+ if (byte_order == ByteOrder::little) {
for (int i = 0; i < length; ++i)
p[i] = (word >> (8 * i)) & 0xFF;
} else {
diff --git a/src/base/pixel.hh b/src/base/pixel.hh
index a1c2b9a..7937e89 100644
--- a/src/base/pixel.hh
+++ b/src/base/pixel.hh
@@ -127,7 +127,7 @@
PixelConverter(unsigned length,
unsigned ro, unsigned go, unsigned bo,
unsigned rw, unsigned gw, unsigned bw,
- ByteOrder byte_order = LittleEndianByteOrder);
+ ByteOrder byte_order = ByteOrder::little);
/** Get the Pixel representation of a color word. */
Pixel toPixel(uint32_t word) const {
diff --git a/src/base/types.hh b/src/base/types.hh
index 4f606cd..7ae573d 100644
--- a/src/base/types.hh
+++ b/src/base/types.hh
@@ -43,6 +43,8 @@
#include <stdexcept>
#include "base/refcnt.hh"
+/* Hide the fact that this enum is generated by Python */
+#include "enums/ByteOrder.hh"
/** uint64_t constant */
#define ULL(N) ((uint64_t)N##ULL)
@@ -242,9 +244,4 @@
// we just create an alias.
constexpr decltype(nullptr) NoFault = nullptr;
-enum ByteOrder {
- BigEndianByteOrder,
- LittleEndianByteOrder
-};
-
#endif // __BASE_TYPES_HH__
diff --git a/src/base/vnc/vncserver.cc b/src/base/vnc/vncserver.cc
index c6b1fe6..dbf4d9c 100644
--- a/src/base/vnc/vncserver.cc
+++ b/src/base/vnc/vncserver.cc
@@ -75,7 +75,7 @@
4, // 4 bytes / pixel
16, 8, 0, // R in [23, 16], G in [15, 8], B in [7, 0]
8, 8, 8, // 8 bits / channel
- LittleEndianByteOrder);
+ ByteOrder::little);
/** @file
* Implementiation of a VNC server
@@ -130,7 +130,7 @@
// around for telling the client and making sure it cooperates
pixelFormat.bpp = 8 * pixelConverter.length;
pixelFormat.depth = pixelConverter.depth;
- pixelFormat.bigendian = pixelConverter.byte_order == BigEndianByteOrder;
+ pixelFormat.bigendian = pixelConverter.byte_order == ByteOrder::big;
pixelFormat.truecolor = 1;
pixelFormat.redmax = pixelConverter.ch_r.mask;
pixelFormat.greenmax = pixelConverter.ch_g.mask;
diff --git a/src/dev/arm/amba_device.cc b/src/dev/arm/amba_device.cc
index 76872b1..4daf943 100644
--- a/src/dev/arm/amba_device.cc
+++ b/src/dev/arm/amba_device.cc
@@ -81,6 +81,6 @@
(amba_id >> byte) & 0xFF,
pkt->getAddr() - pio_addr, byte);
- pkt->setUintX((amba_id >> byte) & 0xFF, LittleEndianByteOrder);
+ pkt->setUintX((amba_id >> byte) & 0xFF, ByteOrder::little);
return true;
}
diff --git a/src/dev/arm/fvp_base_pwr_ctrl.cc b/src/dev/arm/fvp_base_pwr_ctrl.cc
index 7ab4e40..8627598 100644
--- a/src/dev/arm/fvp_base_pwr_ctrl.cc
+++ b/src/dev/arm/fvp_base_pwr_ctrl.cc
@@ -151,7 +151,7 @@
DPRINTF(FVPBasePwrCtrl, "FVPBasePwrCtrl::read: 0x%x<-0x%x(%i)\n", resp,
addr, size);
- pkt->setUintX(resp, LittleEndianByteOrder);
+ pkt->setUintX(resp, ByteOrder::little);
pkt->makeResponse();
return pioDelay;
}
@@ -163,7 +163,7 @@
const size_t size = pkt->getSize();
panic_if(size != 4, "FVPBasePwrCtrl::write: Invalid size %i\n", size);
- uint64_t data = pkt->getUintX(LittleEndianByteOrder);
+ uint64_t data = pkt->getUintX(ByteOrder::little);
// Software may use the power controller to check for core presence
// If core is not present, return an invalid MPID as notification
diff --git a/src/dev/arm/generic_timer.cc b/src/dev/arm/generic_timer.cc
index da8de08..254175a 100644
--- a/src/dev/arm/generic_timer.cc
+++ b/src/dev/arm/generic_timer.cc
@@ -999,7 +999,7 @@
DPRINTF(Timer, "GenericTimerFrame::read: 0x%x<-0x%x(%i) [S = %u]\n", resp,
addr, size, is_sec);
- pkt->setUintX(resp, LittleEndianByteOrder);
+ pkt->setUintX(resp, ByteOrder::little);
pkt->makeResponse();
return 0;
}
@@ -1014,7 +1014,7 @@
"GenericTimerFrame::write: Invalid size %i\n", size);
bool to_el0 = false;
- const uint64_t data = pkt->getUintX(LittleEndianByteOrder);
+ const uint64_t data = pkt->getUintX(ByteOrder::little);
Addr offset = 0;
if (timerRange.contains(addr)) {
offset = addr - timerRange.start();
@@ -1313,7 +1313,7 @@
DPRINTF(Timer, "GenericTimerMem::read: 0x%x<-0x%x(%i) [S = %u]\n", resp,
addr, size, is_sec);
- pkt->setUintX(resp, LittleEndianByteOrder);
+ pkt->setUintX(resp, ByteOrder::little);
pkt->makeResponse();
return 0;
}
@@ -1327,7 +1327,7 @@
panic_if(size != 4 && size != 8,
"GenericTimerMem::write: Invalid size %i\n", size);
- const uint64_t data = pkt->getUintX(LittleEndianByteOrder);
+ const uint64_t data = pkt->getUintX(ByteOrder::little);
if (counterCtrlRange.contains(addr))
counterCtrlWrite(addr - counterCtrlRange.start(), size, data, is_sec);
else if (counterStatusRange.contains(addr))
diff --git a/src/dev/arm/gic_v3.cc b/src/dev/arm/gic_v3.cc
index 83f2c83..596f170 100644
--- a/src/dev/arm/gic_v3.cc
+++ b/src/dev/arm/gic_v3.cc
@@ -127,7 +127,7 @@
panic("Gicv3::read(): unknown address %#x\n", addr);
}
- pkt->setUintX(resp, LittleEndianByteOrder);
+ pkt->setUintX(resp, ByteOrder::little);
pkt->makeAtomicResponse();
return delay;
}
@@ -136,7 +136,7 @@
Gicv3::write(PacketPtr pkt)
{
const size_t size = pkt->getSize();
- uint64_t data = pkt->getUintX(LittleEndianByteOrder);
+ uint64_t data = pkt->getUintX(ByteOrder::little);
const Addr addr = pkt->getAddr();
bool is_secure_access = pkt->isSecure();
Tick delay = 0;
diff --git a/src/dev/arm/gic_v3_its.cc b/src/dev/arm/gic_v3_its.cc
index 442008f..4ea7219 100644
--- a/src/dev/arm/gic_v3_its.cc
+++ b/src/dev/arm/gic_v3_its.cc
@@ -882,7 +882,7 @@
}
}
- pkt->setUintX(value, LittleEndianByteOrder);
+ pkt->setUintX(value, ByteOrder::little);
pkt->makeAtomicResponse();
return pioDelay;
}
diff --git a/src/dev/arm/hdlcd.cc b/src/dev/arm/hdlcd.cc
index 3478449..cf5995a 100644
--- a/src/dev/arm/hdlcd.cc
+++ b/src/dev/arm/hdlcd.cc
@@ -434,7 +434,7 @@
HDLcd::pixelConverter() const
{
ByteOrder byte_order(
- pixel_format.big_endian ? BigEndianByteOrder : LittleEndianByteOrder);
+ pixel_format.big_endian ? ByteOrder::big : ByteOrder::little);
/* Some Linux kernels have a broken driver that swaps the red and
* blue color select registers. */
diff --git a/src/dev/arm/kmi.cc b/src/dev/arm/kmi.cc
index 246fedb..517a79f 100644
--- a/src/dev/arm/kmi.cc
+++ b/src/dev/arm/kmi.cc
@@ -95,7 +95,7 @@
default:
if (readId(pkt, ambaId, pioAddr)) {
// Hack for variable size accesses
- data = pkt->getUintX(LittleEndianByteOrder);
+ data = pkt->getUintX(ByteOrder::little);
break;
}
@@ -103,7 +103,7 @@
break;
}
- pkt->setUintX(data, LittleEndianByteOrder);
+ pkt->setUintX(data, ByteOrder::little);
pkt->makeAtomicResponse();
return pioDelay;
}
@@ -115,7 +115,7 @@
assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize);
Addr daddr = pkt->getAddr() - pioAddr;
- const uint32_t data = pkt->getUintX(LittleEndianByteOrder);
+ const uint32_t data = pkt->getUintX(ByteOrder::little);
panic_if(pkt->getSize() != 1,
"PL050: Unexpected write size "
diff --git a/src/dev/arm/pl011.cc b/src/dev/arm/pl011.cc
index a60276d..9b83cf8 100755
--- a/src/dev/arm/pl011.cc
+++ b/src/dev/arm/pl011.cc
@@ -137,7 +137,7 @@
default:
if (readId(pkt, AMBA_ID, pioAddr)) {
// Hack for variable size accesses
- data = pkt->getUintX(LittleEndianByteOrder);
+ data = pkt->getUintX(ByteOrder::little);
break;
}
diff --git a/src/dev/arm/pl111.cc b/src/dev/arm/pl111.cc
index 111de03..f36b33f 100644
--- a/src/dev/arm/pl111.cc
+++ b/src/dev/arm/pl111.cc
@@ -182,7 +182,7 @@
default:
if (readId(pkt, AMBA_ID, pioAddr)) {
// Hack for variable size accesses
- data = pkt->getUintX(LittleEndianByteOrder);
+ data = pkt->getUintX(ByteOrder::little);
break;
} else if (daddr >= CrsrImage && daddr <= 0xBFC) {
// CURSOR IMAGE
@@ -203,7 +203,7 @@
}
}
- pkt->setUintX(data, LittleEndianByteOrder);
+ pkt->setUintX(data, ByteOrder::little);
pkt->makeAtomicResponse();
return pioDelay;
}
@@ -215,7 +215,7 @@
// use a temporary data since the LCD registers are read/written with
// different size operations
//
- const uint32_t data = pkt->getUintX(LittleEndianByteOrder);
+ const uint32_t data = pkt->getUintX(ByteOrder::little);
assert(pkt->getAddr() >= pioAddr &&
pkt->getAddr() < pioAddr + pioSize);
@@ -383,13 +383,13 @@
bytesPerPixel,
offsets[2], offsets[1], offsets[0],
rw, gw, bw,
- LittleEndianByteOrder);
+ ByteOrder::little);
} else {
return PixelConverter(
bytesPerPixel,
offsets[0], offsets[1], offsets[2],
rw, gw, bw,
- LittleEndianByteOrder);
+ ByteOrder::little);
}
}
diff --git a/src/dev/arm/rtc_pl031.cc b/src/dev/arm/rtc_pl031.cc
index b2b2322..3ff478f 100644
--- a/src/dev/arm/rtc_pl031.cc
+++ b/src/dev/arm/rtc_pl031.cc
@@ -90,7 +90,7 @@
default:
if (readId(pkt, ambaId, pioAddr)) {
// Hack for variable sized access
- data = pkt->getUintX(LittleEndianByteOrder);
+ data = pkt->getUintX(ByteOrder::little);
break;
}
panic("Tried to read PL031 at offset %#x that doesn't exist\n", daddr);
diff --git a/src/dev/arm/watchdog_sp805.cc b/src/dev/arm/watchdog_sp805.cc
index 3fd7006..32417e0 100644
--- a/src/dev/arm/watchdog_sp805.cc
+++ b/src/dev/arm/watchdog_sp805.cc
@@ -93,7 +93,7 @@
break;
default:
if (readId(pkt, ambaId, pioAddr))
- resp = pkt->getUintX(LittleEndianByteOrder);
+ resp = pkt->getUintX(ByteOrder::little);
else
warn("Sp805::read: Unexpected address (0x%x:%i), assuming RAZ\n",
addr, size);
@@ -101,7 +101,7 @@
DPRINTF(Sp805, "Sp805::read: 0x%x<-0x%x(%i)\n", resp, addr, size);
- pkt->setUintX(resp, LittleEndianByteOrder);
+ pkt->setUintX(resp, ByteOrder::little);
pkt->makeResponse();
return pioDelay;
}
@@ -113,7 +113,7 @@
const size_t size = pkt->getSize();
panic_if(size != 4, "Sp805::write: Invalid size %i\n", size);
- uint64_t data = pkt->getUintX(LittleEndianByteOrder);
+ uint64_t data = pkt->getUintX(ByteOrder::little);
switch (addr) {
case WDOGLOAD:
if (writeAccessEnabled) {
diff --git a/src/dev/serial/simple.cc b/src/dev/serial/simple.cc
index 9450b89..97018ab 100644
--- a/src/dev/serial/simple.cc
+++ b/src/dev/serial/simple.cc
@@ -44,7 +44,7 @@
SimpleUart::SimpleUart(const SimpleUartParams *p)
: Uart(p, p->pio_size),
- byteOrder(p->big_endian ? BigEndianByteOrder : LittleEndianByteOrder),
+ byteOrder(p->big_endian ? ByteOrder::big : ByteOrder::little),
endOnEOT(p->end_on_eot)
{
}
diff --git a/src/mem/cache/prefetch/base.hh b/src/mem/cache/prefetch/base.hh
index cdd0f5b..4afacf0 100644
--- a/src/mem/cache/prefetch/base.hh
+++ b/src/mem/cache/prefetch/base.hh
@@ -206,10 +206,10 @@
panic("PrefetchInfo::get called with a request with no data.");
}
switch (endian) {
- case BigEndianByteOrder:
+ case ByteOrder::big:
return betoh(*(T*)data);
- case LittleEndianByteOrder:
+ case ByteOrder::little:
return letoh(*(T*)data);
default:
diff --git a/src/mem/packet_access.hh b/src/mem/packet_access.hh
index 98f3283..2190840 100644
--- a/src/mem/packet_access.hh
+++ b/src/mem/packet_access.hh
@@ -82,10 +82,10 @@
Packet::get(ByteOrder endian) const
{
switch (endian) {
- case BigEndianByteOrder:
+ case ByteOrder::big:
return getBE<T>();
- case LittleEndianByteOrder:
+ case ByteOrder::little:
return getLE<T>();
default:
@@ -112,10 +112,10 @@
Packet::set(T v, ByteOrder endian)
{
switch (endian) {
- case BigEndianByteOrder:
+ case ByteOrder::big:
return setBE<T>(v);
- case LittleEndianByteOrder:
+ case ByteOrder::little:
return setLE<T>(v);
default:
diff --git a/src/python/m5/params.py b/src/python/m5/params.py
index c5d26d4..4e58667 100644
--- a/src/python/m5/params.py
+++ b/src/python/m5/params.py
@@ -1513,6 +1513,14 @@
# If not None, use this as the enum name rather than this class name
enum_name = None
+class ByteOrder(ScopedEnum):
+ """Enum representing component's byte order (endianness)"""
+
+ vals = [
+ 'big',
+ 'little',
+ ]
+
# how big does a rounding error need to be before we warn about it?
frequency_tolerance = 0.001 # 0.1%
diff --git a/src/sim/byteswap.hh b/src/sim/byteswap.hh
index 06205cd..fbe0302 100644
--- a/src/sim/byteswap.hh
+++ b/src/sim/byteswap.hh
@@ -136,13 +136,13 @@
//For conversions not involving the guest system, we can define the functions
//conditionally based on the BYTE_ORDER macro and outside of the namespaces
#if (defined(_BIG_ENDIAN) || !defined(_LITTLE_ENDIAN)) && BYTE_ORDER == BIG_ENDIAN
-const ByteOrder HostByteOrder = BigEndianByteOrder;
+const ByteOrder HostByteOrder = ByteOrder::big;
template <typename T> inline T htole(T value) {return swap_byte(value);}
template <typename T> inline T letoh(T value) {return swap_byte(value);}
template <typename T> inline T htobe(T value) {return value;}
template <typename T> inline T betoh(T value) {return value;}
#elif defined(_LITTLE_ENDIAN) || BYTE_ORDER == LITTLE_ENDIAN
-const ByteOrder HostByteOrder = LittleEndianByteOrder;
+const ByteOrder HostByteOrder = ByteOrder::little;
template <typename T> inline T htole(T value) {return value;}
template <typename T> inline T letoh(T value) {return value;}
template <typename T> inline T htobe(T value) {return swap_byte(value);}
@@ -154,14 +154,14 @@
template <typename T>
inline T htog(T value, ByteOrder guest_byte_order)
{
- return guest_byte_order == BigEndianByteOrder ?
+ return guest_byte_order == ByteOrder::big ?
htobe(value) : htole(value);
}
template <typename T>
inline T gtoh(T value, ByteOrder guest_byte_order)
{
- return guest_byte_order == BigEndianByteOrder ?
+ return guest_byte_order == ByteOrder::big ?
betoh(value) : letoh(value);
}
diff --git a/src/sim/byteswap.test.cc b/src/sim/byteswap.test.cc
index 08c4dd3..27e1fc6 100644
--- a/src/sim/byteswap.test.cc
+++ b/src/sim/byteswap.test.cc
@@ -86,102 +86,102 @@
{
#if (defined(_BIG_ENDIAN)||!defined(_LITTLE_ENDIAN)) && BYTE_ORDER==BIG_ENDIAN
EXPECT_EQ(0xefcdab8967452301, htog((uint64_t)0xefcdab8967452301,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0x1032547698badcfe, htog((uint64_t)0x1032547698badcfe,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0xb14171b771b01c0b, htog((uint64_t)0xb14171b771b01c0b,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0xffffffff00000000, htog((uint64_t)0xffffffff00000000,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0x5555555555555555, htog((uint64_t)0x5555555555555555,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0xa0a0a0a0a0a0a0a0, htog((uint64_t)0xa0a0a0a0a0a0a0a0,
- BigEndianByteOrder));
- EXPECT_EQ(0xefcd2301, htog((uint32_t)0xefcd2301, BigEndianByteOrder));
- EXPECT_EQ(0x1032dcfe, htog((uint32_t)0x1032dcfe, BigEndianByteOrder));
- EXPECT_EQ(0xb1411c0b, htog((uint32_t)0xb1411c0b, BigEndianByteOrder));
- EXPECT_EQ(0xffff0000, htog((uint32_t)0xffff0000, BigEndianByteOrder));
- EXPECT_EQ(0x55555555, htog((uint32_t)0x55555555, BigEndianByteOrder));
- EXPECT_EQ(0xa0a0a0a0, htog((uint32_t)0xa0a0a0a0, BigEndianByteOrder));
- EXPECT_EQ(0xef01, htog((uint16_t)0xef01, BigEndianByteOrder));
- EXPECT_EQ(0x10fe, htog((uint16_t)0x10fe, BigEndianByteOrder));
- EXPECT_EQ(0xb10b, htog((uint16_t)0xb10b, BigEndianByteOrder));
- EXPECT_EQ(0xff00, htog((uint16_t)0xff00, BigEndianByteOrder));
- EXPECT_EQ(0x5555, htog((uint16_t)0x5555, BigEndianByteOrder));
- EXPECT_EQ(0xa0a0, htog((uint16_t)0xa0a0, BigEndianByteOrder));
+ ByteOrder::big));
+ EXPECT_EQ(0xefcd2301, htog((uint32_t)0xefcd2301, ByteOrder::big));
+ EXPECT_EQ(0x1032dcfe, htog((uint32_t)0x1032dcfe, ByteOrder::big));
+ EXPECT_EQ(0xb1411c0b, htog((uint32_t)0xb1411c0b, ByteOrder::big));
+ EXPECT_EQ(0xffff0000, htog((uint32_t)0xffff0000, ByteOrder::big));
+ EXPECT_EQ(0x55555555, htog((uint32_t)0x55555555, ByteOrder::big));
+ EXPECT_EQ(0xa0a0a0a0, htog((uint32_t)0xa0a0a0a0, ByteOrder::big));
+ EXPECT_EQ(0xef01, htog((uint16_t)0xef01, ByteOrder::big));
+ EXPECT_EQ(0x10fe, htog((uint16_t)0x10fe, ByteOrder::big));
+ EXPECT_EQ(0xb10b, htog((uint16_t)0xb10b, ByteOrder::big));
+ EXPECT_EQ(0xff00, htog((uint16_t)0xff00, ByteOrder::big));
+ EXPECT_EQ(0x5555, htog((uint16_t)0x5555, ByteOrder::big));
+ EXPECT_EQ(0xa0a0, htog((uint16_t)0xa0a0, ByteOrder::big));
EXPECT_EQ(0x0123456789abcdef, htog((uint64_t)0xefcdab8967452301,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0xfedcba9876543210, htog((uint64_t)0x1032547698badcfe,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0x0b1cb071b77141b1, htog((uint64_t)0xb14171b771b01c0b,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0x00000000ffffffff, htog((uint64_t)0xffffffff00000000,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0x5555555555555555, htog((uint64_t)0x5555555555555555,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0xa0a0a0a0a0a0a0a0, htog((uint64_t)0xa0a0a0a0a0a0a0a0,
- LittleEndianByteOrder));
- EXPECT_EQ(0x0123cdef, htog((uint32_t)0xefcd2301, LittleEndianByteOrder));
- EXPECT_EQ(0xfedc3210, htog((uint32_t)0x1032dcfe, LittleEndianByteOrder));
- EXPECT_EQ(0x0b1c41b1, htog((uint32_t)0xb1411c0b, LittleEndianByteOrder));
- EXPECT_EQ(0x0000ffff, htog((uint32_t)0xffff0000, LittleEndianByteOrder));
- EXPECT_EQ(0x55555555, htog((uint32_t)0x55555555, LittleEndianByteOrder));
- EXPECT_EQ(0xa0a0a0a0, htog((uint32_t)0xa0a0a0a0, LittleEndianByteOrder));
- EXPECT_EQ(0x01ef, htog((uint16_t)0xef01, LittleEndianByteOrder));
- EXPECT_EQ(0xfe10, htog((uint16_t)0x10fe, LittleEndianByteOrder));
- EXPECT_EQ(0x0bb1, htog((uint16_t)0xb10b, LittleEndianByteOrder));
- EXPECT_EQ(0x00ff, htog((uint16_t)0xff00, LittleEndianByteOrder));
- EXPECT_EQ(0x5555, htog((uint16_t)0x5555, LittleEndianByteOrder));
- EXPECT_EQ(0xa0a0, htog((uint16_t)0xa0a0, LittleEndianByteOrder));
+ ByteOrder::little));
+ EXPECT_EQ(0x0123cdef, htog((uint32_t)0xefcd2301, ByteOrder::little));
+ EXPECT_EQ(0xfedc3210, htog((uint32_t)0x1032dcfe, ByteOrder::little));
+ EXPECT_EQ(0x0b1c41b1, htog((uint32_t)0xb1411c0b, ByteOrder::little));
+ EXPECT_EQ(0x0000ffff, htog((uint32_t)0xffff0000, ByteOrder::little));
+ EXPECT_EQ(0x55555555, htog((uint32_t)0x55555555, ByteOrder::little));
+ EXPECT_EQ(0xa0a0a0a0, htog((uint32_t)0xa0a0a0a0, ByteOrder::little));
+ EXPECT_EQ(0x01ef, htog((uint16_t)0xef01, ByteOrder::little));
+ EXPECT_EQ(0xfe10, htog((uint16_t)0x10fe, ByteOrder::little));
+ EXPECT_EQ(0x0bb1, htog((uint16_t)0xb10b, ByteOrder::little));
+ EXPECT_EQ(0x00ff, htog((uint16_t)0xff00, ByteOrder::little));
+ EXPECT_EQ(0x5555, htog((uint16_t)0x5555, ByteOrder::little));
+ EXPECT_EQ(0xa0a0, htog((uint16_t)0xa0a0, ByteOrder::little));
#elif defined(_LITTLE_ENDIAN) || BYTE_ORDER==LITTLE_ENDIAN
EXPECT_EQ(0x0123456789abcdef, htog((uint64_t)0xefcdab8967452301,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0xfedcba9876543210, htog((uint64_t)0x1032547698badcfe,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0x0b1cb071b77141b1, htog((uint64_t)0xb14171b771b01c0b,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0x00000000ffffffff, htog((uint64_t)0xffffffff00000000,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0x5555555555555555, htog((uint64_t)0x5555555555555555,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0xa0a0a0a0a0a0a0a0, htog((uint64_t)0xa0a0a0a0a0a0a0a0,
- BigEndianByteOrder));
- EXPECT_EQ(0x0123cdef, htog((uint32_t)0xefcd2301, BigEndianByteOrder));
- EXPECT_EQ(0xfedc3210, htog((uint32_t)0x1032dcfe, BigEndianByteOrder));
- EXPECT_EQ(0x0b1c41b1, htog((uint32_t)0xb1411c0b, BigEndianByteOrder));
- EXPECT_EQ(0x0000ffff, htog((uint32_t)0xffff0000, BigEndianByteOrder));
- EXPECT_EQ(0x55555555, htog((uint32_t)0x55555555, BigEndianByteOrder));
- EXPECT_EQ(0xa0a0a0a0, htog((uint32_t)0xa0a0a0a0, BigEndianByteOrder));
- EXPECT_EQ(0x01ef, htog((uint16_t)0xef01, BigEndianByteOrder));
- EXPECT_EQ(0xfe10, htog((uint16_t)0x10fe, BigEndianByteOrder));
- EXPECT_EQ(0x0bb1, htog((uint16_t)0xb10b, BigEndianByteOrder));
- EXPECT_EQ(0x00ff, htog((uint16_t)0xff00, BigEndianByteOrder));
- EXPECT_EQ(0x5555, htog((uint16_t)0x5555, BigEndianByteOrder));
- EXPECT_EQ(0xa0a0, htog((uint16_t)0xa0a0, BigEndianByteOrder));
+ ByteOrder::big));
+ EXPECT_EQ(0x0123cdef, htog((uint32_t)0xefcd2301, ByteOrder::big));
+ EXPECT_EQ(0xfedc3210, htog((uint32_t)0x1032dcfe, ByteOrder::big));
+ EXPECT_EQ(0x0b1c41b1, htog((uint32_t)0xb1411c0b, ByteOrder::big));
+ EXPECT_EQ(0x0000ffff, htog((uint32_t)0xffff0000, ByteOrder::big));
+ EXPECT_EQ(0x55555555, htog((uint32_t)0x55555555, ByteOrder::big));
+ EXPECT_EQ(0xa0a0a0a0, htog((uint32_t)0xa0a0a0a0, ByteOrder::big));
+ EXPECT_EQ(0x01ef, htog((uint16_t)0xef01, ByteOrder::big));
+ EXPECT_EQ(0xfe10, htog((uint16_t)0x10fe, ByteOrder::big));
+ EXPECT_EQ(0x0bb1, htog((uint16_t)0xb10b, ByteOrder::big));
+ EXPECT_EQ(0x00ff, htog((uint16_t)0xff00, ByteOrder::big));
+ EXPECT_EQ(0x5555, htog((uint16_t)0x5555, ByteOrder::big));
+ EXPECT_EQ(0xa0a0, htog((uint16_t)0xa0a0, ByteOrder::big));
EXPECT_EQ(0xefcdab8967452301, htog((uint64_t)0xefcdab8967452301,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0x1032547698badcfe, htog((uint64_t)0x1032547698badcfe,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0xb14171b771b01c0b, htog((uint64_t)0xb14171b771b01c0b,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0xffffffff00000000, htog((uint64_t)0xffffffff00000000,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0x5555555555555555, htog((uint64_t)0x5555555555555555,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0xa0a0a0a0a0a0a0a0, htog((uint64_t)0xa0a0a0a0a0a0a0a0,
- LittleEndianByteOrder));
- EXPECT_EQ(0xefcd2301, htog((uint32_t)0xefcd2301, LittleEndianByteOrder));
- EXPECT_EQ(0x1032dcfe, htog((uint32_t)0x1032dcfe, LittleEndianByteOrder));
- EXPECT_EQ(0xb1411c0b, htog((uint32_t)0xb1411c0b, LittleEndianByteOrder));
- EXPECT_EQ(0xffff0000, htog((uint32_t)0xffff0000, LittleEndianByteOrder));
- EXPECT_EQ(0x55555555, htog((uint32_t)0x55555555, LittleEndianByteOrder));
- EXPECT_EQ(0xa0a0a0a0, htog((uint32_t)0xa0a0a0a0, LittleEndianByteOrder));
- EXPECT_EQ(0xef01, htog((uint16_t)0xef01, LittleEndianByteOrder));
- EXPECT_EQ(0x10fe, htog((uint16_t)0x10fe, LittleEndianByteOrder));
- EXPECT_EQ(0xb10b, htog((uint16_t)0xb10b, LittleEndianByteOrder));
- EXPECT_EQ(0xff00, htog((uint16_t)0xff00, LittleEndianByteOrder));
- EXPECT_EQ(0x5555, htog((uint16_t)0x5555, LittleEndianByteOrder));
- EXPECT_EQ(0xa0a0, htog((uint16_t)0xa0a0, LittleEndianByteOrder));
+ ByteOrder::little));
+ EXPECT_EQ(0xefcd2301, htog((uint32_t)0xefcd2301, ByteOrder::little));
+ EXPECT_EQ(0x1032dcfe, htog((uint32_t)0x1032dcfe, ByteOrder::little));
+ EXPECT_EQ(0xb1411c0b, htog((uint32_t)0xb1411c0b, ByteOrder::little));
+ EXPECT_EQ(0xffff0000, htog((uint32_t)0xffff0000, ByteOrder::little));
+ EXPECT_EQ(0x55555555, htog((uint32_t)0x55555555, ByteOrder::little));
+ EXPECT_EQ(0xa0a0a0a0, htog((uint32_t)0xa0a0a0a0, ByteOrder::little));
+ EXPECT_EQ(0xef01, htog((uint16_t)0xef01, ByteOrder::little));
+ EXPECT_EQ(0x10fe, htog((uint16_t)0x10fe, ByteOrder::little));
+ EXPECT_EQ(0xb10b, htog((uint16_t)0xb10b, ByteOrder::little));
+ EXPECT_EQ(0xff00, htog((uint16_t)0xff00, ByteOrder::little));
+ EXPECT_EQ(0x5555, htog((uint16_t)0x5555, ByteOrder::little));
+ EXPECT_EQ(0xa0a0, htog((uint16_t)0xa0a0, ByteOrder::little));
#else
#error Invalid Endianess
#endif
@@ -191,102 +191,102 @@
{
#if (defined(_BIG_ENDIAN)||!defined(_LITTLE_ENDIAN)) && BYTE_ORDER==BIG_ENDIAN
EXPECT_EQ(0xefcdab8967452301, gtoh((uint64_t)0xefcdab8967452301,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0x1032547698badcfe, gtoh((uint64_t)0x1032547698badcfe,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0xb14171b771b01c0b, gtoh((uint64_t)0xb14171b771b01c0b,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0xffffffff00000000, gtoh((uint64_t)0xffffffff00000000,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0x5555555555555555, gtoh((uint64_t)0x5555555555555555,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0xa0a0a0a0a0a0a0a0, gtoh((uint64_t)0xa0a0a0a0a0a0a0a0,
- BigEndianByteOrder));
- EXPECT_EQ(0xefcd2301, gtoh((uint32_t)0xefcd2301, BigEndianByteOrder));
- EXPECT_EQ(0x1032dcfe, gtoh((uint32_t)0x1032dcfe, BigEndianByteOrder));
- EXPECT_EQ(0xb1411c0b, gtoh((uint32_t)0xb1411c0b, BigEndianByteOrder));
- EXPECT_EQ(0xffff0000, gtoh((uint32_t)0xffff0000, BigEndianByteOrder));
- EXPECT_EQ(0x55555555, gtoh((uint32_t)0x55555555, BigEndianByteOrder));
- EXPECT_EQ(0xa0a0a0a0, gtoh((uint32_t)0xa0a0a0a0, BigEndianByteOrder));
- EXPECT_EQ(0xef01, gtoh((uint16_t)0xef01, BigEndianByteOrder));
- EXPECT_EQ(0x10fe, gtoh((uint16_t)0x10fe, BigEndianByteOrder));
- EXPECT_EQ(0xb10b, gtoh((uint16_t)0xb10b, BigEndianByteOrder));
- EXPECT_EQ(0xff00, gtoh((uint16_t)0xff00, BigEndianByteOrder));
- EXPECT_EQ(0x5555, gtoh((uint16_t)0x5555, BigEndianByteOrder));
- EXPECT_EQ(0xa0a0, gtoh((uint16_t)0xa0a0, BigEndianByteOrder));
+ ByteOrder::big));
+ EXPECT_EQ(0xefcd2301, gtoh((uint32_t)0xefcd2301, ByteOrder::big));
+ EXPECT_EQ(0x1032dcfe, gtoh((uint32_t)0x1032dcfe, ByteOrder::big));
+ EXPECT_EQ(0xb1411c0b, gtoh((uint32_t)0xb1411c0b, ByteOrder::big));
+ EXPECT_EQ(0xffff0000, gtoh((uint32_t)0xffff0000, ByteOrder::big));
+ EXPECT_EQ(0x55555555, gtoh((uint32_t)0x55555555, ByteOrder::big));
+ EXPECT_EQ(0xa0a0a0a0, gtoh((uint32_t)0xa0a0a0a0, ByteOrder::big));
+ EXPECT_EQ(0xef01, gtoh((uint16_t)0xef01, ByteOrder::big));
+ EXPECT_EQ(0x10fe, gtoh((uint16_t)0x10fe, ByteOrder::big));
+ EXPECT_EQ(0xb10b, gtoh((uint16_t)0xb10b, ByteOrder::big));
+ EXPECT_EQ(0xff00, gtoh((uint16_t)0xff00, ByteOrder::big));
+ EXPECT_EQ(0x5555, gtoh((uint16_t)0x5555, ByteOrder::big));
+ EXPECT_EQ(0xa0a0, gtoh((uint16_t)0xa0a0, ByteOrder::big));
EXPECT_EQ(0x0123456789abcdef, gtoh((uint64_t)0xefcdab8967452301,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0xfedcba9876543210, gtoh((uint64_t)0x1032547698badcfe,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0x0b1cb071b77141b1, gtoh((uint64_t)0xb14171b771b01c0b,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0x00000000ffffffff, gtoh((uint64_t)0xffffffff00000000,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0x5555555555555555, gtoh((uint64_t)0x5555555555555555,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0xa0a0a0a0a0a0a0a0, gtoh((uint64_t)0xa0a0a0a0a0a0a0a0,
- LittleEndianByteOrder));
- EXPECT_EQ(0x0123cdef, gtoh((uint32_t)0xefcd2301, LittleEndianByteOrder));
- EXPECT_EQ(0xfedc3210, gtoh((uint32_t)0x1032dcfe, LittleEndianByteOrder));
- EXPECT_EQ(0x0b1c41b1, gtoh((uint32_t)0xb1411c0b, LittleEndianByteOrder));
- EXPECT_EQ(0x0000ffff, gtoh((uint32_t)0xffff0000, LittleEndianByteOrder));
- EXPECT_EQ(0x55555555, gtoh((uint32_t)0x55555555, LittleEndianByteOrder));
- EXPECT_EQ(0xa0a0a0a0, gtoh((uint32_t)0xa0a0a0a0, LittleEndianByteOrder));
- EXPECT_EQ(0x01ef, gtoh((uint16_t)0xef01, LittleEndianByteOrder));
- EXPECT_EQ(0xfe10, gtoh((uint16_t)0x10fe, LittleEndianByteOrder));
- EXPECT_EQ(0x0bb1, gtoh((uint16_t)0xb10b, LittleEndianByteOrder));
- EXPECT_EQ(0x00ff, gtoh((uint16_t)0xff00, LittleEndianByteOrder));
- EXPECT_EQ(0x5555, gtoh((uint16_t)0x5555, LittleEndianByteOrder));
- EXPECT_EQ(0xa0a0, gtoh((uint16_t)0xa0a0, LittleEndianByteOrder));
+ ByteOrder::little));
+ EXPECT_EQ(0x0123cdef, gtoh((uint32_t)0xefcd2301, ByteOrder::little));
+ EXPECT_EQ(0xfedc3210, gtoh((uint32_t)0x1032dcfe, ByteOrder::little));
+ EXPECT_EQ(0x0b1c41b1, gtoh((uint32_t)0xb1411c0b, ByteOrder::little));
+ EXPECT_EQ(0x0000ffff, gtoh((uint32_t)0xffff0000, ByteOrder::little));
+ EXPECT_EQ(0x55555555, gtoh((uint32_t)0x55555555, ByteOrder::little));
+ EXPECT_EQ(0xa0a0a0a0, gtoh((uint32_t)0xa0a0a0a0, ByteOrder::little));
+ EXPECT_EQ(0x01ef, gtoh((uint16_t)0xef01, ByteOrder::little));
+ EXPECT_EQ(0xfe10, gtoh((uint16_t)0x10fe, ByteOrder::little));
+ EXPECT_EQ(0x0bb1, gtoh((uint16_t)0xb10b, ByteOrder::little));
+ EXPECT_EQ(0x00ff, gtoh((uint16_t)0xff00, ByteOrder::little));
+ EXPECT_EQ(0x5555, gtoh((uint16_t)0x5555, ByteOrder::little));
+ EXPECT_EQ(0xa0a0, gtoh((uint16_t)0xa0a0, ByteOrder::little));
#elif defined(_LITTLE_ENDIAN) || BYTE_ORDER==LITTLE_ENDIAN
EXPECT_EQ(0x0123456789abcdef, gtoh((uint64_t)0xefcdab8967452301,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0xfedcba9876543210, gtoh((uint64_t)0x1032547698badcfe,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0x0b1cb071b77141b1, gtoh((uint64_t)0xb14171b771b01c0b,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0x00000000ffffffff, gtoh((uint64_t)0xffffffff00000000,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0x5555555555555555, gtoh((uint64_t)0x5555555555555555,
- BigEndianByteOrder));
+ ByteOrder::big));
EXPECT_EQ(0xa0a0a0a0a0a0a0a0, gtoh((uint64_t)0xa0a0a0a0a0a0a0a0,
- BigEndianByteOrder));
- EXPECT_EQ(0x0123cdef, gtoh((uint32_t)0xefcd2301, BigEndianByteOrder));
- EXPECT_EQ(0xfedc3210, gtoh((uint32_t)0x1032dcfe, BigEndianByteOrder));
- EXPECT_EQ(0x0b1c41b1, gtoh((uint32_t)0xb1411c0b, BigEndianByteOrder));
- EXPECT_EQ(0x0000ffff, gtoh((uint32_t)0xffff0000, BigEndianByteOrder));
- EXPECT_EQ(0x55555555, gtoh((uint32_t)0x55555555, BigEndianByteOrder));
- EXPECT_EQ(0xa0a0a0a0, gtoh((uint32_t)0xa0a0a0a0, BigEndianByteOrder));
- EXPECT_EQ(0x01ef, gtoh((uint16_t)0xef01, BigEndianByteOrder));
- EXPECT_EQ(0xfe10, gtoh((uint16_t)0x10fe, BigEndianByteOrder));
- EXPECT_EQ(0x0bb1, gtoh((uint16_t)0xb10b, BigEndianByteOrder));
- EXPECT_EQ(0x00ff, gtoh((uint16_t)0xff00, BigEndianByteOrder));
- EXPECT_EQ(0x5555, gtoh((uint16_t)0x5555, BigEndianByteOrder));
- EXPECT_EQ(0xa0a0, gtoh((uint16_t)0xa0a0, BigEndianByteOrder));
+ ByteOrder::big));
+ EXPECT_EQ(0x0123cdef, gtoh((uint32_t)0xefcd2301, ByteOrder::big));
+ EXPECT_EQ(0xfedc3210, gtoh((uint32_t)0x1032dcfe, ByteOrder::big));
+ EXPECT_EQ(0x0b1c41b1, gtoh((uint32_t)0xb1411c0b, ByteOrder::big));
+ EXPECT_EQ(0x0000ffff, gtoh((uint32_t)0xffff0000, ByteOrder::big));
+ EXPECT_EQ(0x55555555, gtoh((uint32_t)0x55555555, ByteOrder::big));
+ EXPECT_EQ(0xa0a0a0a0, gtoh((uint32_t)0xa0a0a0a0, ByteOrder::big));
+ EXPECT_EQ(0x01ef, gtoh((uint16_t)0xef01, ByteOrder::big));
+ EXPECT_EQ(0xfe10, gtoh((uint16_t)0x10fe, ByteOrder::big));
+ EXPECT_EQ(0x0bb1, gtoh((uint16_t)0xb10b, ByteOrder::big));
+ EXPECT_EQ(0x00ff, gtoh((uint16_t)0xff00, ByteOrder::big));
+ EXPECT_EQ(0x5555, gtoh((uint16_t)0x5555, ByteOrder::big));
+ EXPECT_EQ(0xa0a0, gtoh((uint16_t)0xa0a0, ByteOrder::big));
EXPECT_EQ(0xefcdab8967452301, gtoh((uint64_t)0xefcdab8967452301,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0x1032547698badcfe, gtoh((uint64_t)0x1032547698badcfe,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0xb14171b771b01c0b, gtoh((uint64_t)0xb14171b771b01c0b,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0xffffffff00000000, gtoh((uint64_t)0xffffffff00000000,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0x5555555555555555, gtoh((uint64_t)0x5555555555555555,
- LittleEndianByteOrder));
+ ByteOrder::little));
EXPECT_EQ(0xa0a0a0a0a0a0a0a0, gtoh((uint64_t)0xa0a0a0a0a0a0a0a0,
- LittleEndianByteOrder));
- EXPECT_EQ(0xefcd2301, gtoh((uint32_t)0xefcd2301, LittleEndianByteOrder));
- EXPECT_EQ(0x1032dcfe, gtoh((uint32_t)0x1032dcfe, LittleEndianByteOrder));
- EXPECT_EQ(0xb1411c0b, gtoh((uint32_t)0xb1411c0b, LittleEndianByteOrder));
- EXPECT_EQ(0xffff0000, gtoh((uint32_t)0xffff0000, LittleEndianByteOrder));
- EXPECT_EQ(0x55555555, gtoh((uint32_t)0x55555555, LittleEndianByteOrder));
- EXPECT_EQ(0xa0a0a0a0, gtoh((uint32_t)0xa0a0a0a0, LittleEndianByteOrder));
- EXPECT_EQ(0xef01, gtoh((uint16_t)0xef01, LittleEndianByteOrder));
- EXPECT_EQ(0x10fe, gtoh((uint16_t)0x10fe, LittleEndianByteOrder));
- EXPECT_EQ(0xb10b, gtoh((uint16_t)0xb10b, LittleEndianByteOrder));
- EXPECT_EQ(0xff00, gtoh((uint16_t)0xff00, LittleEndianByteOrder));
- EXPECT_EQ(0x5555, gtoh((uint16_t)0x5555, LittleEndianByteOrder));
- EXPECT_EQ(0xa0a0, gtoh((uint16_t)0xa0a0, LittleEndianByteOrder));
+ ByteOrder::little));
+ EXPECT_EQ(0xefcd2301, gtoh((uint32_t)0xefcd2301, ByteOrder::little));
+ EXPECT_EQ(0x1032dcfe, gtoh((uint32_t)0x1032dcfe, ByteOrder::little));
+ EXPECT_EQ(0xb1411c0b, gtoh((uint32_t)0xb1411c0b, ByteOrder::little));
+ EXPECT_EQ(0xffff0000, gtoh((uint32_t)0xffff0000, ByteOrder::little));
+ EXPECT_EQ(0x55555555, gtoh((uint32_t)0x55555555, ByteOrder::little));
+ EXPECT_EQ(0xa0a0a0a0, gtoh((uint32_t)0xa0a0a0a0, ByteOrder::little));
+ EXPECT_EQ(0xef01, gtoh((uint16_t)0xef01, ByteOrder::little));
+ EXPECT_EQ(0x10fe, gtoh((uint16_t)0x10fe, ByteOrder::little));
+ EXPECT_EQ(0xb10b, gtoh((uint16_t)0xb10b, ByteOrder::little));
+ EXPECT_EQ(0xff00, gtoh((uint16_t)0xff00, ByteOrder::little));
+ EXPECT_EQ(0x5555, gtoh((uint16_t)0x5555, ByteOrder::little));
+ EXPECT_EQ(0xa0a0, gtoh((uint16_t)0xa0a0, ByteOrder::little));
#else
#error Invalid Endianess
#endif