aboutsummaryrefslogtreecommitdiff
path: root/sim/d10v
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2021-11-28 00:20:31 -0500
committerMike Frysinger <vapier@gentoo.org>2021-11-28 13:23:58 -0500
commit0bf1633f0184327316422c476490f2d91ddf1c35 (patch)
tree4e43ea8f8cc3c96f133edcb8e81b692294522612 /sim/d10v
parentc44df9148d58a8152f43cdbe19d90fe19ba52f88 (diff)
downloadbinutils-0bf1633f0184327316422c476490f2d91ddf1c35.zip
binutils-0bf1633f0184327316422c476490f2d91ddf1c35.tar.gz
binutils-0bf1633f0184327316422c476490f2d91ddf1c35.tar.bz2
sim: d10v: switch to new target-newlib-syscall
Use the new target-newlib-syscall module. This is needed to merge all the architectures into a single build, and d10v has a custom syscall table for its newlib/libgloss port. This allows cleaning up the syscall ifdef logic. We know these will always exist now.
Diffstat (limited to 'sim/d10v')
-rw-r--r--sim/d10v/Makefile.in5
-rw-r--r--sim/d10v/interp.c3
-rw-r--r--sim/d10v/simops.c54
3 files changed, 26 insertions, 36 deletions
diff --git a/sim/d10v/Makefile.in b/sim/d10v/Makefile.in
index 51fb9eb..cba370e 100644
--- a/sim/d10v/Makefile.in
+++ b/sim/d10v/Makefile.in
@@ -27,10 +27,7 @@ SIM_OBJS = \
SIM_EXTRA_DEPS = simops.h
-INCLUDE = d10v_sim.h $(srcroot)/include/sim/callback.h targ-vals.h endian.c \
+INCLUDE = d10v_sim.h $(srcroot)/include/sim/callback.h endian.c \
$(srcroot)/include/gdb/sim-d10v.h
-# This selects the d10v newlib/libgloss syscall definitions.
-NL_TARGET = -DNL_TARGET_d10v
-
## COMMON_POST_CONFIG_FRAG
diff --git a/sim/d10v/interp.c b/sim/d10v/interp.c
index 33baea7..2a0cf6b 100644
--- a/sim/d10v/interp.c
+++ b/sim/d10v/interp.c
@@ -18,6 +18,8 @@
#include <stdlib.h>
#include <assert.h>
+#include "target-newlib-syscall.h"
+
enum _leftright { LEFT_FIRST, RIGHT_FIRST };
struct _state State;
@@ -758,6 +760,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *cb,
/* Set default options before parsing user options. */
current_alignment = STRICT_ALIGNMENT;
+ cb->syscall_map = cb_d10v_syscall_map;
/* The cpu data is kept in a separately allocated chunk of memory. */
if (sim_cpu_alloc_all (sd, 1) != SIM_RC_OK)
diff --git a/sim/d10v/simops.c b/sim/d10v/simops.c
index 64c888c..6e6bb02 100644
--- a/sim/d10v/simops.c
+++ b/sim/d10v/simops.c
@@ -13,7 +13,7 @@
#include "sim-main.h"
#include "sim-signal.h"
#include "simops.h"
-#include "targ-vals.h"
+#include "target-newlib-syscall.h"
#define EXCEPTION(sig) sim_engine_halt (sd, cpu, NULL, PC, sim_stopped, sig)
@@ -3207,20 +3207,20 @@ OP_5F00 (SIM_DESC sd, SIM_CPU *cpu)
switch (FUNC)
{
#if !defined(__GO32__) && !defined(_WIN32)
- case TARGET_SYS_fork:
+ case TARGET_NEWLIB_D10V_SYS_fork:
trace_input ("<fork>", OP_VOID, OP_VOID, OP_VOID);
RETVAL (fork ());
trace_output_16 (sd, result);
break;
#define getpid() 47
- case TARGET_SYS_getpid:
+ case TARGET_NEWLIB_D10V_SYS_getpid:
trace_input ("<getpid>", OP_VOID, OP_VOID, OP_VOID);
RETVAL (getpid ());
trace_output_16 (sd, result);
break;
- case TARGET_SYS_kill:
+ case TARGET_NEWLIB_D10V_SYS_kill:
trace_input ("<kill>", OP_R0, OP_R1, OP_VOID);
if (PARM1 == getpid ())
{
@@ -3348,22 +3348,20 @@ OP_5F00 (SIM_DESC sd, SIM_CPU *cpu)
}
break;
- case TARGET_SYS_execve:
+ case TARGET_NEWLIB_D10V_SYS_execve:
trace_input ("<execve>", OP_R0, OP_R1, OP_R2);
RETVAL (execve (MEMPTR (PARM1), (char **) MEMPTR (PARM2),
(char **)MEMPTR (PARM3)));
trace_output_16 (sd, result);
break;
-#ifdef TARGET_SYS_execv
- case TARGET_SYS_execv:
+ case TARGET_NEWLIB_D10V_SYS_execv:
trace_input ("<execv>", OP_R0, OP_R1, OP_VOID);
RETVAL (execve (MEMPTR (PARM1), (char **) MEMPTR (PARM2), NULL));
trace_output_16 (sd, result);
break;
-#endif
- case TARGET_SYS_pipe:
+ case TARGET_NEWLIB_D10V_SYS_pipe:
{
reg_t buf;
int host_fd[2];
@@ -3379,8 +3377,7 @@ OP_5F00 (SIM_DESC sd, SIM_CPU *cpu)
break;
#if 0
-#ifdef TARGET_SYS_wait
- case TARGET_SYS_wait:
+ case TARGET_NEWLIB_D10V_SYS_wait:
{
int status;
trace_input ("<wait>", OP_R0, OP_VOID, OP_VOID);
@@ -3391,28 +3388,27 @@ OP_5F00 (SIM_DESC sd, SIM_CPU *cpu)
}
break;
#endif
-#endif
#else
- case TARGET_SYS_getpid:
+ case TARGET_NEWLIB_D10V_SYS_getpid:
trace_input ("<getpid>", OP_VOID, OP_VOID, OP_VOID);
RETVAL (1);
trace_output_16 (sd, result);
break;
- case TARGET_SYS_kill:
+ case TARGET_NEWLIB_D10V_SYS_kill:
trace_input ("<kill>", OP_REG, OP_REG, OP_VOID);
trace_output_void (sd);
sim_engine_halt (sd, cpu, NULL, PC, sim_stopped, PARM2);
break;
#endif
- case TARGET_SYS_read:
+ case TARGET_NEWLIB_D10V_SYS_read:
trace_input ("<read>", OP_R0, OP_R1, OP_R2);
RETVAL (cb->read (cb, PARM1, MEMPTR (PARM2), PARM3));
trace_output_16 (sd, result);
break;
- case TARGET_SYS_write:
+ case TARGET_NEWLIB_D10V_SYS_write:
trace_input ("<write>", OP_R0, OP_R1, OP_R2);
if (PARM1 == 1)
RETVAL ((int)cb->write_stdout (cb, MEMPTR (PARM2), PARM3));
@@ -3421,7 +3417,7 @@ OP_5F00 (SIM_DESC sd, SIM_CPU *cpu)
trace_output_16 (sd, result);
break;
- case TARGET_SYS_lseek:
+ case TARGET_NEWLIB_D10V_SYS_lseek:
trace_input ("<lseek>", OP_R0, OP_R1, OP_R2);
RETVAL32 (cb->lseek (cb, PARM1,
((((unsigned long) PARM2) << 16)
@@ -3430,26 +3426,25 @@ OP_5F00 (SIM_DESC sd, SIM_CPU *cpu)
trace_output_32 (sd, result);
break;
- case TARGET_SYS_close:
+ case TARGET_NEWLIB_D10V_SYS_close:
trace_input ("<close>", OP_R0, OP_VOID, OP_VOID);
RETVAL (cb->close (cb, PARM1));
trace_output_16 (sd, result);
break;
- case TARGET_SYS_open:
+ case TARGET_NEWLIB_D10V_SYS_open:
trace_input ("<open>", OP_R0, OP_R1, OP_R2);
RETVAL (cb->open (cb, MEMPTR (PARM1), PARM2));
trace_output_16 (sd, result);
break;
- case TARGET_SYS_exit:
+ case TARGET_NEWLIB_D10V_SYS_exit:
trace_input ("<exit>", OP_R0, OP_VOID, OP_VOID);
trace_output_void (sd);
sim_engine_halt (sd, cpu, NULL, PC, sim_exited, GPR (0));
break;
-#ifdef TARGET_SYS_stat
- case TARGET_SYS_stat:
+ case TARGET_NEWLIB_D10V_SYS_stat:
trace_input ("<stat>", OP_R0, OP_R1, OP_VOID);
/* stat system call */
{
@@ -3477,23 +3472,21 @@ OP_5F00 (SIM_DESC sd, SIM_CPU *cpu)
}
trace_output_16 (sd, result);
break;
-#endif
- case TARGET_SYS_chown:
+ case TARGET_NEWLIB_D10V_SYS_chown:
trace_input ("<chown>", OP_R0, OP_R1, OP_R2);
RETVAL (chown (MEMPTR (PARM1), PARM2, PARM3));
trace_output_16 (sd, result);
break;
- case TARGET_SYS_chmod:
+ case TARGET_NEWLIB_D10V_SYS_chmod:
trace_input ("<chmod>", OP_R0, OP_R1, OP_R2);
RETVAL (chmod (MEMPTR (PARM1), PARM2));
trace_output_16 (sd, result);
break;
#if 0
-#ifdef TARGET_SYS_utime
- case TARGET_SYS_utime:
+ case TARGET_NEWLIB_D10V_SYS_utime:
trace_input ("<utime>", OP_R0, OP_R1, OP_R2);
/* Cast the second argument to void *, to avoid type mismatch
if a prototype is present. */
@@ -3501,18 +3494,15 @@ OP_5F00 (SIM_DESC sd, SIM_CPU *cpu)
trace_output_16 (sd, result);
break;
#endif
-#endif
#if 0
-#ifdef TARGET_SYS_time
- case TARGET_SYS_time:
+ case TARGET_NEWLIB_D10V_SYS_time:
trace_input ("<time>", OP_R0, OP_R1, OP_R2);
RETVAL32 (time (PARM1 ? MEMPTR (PARM1) : NULL));
trace_output_32 (sd, result);
break;
#endif
-#endif
-
+
default:
cb->error (cb, "Unknown syscall %d", FUNC);
}