[gem5-dev] Change in gem5/gem5[develop]: sim-se: implement the getcpu syscall
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
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