[gem5-dev] Change in gem5/gem5[develop]: sim-se: implement the getcpu syscall

2020-05-20 Thread Ciro Santilli (Gerrit) via gem5-dev
Ciro Santilli has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/28590 )


Change subject: sim-se: implement the getcpu syscall
..

sim-se: implement the getcpu syscall

Change-Id: I63a1384646829b8cf68453c42aed6a7d12172787
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28590
Reviewed-by: Giacomo Travaglini 
Maintainer: Giacomo Travaglini 
Tested-by: kokoro 
---
M src/arch/arm/linux/process.cc
M src/arch/x86/linux/process.cc
M src/sim/syscall_emul.cc
M src/sim/syscall_emul.hh
4 files changed, 32 insertions(+), 6 deletions(-)

Approvals:
  Giacomo Travaglini: Looks good to me, approved; 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 b5b6553..55141ba 100644
--- a/src/arch/arm/linux/process.cc
+++ b/src/arch/arm/linux/process.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2013, 2015 ARM Limited
+ * Copyright (c) 2010-2013, 2015, 2020 ARM Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -476,7 +476,7 @@
 { base + 342, "tee" },
 { base + 343, "vmsplice" },
 { base + 344, "move_pages" },
-{ base + 345, "getcpu" },
+{ base + 345, "getcpu", getcpuFunc },
 { base + 346, "epoll_pwait" },
 { base + 347, "sys_kexec_load" },
 { base + 348, "sys_utimensat" },
@@ -681,7 +681,7 @@
 {  base + 165, "getrusage", getrusageFunc },
 {  base + 166, "umask" },
 {  base + 167, "prctl" },
-{  base + 168, "getcpu" },
+{  base + 168, "getcpu", getcpuFunc },
 {  base + 169, "gettimeofday", gettimeofdayFunc },
 {  base + 170, "settimeofday" },
 {  base + 171, "adjtimex" },
diff --git a/src/arch/x86/linux/process.cc b/src/arch/x86/linux/process.cc
index 6b50dbf..2c594e7 100644
--- a/src/arch/x86/linux/process.cc
+++ b/src/arch/x86/linux/process.cc
@@ -566,7 +566,7 @@
 { 306, "syncfs" },
 { 307, "sendmmsg" },
 { 308, "setns" },
-{ 309, "getcpu" },
+{ 309, "getcpu", getcpuFunc },
 { 310, "proess_vm_readv" },
 { 311, "proess_vm_writev" },
 { 312, "kcmp" },
@@ -914,7 +914,7 @@
 { 315, "tee" },
 { 316, "vmsplice" },
 { 317, "move_pages" },
-{ 318, "getcpu" },
+{ 318, "getcpu", getcpuFunc },
 { 319, "epoll_pwait" },
 { 320, "utimensat" },
 { 321, "signalfd" },
diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc
index bffedfd..6d39823 100644
--- a/src/sim/syscall_emul.cc
+++ b/src/sim/syscall_emul.cc
@@ -1633,3 +1633,26 @@
 return (status == -1) ? -errno : status;
 }

+SyscallReturn
+getcpuFunc(SyscallDesc *desc, ThreadContext *tc,
+   Addr cpu_ptr, Addr node_ptr, Addr tcache_ptr)
+{
+bool error = false;
+
+// unsigned is the same size (4) on all Linux supported ISAs.
+if (cpu_ptr != 0) {
+TypedBufferArg result(cpu_ptr);
+*result = htog(tc->contextId(),
+tc->getSystemPtr()->getGuestByteOrder());
+error |= !result.copyOut(tc->getVirtProxy());
+}
+
+// Set a fixed NUMA node 0.
+if (node_ptr != 0) {
+TypedBufferArg result(node_ptr);
+*result = 0;
+error |= !result.copyOut(tc->getVirtProxy());
+}
+
+return error ? -EFAULT : 0;
+}
diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh
index 4a37e99..55d30f3 100644
--- a/src/sim/syscall_emul.hh
+++ b/src/sim/syscall_emul.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2013, 2015, 2019 ARM Limited
+ * Copyright (c) 2012-2013, 2015, 2019-2020 ARM Limited
  * Copyright (c) 2015 Advanced Micro Devices, Inc.
  * All rights reserved
  *
@@ -354,6 +354,9 @@
  int tgt_fd, int level, int optname,
  Addr valPtr, socklen_t len);

+SyscallReturn getcpuFunc(SyscallDesc *desc, ThreadContext *tc,
+ Addr cpu_ptr, Addr node_ptr, Addr tcache_ptr);
+
 // Target getsockname() handler.
 SyscallReturn getsocknameFunc(SyscallDesc *desc, ThreadContext *tc,
   int tgt_fd, Addr addrPtr, Addr lenPtr);

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/28590
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: I63a1384646829b8cf68453c42aed6a7d12172787
Gerrit-Change-Number: 28590
Gerrit-PatchSet: 4
Gerrit-Owner: Ciro Santilli 
Gerrit-Reviewer: Brandon Potter 
Gerrit-Reviewer: Ciro Santilli 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Matthew Poremba 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to 

