Gabe Black has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/40498 )

Change subject: arch,sim: Use VPtr<> instead of Addr in system call signatures.
......................................................................

arch,sim: Use VPtr<> instead of Addr in system call signatures.

This tells the GuestABI mechanism that these are guest pointers and not
uint64_ts, and that they should be treated as 32 bit or 64 bit values
depending on the size of pointers in the target ABI.

Change-Id: Ia9b5447848c52668a975d8b07b11ad457e756b13
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/40498
Maintainer: Gabe Black <gabe.bl...@gmail.com>
Tested-by: kokoro <noreply+kok...@google.com>
Reviewed-by: Bobby R. Bruce <bbr...@ucdavis.edu>
---
M src/arch/arm/freebsd/se_workload.cc
M src/arch/mips/linux/se_workload.cc
M src/arch/sparc/linux/syscalls.cc
M src/sim/syscall_emul.cc
M src/sim/syscall_emul.hh
5 files changed, 120 insertions(+), 112 deletions(-)

Approvals:
  Bobby R. Bruce: Looks good to me, approved
  Gabe Black: Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/arch/arm/freebsd/se_workload.cc b/src/arch/arm/freebsd/se_workload.cc
index ab6b03e..661a4a9 100644
--- a/src/arch/arm/freebsd/se_workload.cc
+++ b/src/arch/arm/freebsd/se_workload.cc
@@ -83,8 +83,8 @@

 #if !defined ( __GNU_LIBRARY__ )
 static SyscallReturn
-sysctlFunc(SyscallDesc *desc, ThreadContext *tc, Addr namep, size_t nameLen,
-           Addr oldp, Addr oldlenp, Addr newp, size_t newlen)
+sysctlFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> namep, size_t nameLen,
+           VPtr<> oldp, VPtr<> oldlenp, VPtr<> newp, size_t newlen)
 {
     uint64_t ret;

diff --git a/src/arch/mips/linux/se_workload.cc b/src/arch/mips/linux/se_workload.cc
index 0abe263..ef12f4f 100644
--- a/src/arch/mips/linux/se_workload.cc
+++ b/src/arch/mips/linux/se_workload.cc
@@ -124,7 +124,7 @@
 /// Target sys_setsysinfo() handler.
 static SyscallReturn
 sys_setsysinfoFunc(SyscallDesc *desc, ThreadContext *tc, unsigned op,
-                   Addr bufPtr, unsigned nbytes)
+                   VPtr<> bufPtr, unsigned nbytes)
 {
     switch (op) {

@@ -147,7 +147,7 @@
 }

 static SyscallReturn
-setThreadAreaFunc(SyscallDesc *desc, ThreadContext *tc, Addr addr)
+setThreadAreaFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> addr)
 {
     tc->setMiscRegNoEffect(MISCREG_TP_VALUE, addr);
     return 0;
diff --git a/src/arch/sparc/linux/syscalls.cc b/src/arch/sparc/linux/syscalls.cc
index a00f60e..17cc705 100644
--- a/src/arch/sparc/linux/syscalls.cc
+++ b/src/arch/sparc/linux/syscalls.cc
@@ -54,7 +54,7 @@

 static SyscallReturn
 getresuidFunc(SyscallDesc *desc, ThreadContext *tc,
-              Addr ruid, Addr euid, Addr suid)
+              VPtr<> ruid, VPtr<> euid, VPtr<> suid)
 {
     const uint64_t id = htobe(100);
     // Handle the EFAULT case
diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc
index 8f04cd5..4f6716b 100644
--- a/src/sim/syscall_emul.cc
+++ b/src/sim/syscall_emul.cc
@@ -89,7 +89,7 @@
 }

 static void
-exitFutexWake(ThreadContext *tc, Addr addr, uint64_t tgid)
+exitFutexWake(ThreadContext *tc, VPtr<> addr, uint64_t tgid)
 {
     // Clear value at address pointed to by thread's childClearTID field.
     BufferArg ctidBuf(addr, sizeof(long));
@@ -243,7 +243,7 @@


 SyscallReturn
-brkFunc(SyscallDesc *desc, ThreadContext *tc, Addr new_brk)
+brkFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> new_brk)
 {
     // change brk addr to first arg
     auto p = tc->getProcessPtr();
@@ -300,7 +300,7 @@
 SyscallReturn
 _llseekFunc(SyscallDesc *desc, ThreadContext *tc,
             int tgt_fd, uint64_t offset_high, uint32_t offset_low,
-            Addr result_ptr, int whence)
+            VPtr<> result_ptr, int whence)
 {
     auto p = tc->getProcessPtr();

@@ -325,7 +325,7 @@


 SyscallReturn
-munmapFunc(SyscallDesc *desc, ThreadContext *tc, Addr start, size_t length)
+munmapFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> start, size_t length)
 {
     // Even if the system is currently not capable of recycling physical
     // pages, there is no reason we can't unmap them so that we trigger
@@ -348,7 +348,7 @@

 SyscallReturn
 gethostnameFunc(SyscallDesc *desc, ThreadContext *tc,
-                Addr buf_ptr, int name_len)
+                VPtr<> buf_ptr, int name_len)
 {
     BufferArg name(buf_ptr, name_len);
     strncpy((char *)name.bufferPtr(), hostname, name_len);
@@ -358,7 +358,7 @@

 SyscallReturn
 getcwdFunc(SyscallDesc *desc, ThreadContext *tc,
-           Addr buf_ptr, unsigned long size)
+           VPtr<> buf_ptr, unsigned long size)
 {
     int result = 0;
     auto p = tc->getProcessPtr();
@@ -388,7 +388,7 @@

 SyscallReturn
 readlinkFunc(SyscallDesc *desc, ThreadContext *tc,
-             Addr pathname, Addr buf_ptr, size_t bufsiz)
+             VPtr<> pathname, VPtr<> buf_ptr, size_t bufsiz)
 {
     std::string path;
     auto p = tc->getProcessPtr();
@@ -445,7 +445,7 @@
 }

 SyscallReturn
