summaryrefslogtreecommitdiffstats
path: root/target/arm/translate-a64.c
diff options
context:
space:
mode:
authorRichard Henderson2019-03-01 21:04:53 +0100
committerPeter Maydell2019-03-05 16:55:07 +0100
commit9888bd1e20425dfe4dcca5dcd1ca2fac8e90ad19 (patch)
treef0cdc842e6f75974b15cb3b7cd33d0e10332970d /target/arm/translate-a64.c
parenttarget/arm: Split out arm_sctlr (diff)
downloadqemu-9888bd1e20425dfe4dcca5dcd1ca2fac8e90ad19.tar.gz
qemu-9888bd1e20425dfe4dcca5dcd1ca2fac8e90ad19.tar.xz
qemu-9888bd1e20425dfe4dcca5dcd1ca2fac8e90ad19.zip
target/arm: Implement ARMv8.0-SB
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20190301200501.16533-3-richard.henderson@linaro.org Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target/arm/translate-a64.c')
-rw-r--r--target/arm/translate-a64.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
index d3c8eaf089..4aa5a307e4 100644
--- a/target/arm/translate-a64.c
+++ b/target/arm/translate-a64.c
@@ -1637,7 +1637,21 @@ static void handle_sync(DisasContext *s, uint32_t insn,
reset_btype(s);
gen_goto_tb(s, 0, s->pc);
return;
+
+ case 7: /* SB */
+ if (crm != 0 || !dc_isar_feature(aa64_sb, s)) {
+ goto do_unallocated;
+ }
+ /*
+ * TODO: There is no speculation barrier opcode for TCG;
+ * MB and end the TB instead.
+ */
+ tcg_gen_mb(TCG_MO_ALL | TCG_BAR_SC);
+ gen_goto_tb(s, 0, s->pc);
+ return;
+
default:
+ do_unallocated:
unallocated_encoding(s);
return;
}