unicorn/qemu/target-arm
Peter Maydell db9901f2ad
target-arm: Avoid buffer overrun on UNPREDICTABLE ldrd/strd
A LDRD or STRD where rd is not an even number is UNPREDICTABLE.
We were letting this fall through, which is OK unless rd is 15,
in which case we would attempt to do a load_reg or store_reg
to a nonexistent r16 for the second half of the double-word.
Catch the odd-numbered-rd cases and UNDEF them instead.

To do this we rearrange the structure of the code a little
so we can put the UNDEF catches at the top before we've
allocated TCG temporaries.

Backports commit a4bb522ee51087af61998f290d12ba2e14c7910e from qemu
2018-02-12 17:17:23 -05:00
..
arm_ldst.h import 2015-08-21 15:04:50 +08:00
cpu64.c target-arm: Add CPU property to disable AArch64 2018-02-12 13:56:44 -05:00
cpu-qom.h target-arm: Add ARMCPU secure property 2018-02-12 10:40:52 -05:00
cpu.c target-arm: Add CPU property to disable AArch64 2018-02-12 13:56:44 -05:00
cpu.h target-arm: Add 32/64-bit register sync 2018-02-12 14:57:20 -05:00
crypto_helper.c target-arm: crypto: fix BE host support 2018-02-12 10:40:52 -05:00
helper-a64.c target-arm: Store SPSR_EL1 state in banked_spsr[1] (SPSR_svc) 2018-02-12 16:36:44 -05:00
helper-a64.h import 2015-08-21 15:04:50 +08:00
helper.c target-arm: Store SPSR_EL1 state in banked_spsr[1] (SPSR_svc) 2018-02-12 16:36:44 -05:00
helper.h rework code/block tracing 2016-01-22 19:07:50 -08:00
internals.h target-arm: Store SPSR_EL1 state in banked_spsr[1] (SPSR_svc) 2018-02-12 16:36:44 -05:00
iwmmxt_helper.c import 2015-08-21 15:04:50 +08:00
kvm-consts.h import 2015-08-21 15:04:50 +08:00
Makefile.objs delete sparc32_dma.h & arm-semi.c 2017-01-19 15:10:41 +08:00
neon_helper.c Arm support ported. (#736) 2017-01-23 23:30:57 +08:00
op_addsub.h import 2015-08-21 15:04:50 +08:00
op_helper.c target-arm: Add 32/64-bit register sync 2018-02-12 14:57:20 -05:00
psci.c import 2015-08-21 15:04:50 +08:00
translate-a64.c target-arm: A64: Avoid signed shifts in disas_ldst_pair() 2018-02-12 15:05:09 -05:00
translate.c target-arm: Avoid buffer overrun on UNPREDICTABLE ldrd/strd 2018-02-12 17:17:23 -05:00
translate.h target-arm: Define correct mmu_idx values and pass them in TB flags 2018-02-12 11:21:19 -05:00
unicorn_aarch64.c target-arm: make c13 cp regs banked (FCSEIDR, ...) 2018-02-12 10:40:51 -05:00
unicorn_arm.c fix conflicts 2017-03-30 12:23:24 +08:00
unicorn.h arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00