-unlinkFunc(SyscallDesc *desc, ThreadContext *tc, Addr pathname)
+unlinkFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> pathname)
 {
     std::string path;
     auto p = tc->getProcessPtr();
@@ -461,7 +461,7 @@

 SyscallReturn
 linkFunc(SyscallDesc *desc, ThreadContext *tc,
-         Addr pathname, Addr new_pathname)
+         VPtr<> pathname, VPtr<> new_pathname)
 {
     std::string path;
     std::string new_path;
@@ -482,7 +482,7 @@

 SyscallReturn
 symlinkFunc(SyscallDesc *desc, ThreadContext *tc,
-            Addr pathname, Addr new_pathname)
+            VPtr<> pathname, VPtr<> new_pathname)
 {
     std::string path;
     std::string new_path;
@@ -502,7 +502,7 @@
 }

 SyscallReturn
-mkdirFunc(SyscallDesc *desc, ThreadContext *tc, Addr pathname, mode_t mode)
+mkdirFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> pathname, mode_t mode)
 {
     auto p = tc->getProcessPtr();
     std::string path;
@@ -516,7 +516,8 @@
 }

 SyscallReturn
-renameFunc(SyscallDesc *desc, ThreadContext *tc, Addr oldpath, Addr newpath)
+renameFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> oldpath,
+           VPtr<> newpath)
 {
     auto p = tc->getProcessPtr();

@@ -537,7 +538,8 @@
 }

 SyscallReturn
-truncateFunc(SyscallDesc *desc, ThreadContext *tc, Addr pathname, off_t length)
+truncateFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> pathname,
+        off_t length)
 {
     std::string path;
     auto p = tc->getProcessPtr();
@@ -568,7 +570,7 @@

 SyscallReturn
 truncate64Func(SyscallDesc *desc, ThreadContext *tc,
-               Addr pathname, int64_t length)
+               VPtr<> pathname, int64_t length)
 {
     auto process = tc->getProcessPtr();
     std::string path;
@@ -619,7 +621,7 @@

 SyscallReturn
 chownFunc(SyscallDesc *desc, ThreadContext *tc,
-          Addr pathname, uint32_t owner, uint32_t group)
+          VPtr<> pathname, uint32_t owner, uint32_t group)
 {
     std::string path;
     auto p = tc->getProcessPtr();
@@ -789,13 +791,13 @@
 }

 SyscallReturn
-pipeFunc(SyscallDesc *desc, ThreadContext *tc, Addr tgt_addr)
+pipeFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> tgt_addr)
 {
     return pipe2Func(desc, tc, tgt_addr, 0);
 }

 SyscallReturn
-pipe2Func(SyscallDesc *desc, ThreadContext *tc, Addr tgt_addr, int flags)
+pipe2Func(SyscallDesc *desc, ThreadContext *tc, VPtr<> tgt_addr, int flags)
 {
     auto p = tc->getProcessPtr();

@@ -993,7 +995,7 @@

 SyscallReturn
 accessFunc(SyscallDesc *desc, ThreadContext *tc,
-           Addr pathname, mode_t mode)
+           VPtr<> pathname, mode_t mode)
 {
     std::string path;
     auto p = tc->getProcessPtr();
@@ -1009,7 +1011,7 @@

 SyscallReturn
 mknodFunc(SyscallDesc *desc, ThreadContext *tc,
-          Addr pathname, mode_t mode, dev_t dev)
+          VPtr<> pathname, mode_t mode, dev_t dev)
 {
     auto p = tc->getProcessPtr();
     std::string path;
@@ -1023,7 +1025,7 @@
 }

 SyscallReturn
-chdirFunc(SyscallDesc *desc, ThreadContext *tc, Addr pathname)
+chdirFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> pathname)
 {
     auto p = tc->getProcessPtr();
     std::string path;
@@ -1050,7 +1052,7 @@
 }

 SyscallReturn
