Skip to content

Commit

Permalink
target/arm: Tidy up disas_arm_insn()
Browse files Browse the repository at this point in the history
The only thing left in the "legacy decoder" is the handling
of disas_xscale_insn(), and we can simplify the code.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20200803111849.13368-5-peter.maydell@linaro.org
  • Loading branch information
pm215 committed Aug 24, 2020
1 parent cd8be50 commit 8198c07
Showing 1 changed file with 9 additions and 17 deletions.
26 changes: 9 additions & 17 deletions target/arm/translate.c
Expand Up @@ -8342,26 +8342,18 @@ static void disas_arm_insn(DisasContext *s, unsigned int insn)
return;
}
/* fall back to legacy decoder */

switch ((insn >> 24) & 0xf) {
case 0xc:
case 0xd:
case 0xe:
{
/* First check for coprocessor space used for XScale/iwMMXt insns */
int cpnum = (insn >> 8) & 0xf;

if (arm_dc_feature(s, ARM_FEATURE_XSCALE) && (cpnum < 2)) {
/* TODO: convert xscale/iwmmxt decoder to decodetree ?? */
if (arm_dc_feature(s, ARM_FEATURE_XSCALE)) {
if (((insn & 0x0c000e00) == 0x0c000000)
&& ((insn & 0x03000000) != 0x03000000)) {
/* Coprocessor insn, coprocessor 0 or 1 */
disas_xscale_insn(s, insn);
break;
return;
}
/* fall through */
}
default:
illegal_op:
unallocated_encoding(s);
break;
}

illegal_op:
unallocated_encoding(s);
}

static bool thumb_insn_is_16bit(DisasContext *s, uint32_t pc, uint32_t insn)
Expand Down

0 comments on commit 8198c07

Please sign in to comment.