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 <bbruce@ucdavis.edu> Maintainer: Gabe Black <gabeblack@google.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -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__
|
||||
|
||||
@@ -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<Linux::utsname> name(process->getSyscallArg(tc, index));
|
||||
TypedBufferArg<Linux::utsname> 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) {
|
||||
|
||||
@@ -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<Solaris::utsname> name(process->getSyscallArg(tc, index));
|
||||
TypedBufferArg<Solaris::utsname> name(utsname);
|
||||
|
||||
strcpy(name->sysname, "SunOS");
|
||||
strcpy(name->nodename, "m5.eecs.umich.edu");
|
||||
|
||||
Reference in New Issue
Block a user