-rmdirFunc(SyscallDesc *desc, ThreadContext *tc, Addr pathname)
+rmdirFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> pathname)
 {
     auto p = tc->getProcessPtr();
     std::string path;
@@ -1067,7 +1069,7 @@
 template<typename DE, int SYS_NUM>
 static SyscallReturn
 getdentsImpl(SyscallDesc *desc, ThreadContext *tc,
-             int tgt_fd, Addr buf_ptr, unsigned count)
+             int tgt_fd, VPtr<> buf_ptr, unsigned count)
 {
     auto p = tc->getProcessPtr();

@@ -1109,7 +1111,7 @@
 #if defined(SYS_getdents)
 SyscallReturn
 getdentsFunc(SyscallDesc *desc, ThreadContext *tc,
-             int tgt_fd, Addr buf_ptr, unsigned count)
+             int tgt_fd, VPtr<> buf_ptr, unsigned count)
 {
     typedef struct linux_dirent {
         unsigned long d_ino;
@@ -1126,7 +1128,7 @@
 #if defined(SYS_getdents64)
 SyscallReturn
 getdents64Func(SyscallDesc *desc, ThreadContext *tc,
-               int tgt_fd, Addr buf_ptr, unsigned count)
+               int tgt_fd, VPtr<> buf_ptr, unsigned count)
 {
     typedef struct linux_dirent64 {
         ino64_t d_ino;
@@ -1157,7 +1159,7 @@

 SyscallReturn
 bindFunc(SyscallDesc *desc, ThreadContext *tc,
-         int tgt_fd, Addr buf_ptr, int addrlen)
+         int tgt_fd, VPtr<> buf_ptr, int addrlen)
 {
     auto p = tc->getProcessPtr();

@@ -1193,7 +1195,7 @@

 SyscallReturn
 connectFunc(SyscallDesc *desc, ThreadContext *tc,
-            int tgt_fd, Addr buf_ptr, int addrlen)
+            int tgt_fd, VPtr<> buf_ptr, int addrlen)
 {
     auto p = tc->getProcessPtr();

@@ -1214,8 +1216,8 @@

 SyscallReturn
 recvfromFunc(SyscallDesc *desc, ThreadContext *tc,
-             int tgt_fd, Addr bufrPtr, size_t bufrLen, int flags,
-             Addr addrPtr, Addr addrlenPtr)
+             int tgt_fd, VPtr<> bufrPtr, size_t bufrLen, int flags,
+             VPtr<> addrPtr, VPtr<> addrlenPtr)
 {
     auto p = tc->getProcessPtr();

@@ -1274,8 +1276,8 @@

 SyscallReturn
 sendtoFunc(SyscallDesc *desc, ThreadContext *tc,
-           int tgt_fd, Addr bufrPtr, size_t bufrLen, int flags,
-           Addr addrPtr, socklen_t addrLen)
+           int tgt_fd, VPtr<> bufrPtr, size_t bufrLen, int flags,
+           VPtr<> addrPtr, socklen_t addrLen)
 {
     auto p = tc->getProcessPtr();

@@ -1306,7 +1308,7 @@

 SyscallReturn
 recvmsgFunc(SyscallDesc *desc, ThreadContext *tc,
-            int tgt_fd, Addr msgPtr, int flags)
+            int tgt_fd, VPtr<> msgPtr, int flags)
 {
     auto p = tc->getProcessPtr();

@@ -1444,7 +1446,7 @@

 SyscallReturn
 sendmsgFunc(SyscallDesc *desc, ThreadContext *tc,
-            int tgt_fd, Addr msgPtr, int flags)
+            int tgt_fd, VPtr<> msgPtr, int flags)
 {
     auto p = tc->getProcessPtr();

@@ -1511,7 +1513,8 @@

 SyscallReturn
 getsockoptFunc(SyscallDesc *desc, ThreadContext *tc,
- int tgt_fd, int level, int optname, Addr valPtr, Addr lenPtr)
+               int tgt_fd, int level, int optname, VPtr<> valPtr,
+               VPtr<> lenPtr)
 {
     // union of all possible return value types from getsockopt
     union val {
@@ -1549,7 +1552,7 @@

 SyscallReturn
 getsocknameFunc(SyscallDesc *desc, ThreadContext *tc,
-                int tgt_fd, Addr addrPtr, Addr lenPtr)
+                int tgt_fd, VPtr<> addrPtr, VPtr<> lenPtr)
 {
     auto p = tc->getProcessPtr();

@@ -1586,7 +1589,7 @@

 SyscallReturn
 getpeernameFunc(SyscallDesc *desc, ThreadContext *tc,
-                int tgt_fd, Addr sockAddrPtr, Addr addrlenPtr)
+                int tgt_fd, VPtr<> sockAddrPtr, VPtr<> addrlenPtr)
 {
     auto p = tc->getProcessPtr();

@@ -1613,7 +1616,8 @@

 SyscallReturn
 setsockoptFunc(SyscallDesc *desc, ThreadContext *tc,
- int tgt_fd, int level, int optname, Addr valPtr, socklen_t len)
+               int tgt_fd, int level, int optname, VPtr<> valPtr,
+               socklen_t len)
 {
     auto p = tc->getProcessPtr();

diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh
index d6afec8..0872b0f 100644
--- a/src/sim/syscall_emul.hh
+++ b/src/sim/syscall_emul.hh
@@ -152,7 +152,7 @@
 SyscallReturn getpagesizeFunc(SyscallDesc *desc, ThreadContext *tc);

 /// Target brk() handler: set brk address.
-SyscallReturn brkFunc(SyscallDesc *desc, ThreadContext *tc, Addr new_brk);
+SyscallReturn brkFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> new_brk);

 /// Target close() handler.
 SyscallReturn closeFunc(SyscallDesc *desc, ThreadContext *tc, int tgt_fd);
@@ -164,10 +164,10 @@
 /// Target _llseek() handler.
 SyscallReturn _llseekFunc(SyscallDesc *desc, ThreadContext *tc,
                           int tgt_fd, uint64_t offset_high,
- uint32_t offset_low, Addr result_ptr, int whence); + uint32_t offset_low, VPtr<> result_ptr, int whence);

 /// Target munmap() handler.
-SyscallReturn munmapFunc(SyscallDesc *desc, ThreadContext *tc, Addr start,
+SyscallReturn munmapFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> start,
                          size_t length);

 /// Target shutdown() handler.
@@ -176,49 +176,50 @@

 /// Target gethostname() handler.
 SyscallReturn gethostnameFunc(SyscallDesc *desc, ThreadContext *tc,
-                              Addr buf_ptr, int name_len);
+                              VPtr<> buf_ptr, int name_len);

 /// Target getcwd() handler.
 SyscallReturn getcwdFunc(SyscallDesc *desc, ThreadContext *tc,
-                         Addr buf_ptr, unsigned long size);
+                         VPtr<> buf_ptr, unsigned long size);

 /// Target readlink() handler.
 SyscallReturn readlinkFunc(SyscallDesc *desc, ThreadContext *tc,
-                           Addr pathname, Addr buf, size_t bufsiz);
+                           VPtr<> pathname, VPtr<> buf, size_t bufsiz);

 /// Target unlink() handler.
