sim: mn10300: resolve syscalls dynamically

Avoid use of TARGET_<syscall> 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.
This commit is contained in:
Mike Frysinger 2021-07-07 02:05:06 -04:00
parent d485f8c7c2
commit 9af706c919
3 changed files with 4 additions and 5 deletions

View File

@ -3947,7 +3947,7 @@
{
/* OP_F0C0 (); */
PC = cia;
do_syscall ();
do_syscall (SD);
}

View File

@ -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);

View File

@ -4,7 +4,6 @@
#include "sim-main.h"
#include "sim-signal.h"
#include "sim-syscall.h"
#include "targ-vals.h"
#include <time.h>
#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,