From 19c9ccf6e6040806d86102f956cbaf59fd0ddcb2 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Thu, 28 Nov 2019 00:04:36 -0800 Subject: [PATCH] sparc: Convert SPARC specific syscalls to Guest ABI. Jira Issue: https://gem5.atlassian.net/browse/GEM5-187 Change-Id: I144fc3fb0e408380294ea91fefa881494f44098b Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23203 Reviewed-by: Bobby R. Bruce Maintainer: Gabe Black Tested-by: kokoro --- src/arch/sparc/linux/process.hh | 3 ++- src/arch/sparc/linux/syscalls.cc | 13 ++++--------- src/arch/sparc/solaris/process.cc | 5 ++--- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/arch/sparc/linux/process.hh b/src/arch/sparc/linux/process.hh index 2bb56e511..3b79b39fd 100644 --- a/src/arch/sparc/linux/process.hh +++ b/src/arch/sparc/linux/process.hh @@ -92,7 +92,8 @@ class Sparc64LinuxProcess : public SparcLinuxProcess, public Sparc64Process void handleTrap(int trapNum, ThreadContext *tc, Fault *fault) override; }; -SyscallReturn getresuidFunc(SyscallDesc *desc, int num, ThreadContext *tc); +SyscallReturn getresuidFunc(SyscallDesc *desc, int num, ThreadContext *tc, + Addr ruid, Addr euid, Addr suid); } // namespace SparcISA #endif // __SPARC_LINUX_PROCESS_HH__ diff --git a/src/arch/sparc/linux/syscalls.cc b/src/arch/sparc/linux/syscalls.cc index 405b7d0ed..2c4992ccf 100644 --- a/src/arch/sparc/linux/syscalls.cc +++ b/src/arch/sparc/linux/syscalls.cc @@ -37,11 +37,10 @@ namespace SparcISA { /// Target uname() handler. static SyscallReturn -unameFunc(SyscallDesc *desc, int callnum, ThreadContext *tc) +unameFunc(SyscallDesc *desc, int callnum, ThreadContext *tc, Addr utsname) { - int index = 0; auto process = tc->getProcessPtr(); - TypedBufferArg name(process->getSyscallArg(tc, index)); + TypedBufferArg name(utsname); strcpy(name->sysname, "Linux"); strcpy(name->nodename, "sim.gem5.org"); @@ -56,14 +55,10 @@ unameFunc(SyscallDesc *desc, int callnum, ThreadContext *tc) SyscallReturn -getresuidFunc(SyscallDesc *desc, int num, ThreadContext *tc) +getresuidFunc(SyscallDesc *desc, int num, ThreadContext *tc, + Addr ruid, Addr euid, Addr suid) { const uint64_t id = htobe(100); - int index = 0; - auto p = tc->getProcessPtr(); - Addr ruid = p->getSyscallArg(tc, index); - Addr euid = p->getSyscallArg(tc, index); - Addr suid = p->getSyscallArg(tc, index); // Handle the EFAULT case // Set the ruid if (ruid) { diff --git a/src/arch/sparc/solaris/process.cc b/src/arch/sparc/solaris/process.cc index 026372fa1..20fb3cf8f 100644 --- a/src/arch/sparc/solaris/process.cc +++ b/src/arch/sparc/solaris/process.cc @@ -70,11 +70,10 @@ SparcSolarisObjectFileLoader loader; /// Target uname() handler. static SyscallReturn -unameFunc(SyscallDesc *desc, int callnum, ThreadContext *tc) +unameFunc(SyscallDesc *desc, int callnum, ThreadContext *tc, Addr utsname) { - int index = 0; auto process = tc->getProcessPtr(); - TypedBufferArg name(process->getSyscallArg(tc, index)); + TypedBufferArg name(utsname); strcpy(name->sysname, "SunOS"); strcpy(name->nodename, "m5.eecs.umich.edu"); -- 2.30.2