]> Git Repo - qemu.git/commitdiff
target/arm: Convert T16, Unconditional branch
authorRichard Henderson <[email protected]>
Wed, 4 Sep 2019 19:30:56 +0000 (12:30 -0700)
committerPeter Maydell <[email protected]>
Thu, 5 Sep 2019 12:23:04 +0000 (13:23 +0100)
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Message-id: 20190904193059[email protected]
Signed-off-by: Peter Maydell <[email protected]>
target/arm/t16.decode
target/arm/translate.c

index 0b4da411e0f08f80d59e0f5041cf0f8a64c6612d..a4c89dba619eb7779660bda5efad12fa0d6a7e37 100644 (file)
@@ -266,3 +266,9 @@ LDM_t16         1011 110 ......... \
   SVC           1101 1111 imm:8                 &i
   B_cond_thumb  1101 cond:4 ........            &ci imm=%imm8_0x2
 }
+
+# Unconditional Branch
+
+%imm11_0x2      0:s11 !function=times_2
+
+B               11100 ...........               &i imm=%imm11_0x2
index 4f4c77fc893d123582397536b555a3d4df543868..3238ccbf1ec9a3528712f130895bfa54691d50f6 100644 (file)
@@ -10736,7 +10736,6 @@ static void disas_thumb2_insn(DisasContext *s, uint32_t insn)
 
 static void disas_thumb_insn(DisasContext *s, uint32_t insn)
 {
-    uint32_t val;
     int32_t offset;
     TCGv_i32 tmp;
     TCGv_i32 tmp2;
@@ -10780,12 +10779,8 @@ static void disas_thumb_insn(DisasContext *s, uint32_t insn)
             gen_bx(s, tmp);
             break;
         }
-        /* unconditional branch */
-        val = read_pc(s);
-        offset = ((int32_t)insn << 21) >> 21;
-        val += offset << 1;
-        gen_jmp(s, val);
-        break;
+        /* unconditional branch, in decodetree */
+        goto illegal_op;
 
     case 15:
         /* thumb_insn_is_16bit() ensures we can't get here for
This page took 0.048624 seconds and 4 git commands to generate.