arch: Make endianness a property of the OS class syscalls can consume.
authorGabe Black <gabeblack@google.com>
Tue, 29 Oct 2019 22:31:04 +0000 (15:31 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 30 Oct 2019 22:29:23 +0000 (22:29 +0000)
That way the syscall implementations won't have to find the right
endianness to use on their own, typically by referring to TheISA.

Change-Id: I186b2f419d5dbee72cc9b5abce7356f3143f0c83
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22363
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/alpha/linux/linux.hh
src/arch/arm/freebsd/freebsd.hh
src/arch/arm/linux/linux.hh
src/arch/mips/linux/linux.hh
src/arch/power/linux/linux.hh
src/arch/riscv/linux/linux.hh
src/arch/sparc/linux/linux.hh
src/arch/sparc/solaris/solaris.hh
src/arch/x86/linux/linux.hh

index 3fd65679d47c0991548026c0e7b657e8c385668e..01d3e282f6a4f84b04a8b9ca03203d787669aa60 100644 (file)
@@ -42,6 +42,8 @@ class AlphaLinux : public Linux
 {
   public:
 
+    static const ByteOrder byteOrder = LittleEndianByteOrder;
+
     static const int TGT_SIGHUP         = 0x000001;
     static const int TGT_SIGINT         = 0x000002;
     static const int TGT_SIGQUIT        = 0x000003;
index e2c5e493c323c6579a2b956d89a62773b3a9b796..b1360473e4d7e9661cfeb4d1587c2c4df5a2d93e 100644 (file)
 
 #include "kern/freebsd/freebsd.hh"
 
-class ArmFreebsd32 : public FreeBSD
+class ArmFreebsd : public FreeBSD
 {
   public:
+    static const ByteOrder byteOrder = LittleEndianByteOrder;
+};
 
+class ArmFreebsd32 : public ArmFreebsd
+{
+  public:
     /// This table maps the target open() flags to the corresponding
     /// host open() flags.
     static SyscallFlagTransTable openFlagTable[];
@@ -192,7 +197,7 @@ class ArmFreebsd32 : public FreeBSD
     };
 };
 
-class ArmFreebsd64 : public FreeBSD
+class ArmFreebsd64 : public ArmFreebsd
 {
   public:
 
index cff1e47fdc3d0c7cccca82d8e72f80072f2d2d89..1ae88df4abfdf9a36e6487e32e7a78b703f07219 100644 (file)
@@ -51,6 +51,8 @@
 class ArmLinux : public Linux
 {
   public:
+    static const ByteOrder byteOrder = LittleEndianByteOrder;
+
     static void
     archClone(uint64_t flags,
               Process *pp, Process *cp,
index 38e6abcd1000598069e8aeb9661594a9c77145e5..84ab55363e0c14aa4f86323e2b774bd2ddee3ce9 100644 (file)
@@ -37,6 +37,8 @@ class MipsLinux : public Linux
 {
   public:
 
+    static const ByteOrder byteOrder = LittleEndianByteOrder;
+
     static const int TGT_SIGHUP         = 0x000001;
     static const int TGT_SIGINT         = 0x000002;
     static const int TGT_SIGQUIT        = 0x000003;
index de149a1a655207a41f98f0e3028ae8353ff3d4ba..a57c2ab978c737585ae8bf7e3b7f6dc62d38e903 100644 (file)
@@ -42,6 +42,8 @@ class PowerLinux : public Linux
 {
   public:
 
+    static const ByteOrder byteOrder = BigEndianByteOrder;
+
     typedef int32_t time_t;
 
     typedef struct {
index 441550a506656ec06c44480b6a601c388fd9d1b7..c3adaeeef9f3bb6e8dace7201ced16aa9ca622c8 100644 (file)
 #include "arch/riscv/utility.hh"
 #include "kern/linux/linux.hh"
 
-class RiscvLinux64 : public Linux
+class RiscvLinux : public Linux
+{
+  public:
+    static const ByteOrder byteOrder = LittleEndianByteOrder;
+};
+
+class RiscvLinux64 : public RiscvLinux
 {
   public:
     static const int TGT_SIGHUP         =  1;
@@ -203,7 +209,7 @@ class RiscvLinux64 : public Linux
     }
 };
 
-class RiscvLinux32 : public Linux
+class RiscvLinux32 : public RiscvLinux
 {
   public:
     static const int TGT_SIGHUP         =  1;
index 1de949d10047f6d877575869efd9bc9d14f9efa0..1dba4fa1f55eeb15d6c80722d378dfe68e0fb8c1 100644 (file)
@@ -38,6 +38,8 @@ class SparcLinux : public Linux
 {
   public:
 
+    static const ByteOrder byteOrder = BigEndianByteOrder;
+
     typedef struct {
         uint32_t st_dev;
         char __pad1[4];
index 1e814bc53a9b9922016de49f8287fa045b2edfef..459cedb8d59313234b3cace65fb6680f98607ed5 100644 (file)
@@ -37,6 +37,8 @@ class SparcSolaris : public Solaris
 {
   public:
 
+    static const ByteOrder byteOrder = BigEndianByteOrder;
+
     static SyscallFlagTransTable openFlagTable[];
 
     static const int TGT_O_RDONLY       = 0x00000000;   //!< O_RDONLY
index 91498043c6180f316b951cbace7e1c30464acbe5..2192e50640ccdda61c7afdb497b6721b112300ec 100644 (file)
@@ -46,6 +46,8 @@
 class X86Linux : public Linux
 {
   public:
+    static const ByteOrder byteOrder = LittleEndianByteOrder;
+
     static void
     archClone(uint64_t flags,
                           Process *pp, Process *cp,