changeset 97eebddaae84 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=97eebddaae84
description:
        syscall_emul: [patch 2/22] move SyscallDesc into its own .hh and .cc

        The class was crammed into syscall_emul.hh which has tons of forward
        declarations and template definitions. To clean it up a bit, moved the
        class into separate files and commented the class with doxygen style
        comments. Also, provided some encapsulation by adding some accessors and
        a mutator.

        The syscallreturn.hh file was renamed syscall_return.hh to make it 
consistent
        with other similarly named files in the src/sim directory.

        The DPRINTF_SYSCALL macro was moved into its own header file with the
        include the Base and Verbose flags as well.

diffstat:

 src/arch/alpha/linux/process.cc   |    1 +
 src/arch/arm/freebsd/process.cc   |    1 +
 src/arch/arm/linux/process.cc     |    1 +
 src/arch/mips/linux/process.cc    |    1 +
 src/arch/power/linux/process.cc   |    1 +
 src/arch/riscv/linux/process.cc   |    1 +
 src/arch/sparc/linux/process.cc   |    1 +
 src/arch/sparc/linux/syscalls.cc  |    1 +
 src/arch/sparc/solaris/process.cc |    1 +
 src/arch/x86/linux/process.cc     |    5 +-
 src/arch/x86/process.cc           |    2 +-
 src/sim/SConscript                |    1 +
 src/sim/process.cc                |    2 +-
 src/sim/process.hh                |    2 +-
 src/sim/syscall_debug_macros.hh   |   63 +++++++++++++++++++
 src/sim/syscall_desc.cc           |   88 ++++++++++++++++++++++++++
 src/sim/syscall_desc.hh           |  125 ++++++++++++++++++++++++++++++++++++++
 src/sim/syscall_emul.cc           |   56 +---------------
 src/sim/syscall_emul.hh           |   53 +---------------
 src/sim/syscall_return.hh         |  116 +++++++++++++++++++++++++++++++++++
 src/sim/syscallreturn.hh          |  116 -----------------------------------
 21 files changed, 417 insertions(+), 221 deletions(-)

diffs (truncated from 860 to 300 lines):

diff -r ef606668d247 -r 97eebddaae84 src/arch/alpha/linux/process.cc
--- a/src/arch/alpha/linux/process.cc   Wed Nov 09 14:27:37 2016 -0600
+++ b/src/arch/alpha/linux/process.cc   Wed Nov 09 14:27:40 2016 -0600
@@ -38,6 +38,7 @@
 #include "debug/SyscallVerbose.hh"
 #include "kern/linux/linux.hh"
 #include "sim/process.hh"
+#include "sim/syscall_desc.hh"
 #include "sim/syscall_emul.hh"
 
 using namespace std;
diff -r ef606668d247 -r 97eebddaae84 src/arch/arm/freebsd/process.cc
--- a/src/arch/arm/freebsd/process.cc   Wed Nov 09 14:27:37 2016 -0600
+++ b/src/arch/arm/freebsd/process.cc   Wed Nov 09 14:27:40 2016 -0600
@@ -45,6 +45,7 @@
 #include "cpu/thread_context.hh"
 #include "kern/freebsd/freebsd.hh"
 #include "sim/process.hh"
+#include "sim/syscall_desc.hh"
 #include "sim/syscall_emul.hh"
 #include "sim/system.hh"
 
diff -r ef606668d247 -r 97eebddaae84 src/arch/arm/linux/process.cc
--- a/src/arch/arm/linux/process.cc     Wed Nov 09 14:27:37 2016 -0600
+++ b/src/arch/arm/linux/process.cc     Wed Nov 09 14:27:40 2016 -0600
@@ -52,6 +52,7 @@
 #include "cpu/thread_context.hh"
 #include "kern/linux/linux.hh"
 #include "sim/process.hh"
+#include "sim/syscall_desc.hh"
 #include "sim/syscall_emul.hh"
 #include "sim/system.hh"
 
diff -r ef606668d247 -r 97eebddaae84 src/arch/mips/linux/process.cc
--- a/src/arch/mips/linux/process.cc    Wed Nov 09 14:27:37 2016 -0600
+++ b/src/arch/mips/linux/process.cc    Wed Nov 09 14:27:40 2016 -0600
@@ -40,6 +40,7 @@
 #include "kern/linux/linux.hh"
 #include "sim/eventq.hh"
 #include "sim/process.hh"
+#include "sim/syscall_desc.hh"
 #include "sim/syscall_emul.hh"
 #include "sim/system.hh"
 
