Gabe Black has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/23191 )

Change subject: arch: Switch SyscallDescABI in for SyscallDesc.
......................................................................

arch: Switch SyscallDescABI in for SyscallDesc.

This lets system calls accept arguments by putting them in their
signatures.

Jira Issue: https://gem5.atlassian.net/browse/GEM5-187

Change-Id: Ieb32b8b5592d894e493466717613ff16e2a03768
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23191
Reviewed-by: Gabe Black <gabebl...@google.com>
Maintainer: Gabe Black <gabebl...@google.com>
Tested-by: kokoro <noreply+kok...@google.com>
---
M src/arch/alpha/linux/process.cc
M src/arch/alpha/linux/process.hh
M src/arch/arm/freebsd/process.cc
M src/arch/arm/linux/process.cc
M src/arch/mips/linux/process.cc
M src/arch/mips/linux/process.hh
M src/arch/power/linux/process.cc
M src/arch/power/linux/process.hh
M src/arch/riscv/linux/process.cc
M src/arch/riscv/linux/process.hh
M src/arch/sparc/linux/process.hh
M src/arch/sparc/linux/syscalls.cc
M src/arch/sparc/solaris/process.cc
M src/arch/sparc/solaris/process.hh
M src/arch/x86/linux/process.cc
15 files changed, 34 insertions(+), 24 deletions(-)

Approvals:
  Gabe Black: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/arch/alpha/linux/process.cc b/src/arch/alpha/linux/process.cc
index 2a79bbd..91decc7 100644
--- a/src/arch/alpha/linux/process.cc
+++ b/src/arch/alpha/linux/process.cc
@@ -155,7 +155,7 @@
 }


