[PATCH 13/24] RISC-V sim: Add gettimeofday.
Jim Wilson
jimw@sifive.com
Sat Apr 17 17:58:20 GMT 2021
From: Kuan-Lin Chen <rufus@andestech.com>
Handle TARGET_SYS_gettimeofday.
sim/riscv/
* sim-main.c: Include sys/time.h.
(execute_i): In MATCH_ECALL case, handle TARGET_sys_gettimeofday.
---
sim/riscv/sim-main.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/sim/riscv/sim-main.c b/sim/riscv/sim-main.c
index 7262ac1..f330ef9 100644
--- a/sim/riscv/sim-main.c
+++ b/sim/riscv/sim-main.c
@@ -26,6 +26,7 @@
#include <inttypes.h>
#include <time.h>
#include <unistd.h>
+#include <sys/time.h>
#include "sim-main.h"
#include "sim-fpu.h"
@@ -1752,6 +1753,32 @@ execute_i (SIM_CPU *cpu, unsigned_word iw, const struct riscv_opcode *op)
cpu->endbrk = cpu->a0;
break;
}
+ case TARGET_SYS_gettimeofday:
+ {
+ int rv;
+ struct timeval tv;
+
+ rv = gettimeofday (&tv, 0);
+ if (RISCV_XLEN (cpu) == 32)
+ {
+ sim_core_write_unaligned_4 (cpu, cpu->pc, write_map,
+ cpu->a0, tv.tv_sec);
+ sim_core_write_unaligned_4 (cpu, cpu->pc, write_map,
+ cpu->a0 + 4,
+ tv.tv_usec);
+ }
+ else
+ {
+ sim_core_write_unaligned_8 (cpu, cpu->pc, write_map,
+ cpu->a0, tv.tv_sec);
+ sim_core_write_unaligned_8 (cpu, cpu->pc, write_map,
+ cpu->a0 + 8,
+ tv.tv_usec);
+ }
+
+ cpu->a0 = rv;
+ break;
+ }
default:
cpu->a0 = sim_syscall (cpu, cpu->a7, cpu->a0,
cpu->a1, cpu->a2, cpu->a3);
--
2.7.4
More information about the Gdb-patches
mailing list