From 9af706c919bc6bcc3b0838af0b750258c2351975 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 7 Jul 2021 02:05:06 -0400 Subject: [PATCH] sim: mn10300: resolve syscalls dynamically Avoid use of TARGET_ defines and rely on the callback layers to resolve these dynamically so we can support multiple syscall layers instead of assuming the newlib/libgloss numbers all the time. --- sim/mn10300/mn10300.igen | 2 +- sim/mn10300/mn10300_sim.h | 2 +- sim/mn10300/op_utils.c | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/sim/mn10300/mn10300.igen b/sim/mn10300/mn10300.igen index f67468da17e..9431c0b5179 100644 --- a/sim/mn10300/mn10300.igen +++ b/sim/mn10300/mn10300.igen @@ -3947,7 +3947,7 @@ { /* OP_F0C0 (); */ PC = cia; - do_syscall (); + do_syscall (SD); } diff --git a/sim/mn10300/mn10300_sim.h b/sim/mn10300/mn10300_sim.h index f3e43a7c69a..82306e667d2 100644 --- a/sim/mn10300/mn10300_sim.h +++ b/sim/mn10300/mn10300_sim.h @@ -200,7 +200,7 @@ INLINE_SIM_MAIN (void) genericCmp (unsigned32 leftOpnd, unsigned32 rightOpnd); INLINE_SIM_MAIN (void) genericOr (unsigned32 source, unsigned32 destReg); INLINE_SIM_MAIN (void) genericXor (unsigned32 source, unsigned32 destReg); INLINE_SIM_MAIN (void) genericBtst (unsigned32 leftOpnd, unsigned32 rightOpnd); -INLINE_SIM_MAIN (void) do_syscall (void); +INLINE_SIM_MAIN (void) do_syscall (SIM_DESC sd); void program_interrupt (SIM_DESC sd, sim_cpu *cpu, sim_cia cia, SIM_SIGNAL sig); void mn10300_cpu_exception_trigger(SIM_DESC sd, sim_cpu* cpu, address_word pc); diff --git a/sim/mn10300/op_utils.c b/sim/mn10300/op_utils.c index df95be3b1ac..eb4439f5f09 100644 --- a/sim/mn10300/op_utils.c +++ b/sim/mn10300/op_utils.c @@ -4,7 +4,6 @@ #include "sim-main.h" #include "sim-signal.h" #include "sim-syscall.h" -#include "targ-vals.h" #include #ifdef HAVE_UNISTD_H @@ -132,7 +131,7 @@ genericBtst(unsigned32 leftOpnd, unsigned32 rightOpnd) /* syscall */ INLINE_SIM_MAIN (void) -do_syscall (void) +do_syscall (SIM_DESC sd) { /* Registers passed to trap 0. */ @@ -150,7 +149,7 @@ do_syscall (void) int save_errno = errno; errno = 0; - if (func == TARGET_SYS_exit) + if (cb_target_to_host_syscall (STATE_CALLBACK (sd), func) == CB_SYS_exit) { /* EXIT - caller can look in parm1 to work out the reason */ sim_engine_halt (simulator, STATE_CPU (simulator, 0), NULL, PC,