-SyscallDesc AlphaLinuxProcess::syscallDescs[] = {
+SyscallDescABI<DefaultSyscallABI> AlphaLinuxProcess::syscallDescs[] = {
     /*  0 */ { "osf_syscall" },
     /*  1 */ { "exit", exitFunc },
     /*  2 */ { "fork" },
diff --git a/src/arch/alpha/linux/process.hh b/src/arch/alpha/linux/process.hh
index 991ddbd..14214f1 100644
--- a/src/arch/alpha/linux/process.hh
+++ b/src/arch/alpha/linux/process.hh
@@ -33,6 +33,8 @@

 #include "arch/alpha/process.hh"

+#include "sim/syscall_desc.hh"
+
 namespace AlphaISA  {

 /// A process with emulated Alpha/Linux syscalls.
@@ -47,7 +49,7 @@
     virtual SyscallDesc* getDesc(int callnum);

      /// Array of syscall descriptors, indexed by call number.
-    static SyscallDesc syscallDescs[];
+    static SyscallDescABI<DefaultSyscallABI> syscallDescs[];

     const int Num_Syscall_Descs;
 };
diff --git a/src/arch/arm/freebsd/process.cc b/src/arch/arm/freebsd/process.cc
index 55e5f85..5a048c5 100644
--- a/src/arch/arm/freebsd/process.cc
+++ b/src/arch/arm/freebsd/process.cc
@@ -138,7 +138,7 @@
 }
 #endif

-static SyscallDesc syscallDescs32[] = {
+static SyscallDescABI<DefaultSyscallABI> syscallDescs32[] = {
     /*    0 */ { "unused#000" },
     /*    1 */ { "unused#001" },
     /*    2 */ { "unused#002" },
@@ -689,7 +689,7 @@
     /*  547 */ { "unused#547" },
 };

-static SyscallDesc syscallDescs64[] = {
+static SyscallDescABI<DefaultSyscallABI> syscallDescs64[] = {
     /*    0 */ { "unused#000" },
     /*    1 */ { "exit", exitFunc },
     /*    2 */ { "unused#002" },
diff --git a/src/arch/arm/linux/process.cc b/src/arch/arm/linux/process.cc
index c25e912..0391487 100644
--- a/src/arch/arm/linux/process.cc
+++ b/src/arch/arm/linux/process.cc
@@ -164,7 +164,7 @@
     return 0;
 }

-static SyscallDesc syscallDescs32[] = {
+static SyscallDescABI<DefaultSyscallABI> syscallDescs32[] = {
     /*  0 */ { "syscall" },
     /*  1 */ { "exit", exitFunc },
     /*  2 */ { "fork" },
@@ -541,7 +541,7 @@
     /* 365 */ { "sys_recvmmsg" },
 };

-static SyscallDesc syscallDescs64[] = {
+static SyscallDescABI<DefaultSyscallABI> syscallDescs64[] = {
     /*    0 */ { "io_setup" },
     /*    1 */ { "io_destroy" },
     /*    2 */ { "io_submit" },
@@ -1632,7 +1632,7 @@
     /* 1079 */ { "fork" }
 };

-static SyscallDesc privSyscallDescs32[] = {
+static SyscallDescABI<DefaultSyscallABI> privSyscallDescs32[] = {
     /*  1 */ { "breakpoint" },
     /*  2 */ { "cacheflush" },
     /*  3 */ { "usr26" },
@@ -1641,7 +1641,7 @@
 };

 // Indices 1, 3 and 4 are unallocated.
-static SyscallDesc privSyscallDescs64[] = {
+static SyscallDescABI<DefaultSyscallABI> privSyscallDescs64[] = {
     /*  1 */ { "unallocated" },
     /*  2 */ { "cacheflush" },
     /*  3 */ { "unallocated" },
diff --git a/src/arch/mips/linux/process.cc b/src/arch/mips/linux/process.cc
index e8e96da..0b03c99 100644
--- a/src/arch/mips/linux/process.cc
+++ b/src/arch/mips/linux/process.cc
@@ -168,7 +168,7 @@
     return 0;
 }

-SyscallDesc MipsLinuxProcess::syscallDescs[] = {
+SyscallDescABI<DefaultSyscallABI> MipsLinuxProcess::syscallDescs[] = {
     /*  0 */ { "syscall" },
     /*  1 */ { "exit", exitFunc },
     /*  2 */ { "fork" },
diff --git a/src/arch/mips/linux/process.hh b/src/arch/mips/linux/process.hh
index 7fcb6f0..b2ab91e 100644
--- a/src/arch/mips/linux/process.hh
+++ b/src/arch/mips/linux/process.hh
@@ -35,6 +35,7 @@
 #include "arch/mips/linux/linux.hh"
 #include "arch/mips/process.hh"
 #include "sim/eventq.hh"
+#include "sim/syscall_desc.hh"

 /// A process with emulated Mips/Linux syscalls.
 class MipsLinuxProcess : public MipsProcess
@@ -54,7 +55,7 @@
     void syscall(ThreadContext *tc, Fault *fault) override;

     /// Array of syscall descriptors, indexed by call number.
-    static SyscallDesc syscallDescs[];
+    static SyscallDescABI<DefaultSyscallABI> syscallDescs[];
     const int Num_Syscall_Descs;
 };

diff --git a/src/arch/power/linux/process.cc b/src/arch/power/linux/process.cc
index 1340778..217f0bd 100644
--- a/src/arch/power/linux/process.cc
+++ b/src/arch/power/linux/process.cc
@@ -96,7 +96,7 @@
     return 0;
 }

-SyscallDesc PowerLinuxProcess::syscallDescs[] = {
+SyscallDescABI<DefaultSyscallABI> PowerLinuxProcess::syscallDescs[] = {
     /*  0 */ { "syscall" },
     /*  1 */ { "exit", exitFunc },
     /*  2 */ { "fork" },
diff --git a/src/arch/power/linux/process.hh b/src/arch/power/linux/process.hh
index ef96dae..60b38a1 100644
--- a/src/arch/power/linux/process.hh
+++ b/src/arch/power/linux/process.hh
@@ -35,6 +35,8 @@

 #include "arch/power/process.hh"

+#include "sim/syscall_desc.hh"
+
 /// A process with emulated PPC/Linux syscalls.
 class PowerLinuxProcess : public PowerProcess
 {
@@ -52,7 +54,7 @@
     using Process::getSyscallArg;

     /// Array of syscall descriptors, indexed by call number.
-    static SyscallDesc syscallDescs[];
+    static SyscallDescABI<DefaultSyscallABI> syscallDescs[];

     const int Num_Syscall_Descs;
 };
diff --git a/src/arch/riscv/linux/process.cc b/src/arch/riscv/linux/process.cc
index add1469..b20d09d 100644
--- a/src/arch/riscv/linux/process.cc
+++ b/src/arch/riscv/linux/process.cc
@@ -122,7 +122,8 @@
     return 0;
 }

-std::map<int, SyscallDesc> RiscvLinuxProcess64::syscallDescs = {
+std::map<int, SyscallDescABI<DefaultSyscallABI>>
+        RiscvLinuxProcess64::syscallDescs = {
     {0,    { "io_setup" }},
     {1,    { "io_destroy" }},
     {2,    { "io_submit" }},
@@ -453,7 +454,8 @@
     {2011, { "getmainvars" }}
 };

-std::map<int, SyscallDesc> RiscvLinuxProcess32::syscallDescs = {
+std::map<int, SyscallDescABI<DefaultSyscallABI>>
+        RiscvLinuxProcess32::syscallDescs = {
     {0,    { "io_setup" }},
     {1,    { "io_destroy" }},
     {2,    { "io_submit" }},
diff --git a/src/arch/riscv/linux/process.hh b/src/arch/riscv/linux/process.hh
index 65daca3..7a2ad28 100644
--- a/src/arch/riscv/linux/process.hh
+++ b/src/arch/riscv/linux/process.hh
@@ -39,6 +39,7 @@
 #include "arch/riscv/linux/linux.hh"
 #include "arch/riscv/process.hh"
 #include "sim/eventq.hh"
+#include "sim/syscall_desc.hh"

 /// A process with emulated Riscv/Linux syscalls.
 class RiscvLinuxProcess64 : public RiscvProcess64
@@ -58,7 +59,7 @@
     void syscall(ThreadContext *tc, Fault *fault) override;

     /// Array of syscall descriptors, indexed by call number.
-    static std::map<int, SyscallDesc> syscallDescs;
+    static std::map<int, SyscallDescABI<DefaultSyscallABI>> syscallDescs;
 };

 class RiscvLinuxProcess32 : public RiscvProcess32
@@ -78,7 +79,7 @@
     void syscall(ThreadContext *tc, Fault *fault) override;

     /// Array of syscall descriptors, indexed by call number.
-    static std::map<int, SyscallDesc> syscallDescs;
+    static std::map<int, SyscallDescABI<DefaultSyscallABI>> syscallDescs;
 };

 #endif // __RISCV_LINUX_PROCESS_HH__
diff --git a/src/arch/sparc/linux/process.hh b/src/arch/sparc/linux/process.hh
index 5c673db..9b1fd06 100644
--- a/src/arch/sparc/linux/process.hh
+++ b/src/arch/sparc/linux/process.hh
@@ -34,6 +34,7 @@
 #include "arch/sparc/linux/linux.hh"
 #include "arch/sparc/process.hh"
 #include "sim/process.hh"
+#include "sim/syscall_desc.hh"

 namespace SparcISA {

@@ -44,11 +45,11 @@
 {
   public:
      /// Array of syscall descriptors, indexed by call number.
-    static SyscallDesc syscallDescs[];
+    static SyscallDescABI<DefaultSyscallABI> syscallDescs[];

      /// Array of 32 bit compatibility syscall descriptors,
      /// indexed by call number.
-    static SyscallDesc syscall32Descs[];
+    static SyscallDescABI<DefaultSyscallABI> syscall32Descs[];

     SyscallDesc* getDesc(int callnum);
     SyscallDesc* getDesc32(int callnum);
diff --git a/src/arch/sparc/linux/syscalls.cc b/src/arch/sparc/linux/syscalls.cc
index edf53c5..a166a51 100644
--- a/src/arch/sparc/linux/syscalls.cc
+++ b/src/arch/sparc/linux/syscalls.cc
@@ -88,7 +88,7 @@
     return 0;
 }

-SyscallDesc SparcLinuxProcess::syscall32Descs[] = {
+SyscallDescABI<DefaultSyscallABI> SparcLinuxProcess::syscall32Descs[] = {
     /*   0 */ { "restart_syscall" },
     /*   1 */ { "exit", exitFunc }, // 32 bit
     /*   2 */ { "fork" },
@@ -394,7 +394,7 @@
 const int SparcLinuxProcess::Num_Syscall32_Descs =
     sizeof(SparcLinuxProcess::syscall32Descs) / sizeof(SyscallDesc);

-SyscallDesc SparcLinuxProcess::syscallDescs[] = {
+SyscallDescABI<DefaultSyscallABI> SparcLinuxProcess::syscallDescs[] = {
     /*  0 */ { "restart_syscall" },
     /*  1 */ { "exit", exitFunc },
     /*  2 */ { "fork" },
diff --git a/src/arch/sparc/solaris/process.cc b/src/arch/sparc/solaris/process.cc
index 69cda53..4c22f1e 100644
--- a/src/arch/sparc/solaris/process.cc
+++ b/src/arch/sparc/solaris/process.cc
@@ -90,7 +90,7 @@
 }


-SyscallDesc SparcSolarisProcess::syscallDescs[] = {
+SyscallDescABI<DefaultSyscallABI> SparcSolarisProcess::syscallDescs[] = {
     /* 0 */ { "syscall" },
     /* 1 */ { "exit", exitFunc },
     /* 2 */ { "fork" },
diff --git a/src/arch/sparc/solaris/process.hh b/src/arch/sparc/solaris/process.hh
index 39e3aef..424b0ec 100644
--- a/src/arch/sparc/solaris/process.hh
+++ b/src/arch/sparc/solaris/process.hh
@@ -34,6 +34,7 @@
 #include "arch/sparc/solaris/solaris.hh"
 #include "arch/sparc/process.hh"
 #include "sim/process.hh"
+#include "sim/syscall_desc.hh"

 namespace SparcISA {

@@ -52,7 +53,7 @@
     void syscall(ThreadContext *tc, Fault *fault) override;

      /// Array of syscall descriptors, indexed by call number.
-    static SyscallDesc syscallDescs[];
+    static SyscallDescABI<DefaultSyscallABI> syscallDescs[];

     const int Num_Syscall_Descs;
 };
diff --git a/src/arch/x86/linux/process.cc b/src/arch/x86/linux/process.cc
index f793178..10ee112 100644
--- a/src/arch/x86/linux/process.cc
+++ b/src/arch/x86/linux/process.cc
@@ -257,7 +257,7 @@
     return 0;
 }

-static SyscallDesc syscallDescs64[] = {
+static SyscallDescABI<DefaultSyscallABI> syscallDescs64[] = {
     /*   0 */ { "read", readFunc<X86Linux64> },
     /*   1 */ { "write", writeFunc<X86Linux64> },
     /*   2 */ { "open", openFunc<X86Linux64> },
@@ -597,7 +597,7 @@
     X86_64Process::clone(old_tc, new_tc, (X86_64Process*)process, flags);
 }

-static SyscallDesc syscallDescs32[] = {
+static SyscallDescABI<DefaultSyscallABI> syscallDescs32[] = {
     /*   0 */ { "restart_syscall" },
     /*   1 */ { "exit", exitFunc },
     /*   2 */ { "fork" },

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/23191
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ieb32b8b5592d894e493466717613ff16e2a03768
Gerrit-Change-Number: 23191
Gerrit-PatchSet: 14
Gerrit-Owner: Gabe Black <gabebl...@google.com>
Gerrit-Reviewer: Brandon Potter <brandon.pot...@amd.com>
Gerrit-Reviewer: Gabe Black <gabebl...@google.com>
Gerrit-Reviewer: Giacomo Travaglini <giacomo.travagl...@arm.com>
Gerrit-Reviewer: Jason Lowe-Power <ja...@lowepower.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to