From: Gabe Black Date: Sun, 19 Apr 2009 11:15:32 +0000 (-0700) Subject: SE mode: Make keeping track of the number of syscalls less hacky. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ca8598147835cc3bf4cb6125b4f32cbd941f1ae7;p=gem5.git SE mode: Make keeping track of the number of syscalls less hacky. --- diff --git a/src/arch/sparc/linux/process.cc b/src/arch/sparc/linux/process.cc index 2078c1dce..28aa1e50c 100644 --- a/src/arch/sparc/linux/process.cc +++ b/src/arch/sparc/linux/process.cc @@ -60,18 +60,6 @@ SparcLinuxProcess::getDesc32(int callnum) return &syscall32Descs[callnum]; } -SparcLinuxProcess::SparcLinuxProcess() : - Num_Syscall_Descs(284), //sizeof(syscallDescs) / sizeof(SyscallDesc)), - Num_Syscall32_Descs(299) //sizeof(syscall32Descs) / sizeof(SyscallDesc)) -{ - // The sparc syscall table must be <= 284 entries because that is all there - // is space for. - assert(Num_Syscall_Descs <= 284); - // The sparc 32 bit syscall table bust be <= 299 entries because that is - // all there is space for. - assert(Num_Syscall_Descs <= 299); -} - Sparc32LinuxProcess::Sparc32LinuxProcess(LiveProcessParams * params, ObjectFile *objFile) : Sparc32LiveProcess(params, objFile) diff --git a/src/arch/sparc/linux/process.hh b/src/arch/sparc/linux/process.hh index a76b4b3b2..f3b569168 100644 --- a/src/arch/sparc/linux/process.hh +++ b/src/arch/sparc/linux/process.hh @@ -43,8 +43,6 @@ namespace SparcISA { class SparcLinuxProcess { public: - SparcLinuxProcess(); - /// Array of syscall descriptors, indexed by call number. static SyscallDesc syscallDescs[]; @@ -55,8 +53,8 @@ class SparcLinuxProcess SyscallDesc* getDesc(int callnum); SyscallDesc* getDesc32(int callnum); - const int Num_Syscall_Descs; - const int Num_Syscall32_Descs; + static const int Num_Syscall_Descs; + static const int Num_Syscall32_Descs; }; /// A process with emulated SPARC/Linux syscalls. diff --git a/src/arch/sparc/linux/syscalls.cc b/src/arch/sparc/linux/syscalls.cc index 8496fca13..d9651c85c 100644 --- a/src/arch/sparc/linux/syscalls.cc +++ b/src/arch/sparc/linux/syscalls.cc @@ -390,6 +390,9 @@ SyscallDesc SparcLinuxProcess::syscall32Descs[] = { /* 299 */ SyscallDesc("unshare", unimplementedFunc) }; +const int SparcLinuxProcess::Num_Syscall32_Descs = + sizeof(SparcLinuxProcess::syscall32Descs) / sizeof(SyscallDesc); + SyscallDesc SparcLinuxProcess::syscallDescs[] = { /* 0 */ SyscallDesc("restart_syscall", unimplementedFunc), /* 1 */ SyscallDesc("exit", exitFunc), @@ -677,4 +680,7 @@ SyscallDesc SparcLinuxProcess::syscallDescs[] = { /* 283 */ SyscallDesc("keyctl", unimplementedFunc) }; +const int SparcLinuxProcess::Num_Syscall_Descs = + sizeof(SparcLinuxProcess::syscallDescs) / sizeof(SyscallDesc); + } // namespace SparcISA diff --git a/src/arch/x86/linux/process.cc b/src/arch/x86/linux/process.cc index da22d9851..1d109ae27 100644 --- a/src/arch/x86/linux/process.cc +++ b/src/arch/x86/linux/process.cc @@ -70,10 +70,10 @@ using namespace X86ISA; X86_64LinuxProcess::X86_64LinuxProcess(LiveProcessParams * params, ObjectFile *objFile) - : X86_64LiveProcess(params, objFile, syscallDescs, 273) + : X86_64LiveProcess(params, objFile, syscallDescs, numSyscalls) {} I386LinuxProcess::I386LinuxProcess(LiveProcessParams * params, ObjectFile *objFile) - : I386LiveProcess(params, objFile, syscallDescs, 324) + : I386LiveProcess(params, objFile, syscallDescs, numSyscalls) {} diff --git a/src/arch/x86/linux/process.hh b/src/arch/x86/linux/process.hh index ca3606ef0..8ea5e6f01 100644 --- a/src/arch/x86/linux/process.hh +++ b/src/arch/x86/linux/process.hh @@ -69,6 +69,7 @@ class X86_64LinuxProcess : public X86_64LiveProcess protected: /// Array of syscall descriptors, indexed by call number. static SyscallDesc syscallDescs[]; + static const int numSyscalls; public: /// Constructor. @@ -80,6 +81,7 @@ class I386LinuxProcess : public I386LiveProcess protected: /// Array of syscall descriptors, indexed by call number. static SyscallDesc syscallDescs[]; + static const int numSyscalls; public: /// Constructor. diff --git a/src/arch/x86/linux/syscalls.cc b/src/arch/x86/linux/syscalls.cc index 09235ec94..49a7d8b77 100644 --- a/src/arch/x86/linux/syscalls.cc +++ b/src/arch/x86/linux/syscalls.cc @@ -503,6 +503,9 @@ SyscallDesc X86_64LinuxProcess::syscallDescs[] = { /* 272 */ SyscallDesc("unshare", unimplementedFunc) }; +const int X86_64LinuxProcess::numSyscalls = + sizeof(X86_64LinuxProcess::syscallDescs) / sizeof(SyscallDesc); + SyscallDesc I386LinuxProcess::syscallDescs[] = { /* 0 */ SyscallDesc("restart_syscall", unimplementedFunc), /* 1 */ SyscallDesc("exit", unimplementedFunc), @@ -829,3 +832,6 @@ SyscallDesc I386LinuxProcess::syscallDescs[] = { /* 322 */ SyscallDesc("timerfd", unimplementedFunc), /* 323 */ SyscallDesc("eventfd", unimplementedFunc) }; + +const int I386LinuxProcess::numSyscalls = + sizeof(I386LinuxProcess::syscallDescs) / sizeof(SyscallDesc);