-SyscallReturn unlinkFunc(SyscallDesc *desc, ThreadContext *tc, Addr pathname);
+SyscallReturn unlinkFunc(SyscallDesc *desc, ThreadContext *tc,
+                         VPtr<> pathname);

 /// Target link() handler
 SyscallReturn linkFunc(SyscallDesc *desc, ThreadContext *tc,
-                       Addr pathname, Addr new_pathname);
+                       VPtr<> pathname, VPtr<> new_pathname);

 /// Target symlink() handler.
 SyscallReturn symlinkFunc(SyscallDesc *desc, ThreadContext *tc,
-                          Addr pathname, Addr new_pathname);
+                          VPtr<> pathname, VPtr<> new_pathname);

 /// Target mkdir() handler.
 SyscallReturn mkdirFunc(SyscallDesc *desc, ThreadContext *tc,
-                        Addr pathname, mode_t mode);
+                        VPtr<> pathname, mode_t mode);

 /// Target mknod() handler.
 SyscallReturn mknodFunc(SyscallDesc *desc, ThreadContext *tc,
-                        Addr pathname, mode_t mode, dev_t dev);
+                        VPtr<> pathname, mode_t mode, dev_t dev);

 /// Target chdir() handler.
-SyscallReturn chdirFunc(SyscallDesc *desc, ThreadContext *tc, Addr pathname); +SyscallReturn chdirFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> pathname);

 // Target rmdir() handler.
-SyscallReturn rmdirFunc(SyscallDesc *desc, ThreadContext *tc, Addr pathname); +SyscallReturn rmdirFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> pathname);

 /// Target rename() handler.
 SyscallReturn renameFunc(SyscallDesc *desc, ThreadContext *tc,
-                         Addr oldpath, Addr newpath);
+                         VPtr<> oldpath, VPtr<> newpath);


 /// Target truncate() handler.
 SyscallReturn truncateFunc(SyscallDesc *desc, ThreadContext *tc,
-                           Addr pathname, off_t length);
+                           VPtr<> pathname, off_t length);


 /// Target ftruncate() handler.
@@ -228,7 +229,7 @@

 /// Target truncate64() handler.
 SyscallReturn truncate64Func(SyscallDesc *desc, ThreadContext *tc,
-                             Addr pathname, int64_t length);
+                             VPtr<> pathname, int64_t length);

 /// Target ftruncate64() handler.
 SyscallReturn ftruncate64Func(SyscallDesc *desc, ThreadContext *tc,
@@ -242,7 +243,7 @@

 /// Target chown() handler.
 SyscallReturn chownFunc(SyscallDesc *desc, ThreadContext *tc,
-                        Addr pathname, uint32_t owner, uint32_t group);
+                        VPtr<> pathname, uint32_t owner, uint32_t group);

 /// Target getpgrpFunc() handler.
 SyscallReturn getpgrpFunc(SyscallDesc *desc, ThreadContext *tc);
@@ -272,22 +273,23 @@
                           int tgt_fd, int cmd);

 /// Target pipe() handler.