diff -r ef606668d247 -r 97eebddaae84 src/arch/power/linux/process.cc
--- a/src/arch/power/linux/process.cc   Wed Nov 09 14:27:37 2016 -0600
+++ b/src/arch/power/linux/process.cc   Wed Nov 09 14:27:40 2016 -0600
@@ -40,6 +40,7 @@
 #include "cpu/thread_context.hh"
 #include "kern/linux/linux.hh"
 #include "sim/process.hh"
+#include "sim/syscall_desc.hh"
 #include "sim/syscall_emul.hh"
 #include "sim/system.hh"
 
diff -r ef606668d247 -r 97eebddaae84 src/arch/riscv/linux/process.cc
--- a/src/arch/riscv/linux/process.cc   Wed Nov 09 14:27:37 2016 -0600
+++ b/src/arch/riscv/linux/process.cc   Wed Nov 09 14:27:40 2016 -0600
@@ -44,6 +44,7 @@
 #include "kern/linux/linux.hh"
 #include "sim/eventq.hh"
 #include "sim/process.hh"
+#include "sim/syscall_desc.hh"
 #include "sim/syscall_emul.hh"
 #include "sim/system.hh"
 
diff -r ef606668d247 -r 97eebddaae84 src/arch/sparc/linux/process.cc
--- a/src/arch/sparc/linux/process.cc   Wed Nov 09 14:27:37 2016 -0600
+++ b/src/arch/sparc/linux/process.cc   Wed Nov 09 14:27:40 2016 -0600
@@ -38,6 +38,7 @@
 #include "cpu/thread_context.hh"
 #include "kern/linux/linux.hh"
 #include "sim/process.hh"
+#include "sim/syscall_desc.hh"
 #include "sim/syscall_emul.hh"
 
 using namespace std;
diff -r ef606668d247 -r 97eebddaae84 src/arch/sparc/linux/syscalls.cc
--- a/src/arch/sparc/linux/syscalls.cc  Wed Nov 09 14:27:37 2016 -0600
+++ b/src/arch/sparc/linux/syscalls.cc  Wed Nov 09 14:27:40 2016 -0600
@@ -29,6 +29,7 @@
  */
 
 #include "arch/sparc/linux/process.hh"
+#include "sim/syscall_desc.hh"
 #include "sim/syscall_emul.hh"
 
 class LiveProcess;
diff -r ef606668d247 -r 97eebddaae84 src/arch/sparc/solaris/process.cc
--- a/src/arch/sparc/solaris/process.cc Wed Nov 09 14:27:37 2016 -0600
+++ b/src/arch/sparc/solaris/process.cc Wed Nov 09 14:27:40 2016 -0600
@@ -36,6 +36,7 @@
 #include "cpu/thread_context.hh"
 #include "kern/solaris/solaris.hh"
 #include "sim/process.hh"
+#include "sim/syscall_desc.hh"
 #include "sim/syscall_emul.hh"
 
 using namespace std;
diff -r ef606668d247 -r 97eebddaae84 src/arch/x86/linux/process.cc
--- a/src/arch/x86/linux/process.cc     Wed Nov 09 14:27:37 2016 -0600
+++ b/src/arch/x86/linux/process.cc     Wed Nov 09 14:27:40 2016 -0600
@@ -46,6 +46,7 @@
 #include "cpu/thread_context.hh"
 #include "kern/linux/linux.hh"
 #include "sim/process.hh"
+#include "sim/syscall_desc.hh"
 #include "sim/syscall_emul.hh"
 
 using namespace std;
@@ -159,7 +160,7 @@
         return -EFAULT;
 
     if (!gdt.copyIn(tc->getMemProxy()))
-        panic("Failed to copy in GDT for %s.\n", desc->name);
+        panic("Failed to copy in GDT for %s.\n", desc->name());
 
     if (userDesc->entry_number == (uint32_t)(-1)) {
         // Find a free TLS entry.
@@ -213,7 +214,7 @@
     if (!userDesc.copyOut(tc->getMemProxy()))
         return -EFAULT;
     if (!gdt.copyOut(tc->getMemProxy()))
-        panic("Failed to copy out GDT for %s.\n", desc->name);
+        panic("Failed to copy out GDT for %s.\n", desc->name());
 
     return 0;
 }
diff -r ef606668d247 -r 97eebddaae84 src/arch/x86/process.cc
--- a/src/arch/x86/process.cc   Wed Nov 09 14:27:37 2016 -0600
+++ b/src/arch/x86/process.cc   Wed Nov 09 14:27:40 2016 -0600
@@ -58,7 +58,7 @@
 #include "mem/multi_level_page_table.hh"
 #include "mem/page_table.hh"
 #include "sim/process_impl.hh"
-#include "sim/syscall_emul.hh"
+#include "sim/syscall_desc.hh"
 #include "sim/system.hh"
 
 using namespace std;
