aboutsummaryrefslogtreecommitdiff
path: root/sim/microblaze
diff options
context:
space:
mode:
Diffstat (limited to 'sim/microblaze')
-rw-r--r--sim/microblaze/ChangeLog5
-rw-r--r--sim/microblaze/interp.c15
2 files changed, 18 insertions, 2 deletions
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 <vapier@gentoo.org>
+ * interp.c: Include sim-syscall.h.
+ (sim_engine_run): Call sim_syscall for brki instructions.
+
+2021-05-04 Mike Frysinger <vapier@gentoo.org>
+
* configure: Regenerate.
2021-05-01 Mike Frysinger <vapier@gentoo.org>
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++;
+ }
}
}