-SyscallReturn pipeFunc(SyscallDesc *desc, ThreadContext *tc, Addr tgt_addr); +SyscallReturn pipeFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> tgt_addr);

 /// Target pipe() handler.
 SyscallReturn pipe2Func(SyscallDesc *desc, ThreadContext *tc,
-                        Addr tgt_addr, int flags);
+                        VPtr<> tgt_addr, int flags);

 /// Target getpid() handler.
 SyscallReturn getpidFunc(SyscallDesc *desc, ThreadContext *tc);

 // Target getpeername() handler.
 SyscallReturn getpeernameFunc(SyscallDesc *desc, ThreadContext *tc,
- int tgt_fd, Addr sockAddrPtr, Addr addrlenPtr);
+                              int tgt_fd, VPtr<> sockAddrPtr,
+                              VPtr<> addrlenPtr);

 // Target bind() handler.
 SyscallReturn bindFunc(SyscallDesc *desc, ThreadContext *tc,
-                       int tgt_fd, Addr buf_ptr, int addrlen);
+                       int tgt_fd, VPtr<> buf_ptr, int addrlen);

 // Target listen() handler.
 SyscallReturn listenFunc(SyscallDesc *desc, ThreadContext *tc,
@@ -295,37 +297,37 @@

 // Target connect() handler.
 SyscallReturn connectFunc(SyscallDesc *desc, ThreadContext *tc,
-                          int tgt_fd, Addr buf_ptr, int addrlen);
+                          int tgt_fd, VPtr<> buf_ptr, int addrlen);

 #if defined(SYS_getdents)
 // Target getdents() handler.
 SyscallReturn getdentsFunc(SyscallDesc *desc, ThreadContext *tc,
-                           int tgt_fd, Addr buf_ptr, unsigned count);
+                           int tgt_fd, VPtr<> buf_ptr, unsigned count);
 #endif

 #if defined(SYS_getdents64)
 // Target getdents() handler.
 SyscallReturn getdents64Func(SyscallDesc *desc, ThreadContext *tc,
-                             int tgt_fd, Addr buf_ptr, unsigned count);
+                             int tgt_fd, VPtr<> buf_ptr, unsigned count);
 #endif

 // Target sendto() handler.
 SyscallReturn sendtoFunc(SyscallDesc *desc, ThreadContext *tc,
- int tgt_fd, Addr bufrPtr, size_t bufrLen, int flags,
-                         Addr addrPtr, socklen_t addrLen);
+ int tgt_fd, VPtr<> bufrPtr, size_t bufrLen, int flags,
+                         VPtr<> addrPtr, socklen_t addrLen);

 // Target recvfrom() handler.
 SyscallReturn recvfromFunc(SyscallDesc *desc, ThreadContext *tc,
-                           int tgt_fd, Addr bufrPtr, size_t bufrLen,
-                           int flags, Addr addrPtr, Addr addrlenPtr);
+                           int tgt_fd, VPtr<> bufrPtr, size_t bufrLen,
+                           int flags, VPtr<> addrPtr, VPtr<> addrlenPtr);

 // Target recvmsg() handler.
 SyscallReturn recvmsgFunc(SyscallDesc *desc, ThreadContext *tc,
-                          int tgt_fd, Addr msgPtr, int flags);
+                          int tgt_fd, VPtr<> msgPtr, int flags);

 // Target sendmsg() handler.
 SyscallReturn sendmsgFunc(SyscallDesc *desc, ThreadContext *tc,
-                          int tgt_fd, Addr msgPtr, int flags);
+                          int tgt_fd, VPtr<> msgPtr, int flags);

 // Target getuid() handler.
 SyscallReturn getuidFunc(SyscallDesc *desc, ThreadContext *tc);
@@ -344,17 +346,17 @@

 /// Target access() handler
 SyscallReturn accessFunc(SyscallDesc *desc, ThreadContext *tc,
-                         Addr pathname, mode_t mode);
+                         VPtr<> pathname, mode_t mode);

 // Target getsockopt() handler.
 SyscallReturn getsockoptFunc(SyscallDesc *desc, ThreadContext *tc,
                              int tgt_fd, int level, int optname,
-                             Addr valPtr, Addr lenPtr);
+                             VPtr<> valPtr, VPtr<> lenPtr);

 // Target setsockopt() handler.
 SyscallReturn setsockoptFunc(SyscallDesc *desc, ThreadContext *tc,
                              int tgt_fd, int level, int optname,
-                             Addr valPtr, socklen_t len);
+                             VPtr<> valPtr, socklen_t len);

 SyscallReturn getcpuFunc(SyscallDesc *desc, ThreadContext *tc,
                          VPtr<uint32_t> cpu, VPtr<uint32_t> node,
@@ -362,7 +364,7 @@

 // Target getsockname() handler.
 SyscallReturn getsocknameFunc(SyscallDesc *desc, ThreadContext *tc,
-                              int tgt_fd, Addr addrPtr, Addr lenPtr);
+                              int tgt_fd, VPtr<> addrPtr, VPtr<> lenPtr);

 /// Futex system call
 /// Implemented by Daniel Sanchez