diff -r ef606668d247 -r 97eebddaae84 src/sim/SConscript
--- a/src/sim/SConscript        Wed Nov 09 14:27:37 2016 -0600
+++ b/src/sim/SConscript        Wed Nov 09 14:27:40 2016 -0600
@@ -80,6 +80,7 @@
     Source('fd_entry.cc')
     Source('pseudo_inst.cc')
     Source('syscall_emul.cc')
+    Source('syscall_desc.cc')
 
 DebugFlag('Checkpoint')
 DebugFlag('Config')
diff -r ef606668d247 -r 97eebddaae84 src/sim/process.cc
--- a/src/sim/process.cc        Wed Nov 09 14:27:37 2016 -0600
+++ b/src/sim/process.cc        Wed Nov 09 14:27:40 2016 -0600
@@ -66,7 +66,7 @@
 #include "sim/debug.hh"
 #include "sim/process_impl.hh"
 #include "sim/stats.hh"
-#include "sim/syscall_emul.hh"
+#include "sim/syscall_desc.hh"
 #include "sim/system.hh"
 
 #if THE_ISA == ALPHA_ISA
diff -r ef606668d247 -r 97eebddaae84 src/sim/process.hh
--- a/src/sim/process.hh        Wed Nov 09 14:27:37 2016 -0600
+++ b/src/sim/process.hh        Wed Nov 09 14:27:40 2016 -0600
@@ -44,7 +44,7 @@
 #include "mem/se_translating_port_proxy.hh"
 #include "sim/fd_entry.hh"
 #include "sim/sim_object.hh"
-#include "sim/syscallreturn.hh"
+#include "sim/syscall_return.hh"
 
 class PageTable;
 struct ProcessParams;
diff -r ef606668d247 -r 97eebddaae84 src/sim/syscall_debug_macros.hh
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sim/syscall_debug_macros.hh   Wed Nov 09 14:27:40 2016 -0600
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2012-2013, 2015 ARM Limited
+ * Copyright (c) 2015-2016 Advanced Micro Devices, Inc.
+ * All rights reserved
+ *
+ * The license below extends only to copyright in the software and shall
+ * not be construed as granting a license to any other intellectual
+ * property including but not limited to intellectual property relating
+ * to a hardware implementation of the functionality of the software
+ * licensed hereunder.  You may use the software subject to the license
+ * terms below provided that you ensure that this notice is replicated
+ * unmodified and in its entirety in all distributions of the software,
+ * modified or unmodified, in source code or in binary form.
+ *
+ * Copyright (c) 2003-2005 The Regents of The University of Michigan
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Steve Reinhardt
+ *          Kevin Lim
+ *          Brandon Potter
+ */
+
+#ifndef __SIM_SYSCALL_DEBUG_MACROS_HH__
+#define __SIM_SYSCALL_DEBUG_MACROS_HH__
+
+#include "debug/SyscallBase.hh"
+#include "debug/SyscallVerbose.hh"
+
+/**
+ * This macro is intended to help with readability.
+ * FLAGEXT specifies to which flag to assign the message: SyscallBase,
+ * SyscallVerbose, etc..; notice that 'Syscall' is already prepended.
+ * FMT is the message to be appended to the header information. The header
+ * information contains the cpuid and thread id.
+ */
+#define DPRINTF_SYSCALL(FLAGEXT, FMT, ...)                                  \
+    DPRINTFS(Syscall##FLAGEXT, tc->getCpuPtr(), "T%d : syscall " FMT,       \
+             tc->threadId(), __VA_ARGS__)
+
+#endif // __SIM_SYSCALL_DEBUG_MACROS_HH__
diff -r ef606668d247 -r 97eebddaae84 src/sim/syscall_desc.cc
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sim/syscall_desc.cc   Wed Nov 09 14:27:40 2016 -0600
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2016 Advanced Micro Devices, Inc.
+ * Copyright (c) 2003-2005 The Regents of The University of Michigan
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Steve Reinhardt
+ *          Ali Saidi
+ *          Brandon Potter
+ */
+
+#include "sim/syscall_desc.hh"
+
+#include "base/trace.hh"
+#include "config/the_isa.hh"
+#include "cpu/base.hh"
+#include "cpu/thread_context.hh"
+#include "sim/process.hh"
+#include "sim/syscall_debug_macros.hh"
+#include "sim/syscall_return.hh"
+
+void
+SyscallDesc::doSyscall(int callnum, LiveProcess *process, ThreadContext *tc)
+{
+    TheISA::IntReg arg[6] M5_VAR_USED;
+
+    /**
+     * Step through the first six parameters for the system call and
+     * retrieve their values. Note that index is incremented as a
+     * side-effect of the calling method.
+     */
+    for (int index = 0; index < 6; )
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to