From cd09ab7c7463d05fe27e3dab4f97bb8aa6570413 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 26 Apr 2021 23:14:11 -0400 Subject: sim: microblaze: hook up libgloss syscalls When in the virtual environment, have brki 8 trigger libgloss syscalls like other ports. This also matches the ABI that Linux uses for its syscalls (ignoring the syscall table differences). --- sim/microblaze/ChangeLog | 5 +++++ sim/microblaze/interp.c | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) (limited to 'sim/microblaze') diff --git a/sim/microblaze/ChangeLog b/sim/microblaze/ChangeLog index 510cdde..8300491 100644 --- a/sim/microblaze/ChangeLog +++ b/sim/microblaze/ChangeLog @@ -1,5 +1,10 @@ 2021-05-04 Mike Frysinger + * interp.c: Include sim-syscall.h. + (sim_engine_run): Call sim_syscall for brki instructions. + +2021-05-04 Mike Frysinger + * configure: Regenerate. 2021-05-01 Mike Frysinger diff --git a/sim/microblaze/interp.c b/sim/microblaze/interp.c index 2bd067c..1292918 100644 --- a/sim/microblaze/interp.c +++ b/sim/microblaze/interp.c @@ -28,6 +28,7 @@ #include "sim-main.h" #include "sim-options.h" +#include "sim-syscall.h" #include "microblaze-dis.h" @@ -284,8 +285,18 @@ sim_engine_run (SIM_DESC sd, IMM_ENABLE = 0; } else - /* no delay slot: increment cycle count */ - bonus_cycles++; + { + if (op == brki && IMM == 8) + { + RETREG = sim_syscall (cpu, CPU.regs[12], CPU.regs[5], + CPU.regs[6], CPU.regs[7], + CPU.regs[8]); + PC = RD + INST_SIZE; + } + + /* no delay slot: increment cycle count */ + bonus_cycles++; + } } } -- cgit v1.1