target/microblaze: mbar: Add support for data-access barriers
authorEdgar E. Iglesias <edgar.iglesias@xilinx.com>
Thu, 13 Aug 2020 15:41:33 +0000 (17:41 +0200)
committerEdgar E. Iglesias <edgar.iglesias@xilinx.com>
Mon, 24 Aug 2020 08:47:27 +0000 (10:47 +0200)
Add support for data-access barriers.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
target/microblaze/translate.c

index c1be76d4c8408af4ff61b7d052d59476d4d2ecd2..c58f334a0f204c2c5eef480e6da8e313ed74ac5d 100644 (file)
@@ -1233,6 +1233,11 @@ static void dec_br(DisasContext *dc)
 
         LOG_DIS("mbar %d\n", mbar_imm);
 
+        /* Data access memory barrier.  */
+        if ((mbar_imm & 2) == 0) {
+            tcg_gen_mb(TCG_BAR_SC | TCG_MO_ALL);
+        }
+
         /* mbar IMM & 16 decodes to sleep.  */
         if (mbar_imm & 16) {
             TCGv_i32 tmp_hlt = tcg_const_i32(EXCP_HLT);