[gem5-dev] Change in gem5/gem5[develop]: sim-se: implement the getcpu syscall

2020-05-05 Thread Ciro Santilli (Gerrit) via gem5-dev
Ciro Santilli has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/28590 )



Change subject: sim-se: implement the getcpu syscall
..

sim-se: implement the getcpu syscall

Change-Id: I63a1384646829b8cf68453c42aed6a7d12172787
---
M src/arch/arm/linux/process.cc
M src/arch/x86/linux/process.cc
M src/sim/syscall_emul.cc
M src/sim/syscall_emul.hh
4 files changed, 21 insertions(+), 6 deletions(-)



diff --git a/src/arch/arm/linux/process.cc b/src/arch/arm/linux/process.cc
index b5b6553..55141ba 100644
--- a/src/arch/arm/linux/process.cc
+++ b/src/arch/arm/linux/process.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2013, 2015 ARM Limited
+ * Copyright (c) 2010-2013, 2015, 2020 ARM Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -476,7 +476,7 @@
 { base + 342, "tee" },
 { base + 343, "vmsplice" },
 { base + 344, "move_pages" },
-{ base + 345, "getcpu" },
+{ base + 345, "getcpu", getcpuFunc },
 { base + 346, "epoll_pwait" },
 { base + 347, "sys_kexec_load" },
 { base + 348, "sys_utimensat" },
@@ -681,7 +681,7 @@
 {  base + 165, "getrusage", getrusageFunc },
 {  base + 166, "umask" },
 {  base + 167, "prctl" },
-{  base + 168, "getcpu" },
+{  base + 168, "getcpu", getcpuFunc },
 {  base + 169, "gettimeofday", gettimeofdayFunc },
 {  base + 170, "settimeofday" },
 {  base + 171, "adjtimex" },
diff --git a/src/arch/x86/linux/process.cc b/src/arch/x86/linux/process.cc
index 6b50dbf..2c594e7 100644
--- a/src/arch/x86/linux/process.cc
+++ b/src/arch/x86/linux/process.cc
@@ -566,7 +566,7 @@
 { 306, "syncfs" },
 { 307, "sendmmsg" },
 { 308, "setns" },
-{ 309, "getcpu" },
+{ 309, "getcpu", getcpuFunc },
 { 310, "proess_vm_readv" },
 { 311, "proess_vm_writev" },
 { 312, "kcmp" },
@@ -914,7 +914,7 @@
 { 315, "tee" },
 { 316, "vmsplice" },
 { 317, "move_pages" },
-{ 318, "getcpu" },
+{ 318, "getcpu", getcpuFunc },
 { 319, "epoll_pwait" },
 { 320, "utimensat" },
 { 321, "signalfd" },
diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc
index bffedfd..918a7bd 100644
--- a/src/sim/syscall_emul.cc
+++ b/src/sim/syscall_emul.cc
@@ -1633,3 +1633,15 @@
 return (status == -1) ? -errno : status;
 }

+SyscallReturn
+getcpuFunc(SyscallDesc *desc, ThreadContext *tc,
+   Addr cpu_ptr, Addr node_ptr, Addr tcache_ptr)
+{
+// unsigned is the same size (4) on all Linux supported ISAs.
+uint32_t result = htog(tc->contextId(),
+tc->getSystemPtr()->getGuestByteOrder());
+BufferArg result_buf(cpu_ptr, sizeof(result));
+memcpy(result_buf.bufferPtr(), , sizeof(result));
+result_buf.copyOut(tc->getVirtProxy());
+return 0;
+}
diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh
index 5bd9f54..bb3b418 100644
--- a/src/sim/syscall_emul.hh
+++ b/src/sim/syscall_emul.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2013, 2015, 2019 ARM Limited
+ * Copyright (c) 2012-2013, 2015, 2019-2020 ARM Limited
  * Copyright (c) 2015 Advanced Micro Devices, Inc.
  * All rights reserved
  *
@@ -354,6 +354,9 @@
  int tgt_fd, int level, int optname,
  Addr valPtr, socklen_t len);

+SyscallReturn getcpuFunc(SyscallDesc *desc, ThreadContext *tc,
+Addr cpu_ptr, Addr node_ptr, Addr tcache_ptr);
+
 // Target getsockname() handler.
 SyscallReturn getsocknameFunc(SyscallDesc *desc, ThreadContext *tc,
   int tgt_fd, Addr addrPtr, Addr lenPtr);

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/28590
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: I63a1384646829b8cf68453c42aed6a7d12172787
Gerrit-Change-Number: 28590
Gerrit-PatchSet: 1
Gerrit-Owner: Ciro Santilli 
Gerrit-MessageType: newchange
___
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