@@ -370,7 +372,7 @@
 template <class OS>
 SyscallReturn
 futexFunc(SyscallDesc *desc, ThreadContext *tc,
-        Addr uaddr, int op, int val, int timeout, Addr uaddr2, int val3)
+ VPtr<> uaddr, int op, int val, int timeout, VPtr<> uaddr2, int val3)
 {
     auto process = tc->getProcessPtr();

@@ -672,7 +674,7 @@
 template <class OS>
 SyscallReturn
 ioctlFunc(SyscallDesc *desc, ThreadContext *tc,
-          int tgt_fd, unsigned req, Addr addr)
+          int tgt_fd, unsigned req, VPtr<> addr)
 {
     auto p = tc->getProcessPtr();

@@ -747,7 +749,7 @@
 template <class OS>
 SyscallReturn
 openatFunc(SyscallDesc *desc, ThreadContext *tc,
-           int tgt_dirfd, Addr pathname, int tgt_flags, int mode)
+           int tgt_dirfd, VPtr<> pathname, int tgt_flags, int mode)
 {
     auto p = tc->getProcessPtr();

@@ -896,7 +898,7 @@
 template <class OS>
 SyscallReturn
 openFunc(SyscallDesc *desc, ThreadContext *tc,
-         Addr pathname, int tgt_flags, int mode)
+         VPtr<> pathname, int tgt_flags, int mode)
 {
     return openatFunc<OS>(
             desc, tc, OS::TGT_AT_FDCWD, pathname, tgt_flags, mode);
@@ -905,7 +907,7 @@
 /// Target unlinkat() handler.
 template <class OS>
 SyscallReturn
-unlinkatFunc(SyscallDesc *desc, ThreadContext *tc, int dirfd, Addr pathname) +unlinkatFunc(SyscallDesc *desc, ThreadContext *tc, int dirfd, VPtr<> pathname)
 {
     if (dirfd != OS::TGT_AT_FDCWD)
         warn("unlinkat: first argument not AT_FDCWD; unlikely to work");
@@ -917,7 +919,7 @@
 template <class OS>
 SyscallReturn
 faccessatFunc(SyscallDesc *desc, ThreadContext *tc,
-              int dirfd, Addr pathname, int mode)
+              int dirfd, VPtr<> pathname, int mode)
 {
     if (dirfd != OS::TGT_AT_FDCWD)
         warn("faccessat: first argument not AT_FDCWD; unlikely to work");
@@ -928,7 +930,7 @@
 template <class OS>
 SyscallReturn
 readlinkatFunc(SyscallDesc *desc, ThreadContext *tc,
-               int dirfd, Addr pathname, Addr buf, size_t bufsiz)
+               int dirfd, VPtr<> pathname, VPtr<> buf, size_t bufsiz)
 {
     if (dirfd != OS::TGT_AT_FDCWD)
         warn("openat: first argument not AT_FDCWD; unlikely to work");
@@ -939,7 +941,7 @@
 template <class OS>
 SyscallReturn
 renameatFunc(SyscallDesc *desc, ThreadContext *tc,
-             int olddirfd, Addr oldpath, int newdirfd, Addr newpath)
+             int olddirfd, VPtr<> oldpath, int newdirfd, VPtr<> newpath)
 {
     if (olddirfd != OS::TGT_AT_FDCWD)
         warn("renameat: first argument not AT_FDCWD; unlikely to work");
@@ -968,7 +970,7 @@
 /// Target chmod() handler.
 template <class OS>
 SyscallReturn
-chmodFunc(SyscallDesc *desc, ThreadContext *tc, Addr pathname, mode_t mode)
+chmodFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> pathname, mode_t mode)
 {
     std::string path;
     auto process = tc->getProcessPtr();
@@ -995,7 +997,7 @@
 template <class OS>
 SyscallReturn
 pollFunc(SyscallDesc *desc, ThreadContext *tc,
-         Addr fdsPtr, int nfds, int tmout)
+         VPtr<> fdsPtr, int nfds, int tmout)
 {
     auto p = tc->getProcessPtr();

@@ -1088,7 +1090,7 @@
 template <class OS>
 SyscallReturn
 mremapFunc(SyscallDesc *desc, ThreadContext *tc,
- Addr start, uint64_t old_length, uint64_t new_length, uint64_t flags, + VPtr<> start, uint64_t old_length, uint64_t new_length, uint64_t flags,
         GuestABI::VarArgs<uint64_t> varargs)
 {
     auto p = tc->getProcessPtr();
@@ -1117,7 +1119,7 @@
             uint64_t diff = new_length - old_length;
             p->memState->mapRegion(mmap_end, diff, "remapped");
             p->memState->setMmapEnd(mmap_end + diff);
-            return start;
+            return (Addr)start;
         } else {
if (!use_provided_address && !(flags & OS::TGT_MREMAP_MAYMOVE)) {
                 warn("can't remap here and MREMAP_MAYMOVE flag not set\n");
@@ -1163,7 +1165,7 @@
         if (new_length != old_length)
             p->memState->unmapRegion(start + new_length,
                                      old_length - new_length);
-        return use_provided_address ? provided_address : start;
+        return use_provided_address ? provided_address : (Addr)start;
     }
 }

@@ -1171,7 +1173,7 @@
 template <class OS>
 SyscallReturn
 statFunc(SyscallDesc *desc, ThreadContext *tc,
-         Addr pathname, VPtr<typename OS::tgt_stat> tgt_stat)
+         VPtr<> pathname, VPtr<typename OS::tgt_stat> tgt_stat)
 {
     std::string path;
     auto process = tc->getProcessPtr();
@@ -1198,7 +1200,7 @@
 template <class OS>
 SyscallReturn
 stat64Func(SyscallDesc *desc, ThreadContext *tc,
-           Addr pathname, VPtr<typename OS::tgt_stat64> tgt_stat)
+           VPtr<> pathname, VPtr<typename OS::tgt_stat64> tgt_stat)
 {
     std::string path;
     auto process = tc->getProcessPtr();
@@ -1230,7 +1232,8 @@
 template <class OS>
 SyscallReturn
 fstatat64Func(SyscallDesc *desc, ThreadContext *tc,
- int dirfd, Addr pathname, VPtr<typename OS::tgt_stat64> tgt_stat)
+              int dirfd, VPtr<> pathname,
+              VPtr<typename OS::tgt_stat64> tgt_stat)
 {
     auto process = tc->getProcessPtr();
     if (dirfd != OS::TGT_AT_FDCWD)
@@ -1294,7 +1297,7 @@
 template <class OS>
 SyscallReturn
 lstatFunc(SyscallDesc *desc, ThreadContext *tc,
-          Addr pathname, VPtr<typename OS::tgt_stat> tgt_stat)
+          VPtr<> pathname, VPtr<typename OS::tgt_stat> tgt_stat)
 {
     std::string path;
     auto process = tc->getProcessPtr();
@@ -1320,7 +1323,7 @@
 template <class OS>
 SyscallReturn
 lstat64Func(SyscallDesc *desc, ThreadContext *tc,
-            Addr pathname, VPtr<typename OS::tgt_stat64> tgt_stat)
+            VPtr<> pathname, VPtr<typename OS::tgt_stat64> tgt_stat)
 {
     std::string path;
     auto process = tc->getProcessPtr();
@@ -1377,7 +1380,7 @@
 template <class OS>
 SyscallReturn
 statfsFunc(SyscallDesc *desc, ThreadContext *tc,
-           Addr pathname, VPtr<typename OS::tgt_statfs> tgt_stat)
+           VPtr<> pathname, VPtr<typename OS::tgt_statfs> tgt_stat)
 {
 #if defined(__linux__)
     std::string path;
@@ -1406,7 +1409,7 @@
 template <class OS>
 SyscallReturn
cloneFunc(SyscallDesc *desc, ThreadContext *tc, RegVal flags, RegVal newStack,
-          Addr ptidPtr, Addr ctidPtr, Addr tlsPtr)
+          VPtr<> ptidPtr, VPtr<> ctidPtr, VPtr<> tlsPtr)
 {
     auto p = tc->getProcessPtr();

@@ -1517,7 +1520,8 @@
 template <class OS>
 SyscallReturn
 cloneBackwardsFunc(SyscallDesc *desc, ThreadContext *tc, RegVal flags,
- RegVal newStack, Addr ptidPtr, Addr tlsPtr, Addr ctidPtr)
+                   RegVal newStack, VPtr<> ptidPtr, VPtr<> tlsPtr,
+                   VPtr<> ctidPtr)
 {
return cloneFunc<OS>(desc, tc, flags, newStack, ptidPtr, ctidPtr, tlsPtr);
 }
@@ -1621,7 +1625,7 @@
 template <class OS>
 SyscallReturn
 mmapFunc(SyscallDesc *desc, ThreadContext *tc,
-         Addr start, typename OS::size_t length, int prot,
+         VPtr<> start, typename OS::size_t length, int prot,
          int tgt_flags, int tgt_fd, typename OS::off_t offset)
 {
     auto p = tc->getProcessPtr();
@@ -1757,13 +1761,13 @@
      */
     p->memState->mapRegion(start, length, region_name, sim_fd, offset);

-    return start;
+    return (Addr)start;
 }

 template <class OS>
 SyscallReturn
 pread64Func(SyscallDesc *desc, ThreadContext *tc,
-            int tgt_fd, Addr bufPtr, int nbytes, int offset)
+            int tgt_fd, VPtr<> bufPtr, int nbytes, int offset)
 {
     auto p = tc->getProcessPtr();

@@ -1784,7 +1788,7 @@
 template <class OS>
 SyscallReturn
 pwrite64Func(SyscallDesc *desc, ThreadContext *tc,
-             int tgt_fd, Addr bufPtr, int nbytes, int offset)
+             int tgt_fd, VPtr<> bufPtr, int nbytes, int offset)
 {
     auto p = tc->getProcessPtr();

@@ -1805,7 +1809,7 @@
 template <class OS>
 SyscallReturn
 mmap2Func(SyscallDesc *desc, ThreadContext *tc,
-          Addr start, typename OS::size_t length, int prot,
+          VPtr<> start, typename OS::size_t length, int prot,
           int tgt_flags, int tgt_fd, typename OS::off_t offset)
 {
     auto page_size = tc->getProcessPtr()->pTable->pageSize();
@@ -1853,7 +1857,7 @@
 template <class OS>
 SyscallReturn
 prlimitFunc(SyscallDesc *desc, ThreadContext *tc,
-            int pid, int resource, Addr n, VPtr<typename OS::rlimit> rlp)
+            int pid, int resource, VPtr<> n, VPtr<typename OS::rlimit> rlp)
 {
     if (pid != 0) {
         warn("prlimit: ignoring rlimits for nonzero pid");
@@ -1916,7 +1920,7 @@
 template <class OS>
 SyscallReturn
 gettimeofdayFunc(SyscallDesc *desc, ThreadContext *tc,
-                 VPtr<typename OS::timeval> tp, Addr tz_ptr)
+                 VPtr<typename OS::timeval> tp, VPtr<> tz_ptr)
 {
     getElapsedTimeMicro(tp->tv_sec, tp->tv_usec);
     tp->tv_sec += seconds_since_epoch;
@@ -1930,7 +1934,7 @@
 /// Target utimes() handler.
 template <class OS>
 SyscallReturn
-utimesFunc(SyscallDesc *desc, ThreadContext *tc, Addr pathname,
+utimesFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> pathname,
            VPtr<typename OS::timeval [2]> tp)
 {
     std::string path;
@@ -1959,7 +1963,7 @@
 template <class OS>
 SyscallReturn
 execveFunc(SyscallDesc *desc, ThreadContext *tc,
-           Addr pathname, Addr argv_mem_loc, Addr envp_mem_loc)
+           VPtr<> pathname, VPtr<> argv_mem_loc, VPtr<> envp_mem_loc)
 {
     auto p = tc->getProcessPtr();

@@ -1972,7 +1976,7 @@
         return -EACCES;

     auto read_in = [](std::vector<std::string> &vect,
-                      PortProxy &mem_proxy, Addr mem_loc)
+                      PortProxy &mem_proxy, VPtr<> mem_loc)
     {
         for (int inc = 0; ; inc++) {
             BufferArg b((mem_loc + sizeof(Addr) * inc), sizeof(Addr));
@@ -2113,7 +2117,7 @@
 /// Target time() function.
 template <class OS>
 SyscallReturn
-timeFunc(SyscallDesc *desc, ThreadContext *tc, Addr taddr)
+timeFunc(SyscallDesc *desc, ThreadContext *tc, VPtr<> taddr)
 {
     typename OS::time_t sec, usec;
     getElapsedTimeMicro(sec, usec);
@@ -2192,7 +2196,7 @@
 template <class OS>
 SyscallReturn
 socketpairFunc(SyscallDesc *desc, ThreadContext *tc,
-               int domain, int type, int prot, Addr svPtr)
+               int domain, int type, int prot, VPtr<> svPtr)
 {
     auto p = tc->getProcessPtr();

@@ -2382,7 +2386,7 @@
 template <class OS>
 SyscallReturn
 readFunc(SyscallDesc *desc, ThreadContext *tc,
-        int tgt_fd, Addr buf_ptr, int nbytes)
+        int tgt_fd, VPtr<> buf_ptr, int nbytes)
 {
     auto p = tc->getProcessPtr();

@@ -2410,7 +2414,7 @@
 template <class OS>
 SyscallReturn
 writeFunc(SyscallDesc *desc, ThreadContext *tc,
-        int tgt_fd, Addr buf_ptr, int nbytes)
+        int tgt_fd, VPtr<> buf_ptr, int nbytes)
 {
     auto p = tc->getProcessPtr();

@@ -2449,7 +2453,7 @@
 template <class OS>
 SyscallReturn
 wait4Func(SyscallDesc *desc, ThreadContext *tc,
-          pid_t pid, Addr statPtr, int options, Addr rusagePtr)
+          pid_t pid, VPtr<> statPtr, int options, VPtr<> rusagePtr)
 {
     auto p = tc->getProcessPtr();

@@ -2507,7 +2511,7 @@
 template <class OS>
 SyscallReturn
 acceptFunc(SyscallDesc *desc, ThreadContext *tc,
-           int tgt_fd, Addr addrPtr, Addr lenPtr)
+           int tgt_fd, VPtr<> addrPtr, VPtr<> lenPtr)
 {
     struct sockaddr sa;
     socklen_t addrLen;

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/40498
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: Ia9b5447848c52668a975d8b07b11ad457e756b13
Gerrit-Change-Number: 40498
Gerrit-PatchSet: 4
Gerrit-Owner: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Andreas Sandberg <andreas.sandb...@arm.com>
Gerrit-Reviewer: Bobby R. Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Jason Lowe-Power <ja...@lowepower.com>
Gerrit-Reviewer: Jonathan Bohren <jonathan.boh...@gmail.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to