Gabe Black has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/29403 )
Change subject: arch: Use VPtr for uname.
......................................................................
arch: Use VPtr for uname.
Change-Id: Ia4b6c9135f16e6c68bbcf3a9c15ba7433a0a6682
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29403
Maintainer: Gabe Black <[email protected]>
Tested-by: kokoro <[email protected]>
Reviewed-by: Matthew Poremba <[email protected]>
---
M src/arch/arm/linux/process.cc
M src/arch/mips/linux/process.cc
M src/arch/power/linux/process.cc
M src/arch/riscv/linux/process.cc
M src/arch/sparc/linux/syscalls.cc
M src/arch/sparc/solaris/process.cc
M src/arch/x86/linux/process.cc
7 files changed, 14 insertions(+), 41 deletions(-)
Approvals:
Matthew Poremba: Looks good to me, approved
Gabe Black: Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/arch/arm/linux/process.cc b/src/arch/arm/linux/process.cc
index a78c8e2..65f1cd1 100644
--- a/src/arch/arm/linux/process.cc
+++ b/src/arch/arm/linux/process.cc
@@ -100,10 +100,9 @@
/// Target uname() handler.
static SyscallReturn
-unameFunc32(SyscallDesc *desc, ThreadContext *tc, Addr utsname)
+unameFunc32(SyscallDesc *desc, ThreadContext *tc, VPtr<Linux::utsname>
name)
{
auto process = tc->getProcessPtr();
- TypedBufferArg<Linux::utsname> name(utsname);
strcpy(name->sysname, "Linux");
strcpy(name->nodename, "m5.eecs.umich.edu");
@@ -111,16 +110,14 @@
strcpy(name->version, "#1 SMP Sat Dec 1 00:00:00 GMT 2012");
strcpy(name->machine, "armv7l");
- name.copyOut(tc->getVirtProxy());
return 0;
}
/// Target uname() handler.
static SyscallReturn
-unameFunc64(SyscallDesc *desc, ThreadContext *tc, Addr utsname)
+unameFunc64(SyscallDesc *desc, ThreadContext *tc, VPtr<Linux::utsname>
name)
{
auto process = tc->getProcessPtr();
- TypedBufferArg<Linux::utsname> name(utsname);
strcpy(name->sysname, "Linux");
strcpy(name->nodename, "gem5");
@@ -128,7 +125,6 @@
strcpy(name->version, "#1 SMP Sat Dec 1 00:00:00 GMT 2012");
strcpy(name->machine, "armv8l");
- name.copyOut(tc->getVirtProxy());
return 0;
}
diff --git a/src/arch/mips/linux/process.cc b/src/arch/mips/linux/process.cc
index b8b2267..8f1ec16 100644
--- a/src/arch/mips/linux/process.cc
+++ b/src/arch/mips/linux/process.cc
@@ -77,10 +77,9 @@
/// Target uname() handler.
static SyscallReturn
-unameFunc(SyscallDesc *desc, ThreadContext *tc, Addr utsname)
+unameFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<Linux::utsname> name)
{
auto process = tc->getProcessPtr();
- TypedBufferArg<Linux::utsname> name(utsname);
strcpy(name->sysname, "Linux");
strcpy(name->nodename,"sim.gem5.org");
@@ -88,7 +87,6 @@
strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003");
strcpy(name->machine, "mips");
- name.copyOut(tc->getVirtProxy());
return 0;
}
@@ -103,10 +101,9 @@
case 45:
{
// GSI_IEEE_FP_CONTROL
- TypedBufferArg<uint64_t> fpcr(bufPtr);
+ VPtr<uint64_t> fpcr(bufPtr, tc);
// I don't think this exactly matches the HW FPCR
*fpcr = 0;
- fpcr.copyOut(tc->getVirtProxy());
return 0;
}
default:
@@ -128,11 +125,11 @@
case 14:
{
// SSI_IEEE_FP_CONTROL
- TypedBufferArg<uint64_t> fpcr(bufPtr);
+ ConstVPtr<uint64_t> fpcr(bufPtr, tc);
// I don't think this exactly matches the HW FPCR
fpcr.copyIn(tc->getVirtProxy());
DPRINTFR(SyscallVerbose, "sys_setsysinfo(SSI_IEEE_FP_CONTROL): "
- " setting FPCR to 0x%x\n", letoh(*(uint64_t*)fpcr));
+ " setting FPCR to 0x%x\n", letoh(*fpcr));
return 0;
}
default:
diff --git a/src/arch/power/linux/process.cc
b/src/arch/power/linux/process.cc
index d613d52..fd07947 100644
--- a/src/arch/power/linux/process.cc
+++ b/src/arch/power/linux/process.cc
@@ -76,10 +76,9 @@
/// Target uname() handler.
static SyscallReturn
-unameFunc(SyscallDesc *desc, ThreadContext *tc, Addr utsname)
+unameFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<Linux::utsname> name)
{
auto process = tc->getProcessPtr();
- TypedBufferArg<Linux::utsname> name(utsname);
strcpy(name->sysname, "Linux");
strcpy(name->nodename, "sim.gem5.org");
@@ -87,7 +86,6 @@
strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003");
strcpy(name->machine, "power");
- name.copyOut(tc->getVirtProxy());
return 0;
}
diff --git a/src/arch/riscv/linux/process.cc
b/src/arch/riscv/linux/process.cc
index e70a07f..fa6bf01 100644
--- a/src/arch/riscv/linux/process.cc
+++ b/src/arch/riscv/linux/process.cc
@@ -84,10 +84,9 @@
/// Target uname() handler.
static SyscallReturn
-unameFunc64(SyscallDesc *desc, ThreadContext *tc, Addr utsname)
+unameFunc64(SyscallDesc *desc, ThreadContext *tc, VPtr<Linux::utsname>
name)
{
auto process = tc->getProcessPtr();
- TypedBufferArg<Linux::utsname> name(utsname);
strcpy(name->sysname, "Linux");
strcpy(name->nodename,"sim.gem5.org");
@@ -95,16 +94,14 @@
strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003");
strcpy(name->machine, "riscv64");
- name.copyOut(tc->getVirtProxy());
return 0;
}
/// Target uname() handler.
static SyscallReturn
-unameFunc32(SyscallDesc *desc, ThreadContext *tc, Addr utsname)
+unameFunc32(SyscallDesc *desc, ThreadContext *tc, VPtr<Linux::utsname>
name)
{
auto process = tc->getProcessPtr();
- TypedBufferArg<Linux::utsname> name(utsname);
strcpy(name->sysname, "Linux");
strcpy(name->nodename,"sim.gem5.org");
@@ -112,7 +109,6 @@
strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003");
strcpy(name->machine, "riscv32");
- name.copyOut(tc->getVirtProxy());
return 0;
}
diff --git a/src/arch/sparc/linux/syscalls.cc
b/src/arch/sparc/linux/syscalls.cc
index 3eaba91..304f2cf 100644
--- a/src/arch/sparc/linux/syscalls.cc
+++ b/src/arch/sparc/linux/syscalls.cc
@@ -37,10 +37,9 @@
/// Target uname() handler.
static SyscallReturn
-unameFunc(SyscallDesc *desc, ThreadContext *tc, Addr utsname)
+unameFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<Linux::utsname> name)
{
auto process = tc->getProcessPtr();
- TypedBufferArg<Linux::utsname> name(utsname);
strcpy(name->sysname, "Linux");
strcpy(name->nodename, "sim.gem5.org");
@@ -48,8 +47,6 @@
strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003");
strcpy(name->machine, "sparc");
- name.copyOut(tc->getVirtProxy());
-
return 0;
}
diff --git a/src/arch/sparc/solaris/process.cc
b/src/arch/sparc/solaris/process.cc
index f1a13ca..63f1a0f 100644
--- a/src/arch/sparc/solaris/process.cc
+++ b/src/arch/sparc/solaris/process.cc
@@ -70,10 +70,9 @@
/// Target uname() handler.
static SyscallReturn
-unameFunc(SyscallDesc *desc, ThreadContext *tc, Addr utsname)
+unameFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<Solaris::utsname>
name)
{
auto process = tc->getProcessPtr();
- TypedBufferArg<Solaris::utsname> name(utsname);
strcpy(name->sysname, "SunOS");
strcpy(name->nodename, "m5.eecs.umich.edu");
@@ -81,8 +80,6 @@
strcpy(name->version, "Generic_118558-21");
strcpy(name->machine, "sun4u");
- name.copyOut(tc->getVirtProxy());
-
return 0;
}
diff --git a/src/arch/x86/linux/process.cc b/src/arch/x86/linux/process.cc
index b0e87c0..9460a4b 100644
--- a/src/arch/x86/linux/process.cc
+++ b/src/arch/x86/linux/process.cc
@@ -89,10 +89,9 @@
/// Target uname() handler.
static SyscallReturn
-unameFunc(SyscallDesc *desc, ThreadContext *tc, Addr utsname)
+unameFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<Linux::utsname> name)
{
auto process = tc->getProcessPtr();
- TypedBufferArg<Linux::utsname> name(utsname);
strcpy(name->sysname, "Linux");
strcpy(name->nodename, "sim.gem5.org");
@@ -100,8 +99,6 @@
strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003");
strcpy(name->machine, "x86_64");
- name.copyOut(tc->getVirtProxy());
-
return 0;
}
@@ -167,7 +164,8 @@
};
static SyscallReturn
-setThreadArea32Func(SyscallDesc *desc, ThreadContext *tc, Addr userDescPtr)
+setThreadArea32Func(SyscallDesc *desc, ThreadContext *tc,
+ VPtr<UserDesc32> userDesc)
{
const int minTLSEntry = 6;
const int numTLSEntries = 3;
@@ -180,14 +178,10 @@
assert((maxTLSEntry + 1) * sizeof(uint64_t) <= x86p->gdtSize());
- TypedBufferArg<UserDesc32> userDesc(userDescPtr);
TypedBufferArg<uint64_t>
gdt(x86p->gdtStart() + minTLSEntry * sizeof(uint64_t),
numTLSEntries * sizeof(uint64_t));
- if (!userDesc.copyIn(tc->getVirtProxy()))
- return -EFAULT;
-
if (!gdt.copyIn(tc->getVirtProxy()))
panic("Failed to copy in GDT for %s.\n", desc->name());
@@ -240,8 +234,6 @@
gdt[index] = (uint64_t)segDesc;
- if (!userDesc.copyOut(tc->getVirtProxy()))
- return -EFAULT;
if (!gdt.copyOut(tc->getVirtProxy()))
panic("Failed to copy out GDT for %s.\n", desc->name());
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/29403
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ia4b6c9135f16e6c68bbcf3a9c15ba7433a0a6682
Gerrit-Change-Number: 29403
Gerrit-PatchSet: 3
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-Reviewer: Bradford Beckmann <[email protected]>
Gerrit-Reviewer: Ciro Santilli <[email protected]>
Gerrit-Reviewer: Gabe Black <[email protected]>
Gerrit-Reviewer: Giacomo Travaglini <[email protected]>
Gerrit-Reviewer: Matthew Poremba <[email protected]>
Gerrit-Reviewer: kokoro <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s