target/arm/translate-a64: Don't underdecode system instructions

The "system instructions" and "system register move" subcategories
of "branches, exception generating and system instructions" for A64
only apply if bits [23:22] are zero; other values are currently
unallocated. Correctly UNDEF these unallocated encodings.

Backports commit 08d5e3bde6b4ad32996bf69d93aa66ae43d3f3ff from qemu
This commit is contained in:
Peter Maydell 2019-02-03 17:34:13 -05:00 committed by Lioncash
parent a0489c8849
commit 147269ed81
No known key found for this signature in database
GPG Key ID: 4E3C3CC1031BA9C7

View File

@ -2221,7 +2221,11 @@ static void disas_b_exc_sys(DisasContext *s, uint32_t insn)
break;
case 0x6a: /* Exception generation / System */
if (insn & (1 << 24)) {
disas_system(s, insn);
if (extract32(insn, 22, 2) == 0) {
disas_system(s, insn);
} else {
unallocated_encoding(s);
}
} else {
disas_exc(s, insn);
}