[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 7/7] target/arm: Remove ARCH macro
From: |
Peter Maydell |
Subject: |
[PATCH 7/7] target/arm: Remove ARCH macro |
Date: |
Mon, 3 Aug 2020 12:18:49 +0100 |
The ARCH() macro was used a lot in the legacy decoder, but
there are now just two uses of it left. Since a macro which
expands out to a goto is liable to be confusing when reading
code, replace the last two uses with a simple open-coded
qeuivalent.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
target/arm/translate.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/target/arm/translate.c b/target/arm/translate.c
index 59d6e43611a..37d4985d7e1 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -49,8 +49,6 @@
#define ENABLE_ARCH_7 arm_dc_feature(s, ARM_FEATURE_V7)
#define ENABLE_ARCH_8 arm_dc_feature(s, ARM_FEATURE_V8)
-#define ARCH(x) do { if (!ENABLE_ARCH_##x) goto illegal_op; } while(0)
-
#include "translate.h"
#if defined(CONFIG_USER_ONLY)
@@ -7909,7 +7907,7 @@ static bool trans_BLX_i(DisasContext *s, arg_BLX_i *a)
{
TCGv_i32 tmp;
- /* For A32, ARCH(5) is checked near the start of the uncond block. */
+ /* For A32, ARM_FEATURE_V5 is checked near the start of the uncond block.
*/
if (s->thumb && (a->imm & 2)) {
return false;
}
@@ -8275,7 +8273,10 @@ static void disas_arm_insn(DisasContext *s, unsigned int
insn)
* choose to UNDEF. In ARMv5 and above the space is used
* for miscellaneous unconditional instructions.
*/
- ARCH(5);
+ if (!arm_dc_feature(s, ARM_FEATURE_V5)) {
+ unallocated_encoding(s);
+ return;
+ }
/* Unconditional instructions. */
/* TODO: Perhaps merge these into one decodetree output file. */
@@ -8400,7 +8401,10 @@ static void disas_thumb2_insn(DisasContext *s, uint32_t
insn)
goto illegal_op;
}
} else if ((insn & 0xf800e800) != 0xf000e800) {
- ARCH(6T2);
+ if (!arm_dc_feature(s, ARM_FEATURE_THUMB2)) {
+ unallocated_encoding(s);
+ return;
+ }
}
if (arm_dc_feature(s, ARM_FEATURE_M)) {
--
2.20.1
- [PATCH 2/7] target/arm: Separate decode from handling of coproc insns, (continued)
- [PATCH 2/7] target/arm: Separate decode from handling of coproc insns, Peter Maydell, 2020/08/03
- [PATCH 3/7] target/arm: Convert A32 coprocessor insns to decodetree, Peter Maydell, 2020/08/03
- [PATCH 4/7] target/arm: Tidy up disas_arm_insn(), Peter Maydell, 2020/08/03
- [PATCH 5/7] target/arm: Do M-profile NOCP checks early and via decodetree, Peter Maydell, 2020/08/03
- [PATCH 6/7] target/arm: Convert T32 coprocessor insns to decodetree, Peter Maydell, 2020/08/03
- [PATCH 7/7] target/arm: Remove ARCH macro,
Peter Maydell <=