changeset 31afddc29cd4 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=31afddc29cd4
description:
arm: add access syscall for ARM SE mode
This patch adds the "access" syscall for ARM SE as required by some
spec2006
benchmarks.
diffstat:
src/arch/arm/linux/process.cc | 2 +-
src/sim/syscall_emul.cc | 17 +++++++++++++++++
src/sim/syscall_emul.hh | 4 ++++
3 files changed, 22 insertions(+), 1 deletions(-)
diffs (50 lines):
diff -r 2694770a30d4 -r 31afddc29cd4 src/arch/arm/linux/process.cc
--- a/src/arch/arm/linux/process.cc Tue Jan 08 08:54:07 2013 -0500
+++ b/src/arch/arm/linux/process.cc Tue Jan 08 08:54:07 2013 -0500
@@ -108,7 +108,7 @@
/* 30 */ SyscallDesc("utime", unimplementedFunc),
/* 31 */ SyscallDesc("unused#31", unimplementedFunc),
/* 32 */ SyscallDesc("unused#32", unimplementedFunc),
- /* 33 */ SyscallDesc("access", unimplementedFunc),
+ /* 33 */ SyscallDesc("access", accessFunc),
/* 34 */ SyscallDesc("nice", unimplementedFunc),
/* 35 */ SyscallDesc("unused#35", unimplementedFunc),
/* 36 */ SyscallDesc("sync", unimplementedFunc),
diff -r 2694770a30d4 -r 31afddc29cd4 src/sim/syscall_emul.cc
--- a/src/sim/syscall_emul.cc Tue Jan 08 08:54:07 2013 -0500
+++ b/src/sim/syscall_emul.cc Tue Jan 08 08:54:07 2013 -0500
@@ -851,3 +851,20 @@
}
}
+SyscallReturn
+accessFunc(SyscallDesc *desc, int callnum, LiveProcess *p, ThreadContext *tc)
+{
+ int index = 0;
+
+ string path;
+ if (!tc->getMemProxy().tryReadString(path, p->getSyscallArg(tc, index)))
+ return (TheISA::IntReg)-EFAULT;
+
+ // Adjust path for current working directory
+ path = p->fullPath(path);
+
+ mode_t mode = p->getSyscallArg(tc, index);
+
+ int result = access(path.c_str(), mode);
+ return (result == -1) ? -errno : result;
+}
diff -r 2694770a30d4 -r 31afddc29cd4 src/sim/syscall_emul.hh
--- a/src/sim/syscall_emul.hh Tue Jan 08 08:54:07 2013 -0500
+++ b/src/sim/syscall_emul.hh Tue Jan 08 08:54:07 2013 -0500
@@ -335,6 +335,10 @@
SyscallReturn cloneFunc(SyscallDesc *desc, int num,
LiveProcess *p, ThreadContext *tc);
+/// Target access() handler
+SyscallReturn accessFunc(SyscallDesc *desc, int num,
+ LiveProcess *p, ThreadContext *tc);
+
/// Futex system call
/// Implemented by Daniel Sanchez
/// Used by printf's in multi-threaded apps
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev