summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux-user/arm/syscall_nr.h1
-rw-r--r--linux-user/i386/syscall_nr.h1
-rw-r--r--linux-user/syscall.c14
3 files changed, 16 insertions, 0 deletions
diff --git a/linux-user/arm/syscall_nr.h b/linux-user/arm/syscall_nr.h
index 13a9ee11fd..195e459ec7 100644
--- a/linux-user/arm/syscall_nr.h
+++ b/linux-user/arm/syscall_nr.h
@@ -259,3 +259,4 @@
/* 254 for set_thread_area */
/* 255 for get_thread_area */
/* 256 for set_tid_address */
+#define TARGET_NR_utimes (269)
diff --git a/linux-user/i386/syscall_nr.h b/linux-user/i386/syscall_nr.h
index c994381aa3..9fa6be96ac 100644
--- a/linux-user/i386/syscall_nr.h
+++ b/linux-user/i386/syscall_nr.h
@@ -271,3 +271,4 @@
#define TARGET_NR_clock_getres (TARGET_NR_timer_create+7)
#define TARGET_NR_clock_nanosleep (TARGET_NR_timer_create+8)
+#define TARGET_NR_utimes 271
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index b2965bbbd9..2407400c1f 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -1742,6 +1742,20 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
ret = get_errno(utime((const char *)arg1, tbuf1));
}
break;
+ case TARGET_NR_utimes:
+ {
+ struct target_timeval *target_tvp = (struct target_timeval *)arg2;
+ struct timeval *tvp, tv[2];
+ if (target_tvp) {
+ target_to_host_timeval(&tv[0], &target_tvp[0]);
+ target_to_host_timeval(&tv[1], &target_tvp[1]);
+ tvp = tv;
+ } else {
+ tvp = NULL;
+ }
+ ret = get_errno(utimes((const char *)arg1, tvp));
+ }
+ break;
#ifdef TARGET_NR_stty
case TARGET_NR_stty:
goto unimplemented;