[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 54/68] target/arm: Convert T16 adjust sp (immedia
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v2 54/68] target/arm: Convert T16 adjust sp (immediate) |
Date: |
Mon, 19 Aug 2019 14:37:41 -0700 |
Signed-off-by: Richard Henderson <address@hidden>
---
target/arm/translate.c | 15 ++-------------
target/arm/t16.decode | 9 +++++++++
2 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/target/arm/translate.c b/target/arm/translate.c
index e639059a5a..cac3893386 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -10640,19 +10640,8 @@ static void disas_thumb_insn(DisasContext *s, uint32_t
insn)
/* misc */
op = (insn >> 8) & 0xf;
switch (op) {
- case 0:
- /*
- * 0b1011_0000_xxxx_xxxx
- * - ADD (SP plus immediate)
- * - SUB (SP minus immediate)
- */
- tmp = load_reg(s, 13);
- val = (insn & 0x7f) * 4;
- if (insn & (1 << 7))
- val = -(int32_t)val;
- tcg_gen_addi_i32(tmp, tmp, val);
- store_sp_checked(s, tmp);
- break;
+ case 0: /* add/sub (sp, immediate), in decodetree */
+ goto illegal_op;
case 2: /* sign/zero extend. */
ARCH(6);
diff --git a/target/arm/t16.decode b/target/arm/t16.decode
index 5a570484e3..b425b86795 100644
--- a/target/arm/t16.decode
+++ b/target/arm/t16.decode
@@ -156,6 +156,15 @@ ADD_rrri 0100 0100 . .... ... @addsub_2h
s=0
CMP_xrri 0100 0101 . .... ... @addsub_2h s=1
MOV_rxri 0100 0110 . .... ... @addsub_2h s=0
+# Adjust SP (immediate)
+
+%imm7_0x4 0:7 !function=times_4
+@addsub_sp_i .... .... . ....... \
+ &s_rri_rot s=0 rd=13 rn=13 rot=0 imm=%imm7_0x4
+
+ADD_rri 1011 0000 0 ....... @addsub_sp_i
+SUB_rri 1011 0000 1 ....... @addsub_sp_i
+
# Branch and exchange
@branchr .... .... . rm:4 ... &r
--
2.17.1
- [Qemu-devel] [PATCH v2 52/68] target/arm: Convert T16 branch and exchange, (continued)
- [Qemu-devel] [PATCH v2 52/68] target/arm: Convert T16 branch and exchange, Richard Henderson, 2019/08/19
- [Qemu-devel] [PATCH v2 49/68] target/arm: Convert T16 load/store multiple, Richard Henderson, 2019/08/19
- [Qemu-devel] [PATCH v2 47/68] target/arm: Convert T16 load/store (immediate offset), Richard Henderson, 2019/08/19
- [Qemu-devel] [PATCH v2 48/68] target/arm: Convert T16 add pc/sp (immediate), Richard Henderson, 2019/08/19
- [Qemu-devel] [PATCH v2 53/68] target/arm: Convert T16 add, compare, move (two high registers), Richard Henderson, 2019/08/19
- [Qemu-devel] [PATCH v2 54/68] target/arm: Convert T16 adjust sp (immediate),
Richard Henderson <=
- [Qemu-devel] [PATCH v2 55/68] target/arm: Convert T16, extract, Richard Henderson, 2019/08/19
- [Qemu-devel] [PATCH v2 58/68] target/arm: Convert T16, nop hints, Richard Henderson, 2019/08/19
- [Qemu-devel] [PATCH v2 50/68] target/arm: Convert T16 add/sub (3 low, 2 low and imm), Richard Henderson, 2019/08/19
- [Qemu-devel] [PATCH v2 56/68] target/arm: Convert T16, Change processor state, Richard Henderson, 2019/08/19
- [Qemu-devel] [PATCH v2 57/68] target/arm: Convert T16, Reverse bytes, Richard Henderson, 2019/08/19