aboutsummaryrefslogtreecommitdiff
path: root/target/nios2/nios2-semi.c
diff options
context:
space:
mode:
Diffstat (limited to 'target/nios2/nios2-semi.c')
-rw-r--r--target/nios2/nios2-semi.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/target/nios2/nios2-semi.c b/target/nios2/nios2-semi.c
index 5a7ad0c710..3decf6924c 100644
--- a/target/nios2/nios2-semi.c
+++ b/target/nios2/nios2-semi.c
@@ -400,20 +400,17 @@ void do_nios2_semihosting(CPUNios2State *env)
arg0, 0);
return;
} else {
- qemu_timeval tv;
struct gdb_timeval *p;
- result = qemu_gettimeofday(&tv);
- if (result == 0) {
- p = lock_user(VERIFY_WRITE, arg0, sizeof(struct gdb_timeval),
- 0);
- if (!p) {
- result = -1;
- errno = EFAULT;
- } else {
- p->tv_sec = cpu_to_be32(tv.tv_sec);
- p->tv_usec = cpu_to_be64(tv.tv_usec);
- unlock_user(p, arg0, sizeof(struct gdb_timeval));
- }
+ int64_t rt = g_get_real_time();
+ p = lock_user(VERIFY_WRITE, arg0, sizeof(struct gdb_timeval), 0);
+ if (!p) {
+ result = -1;
+ errno = EFAULT;
+ } else {
+ result = 0;
+ p->tv_sec = cpu_to_be32(rt / G_USEC_PER_SEC);
+ p->tv_usec = cpu_to_be64(rt % G_USEC_PER_SEC);
+ unlock_user(p, arg0, sizeof(struct gdb_timeval));
}
}
break;