qemu-irix/target-arm
Peter Maydell a4bb522ee5 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.

Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 1431348973-21315-1-git-send-email-peter.maydell@linaro.org
(cherry picked from commit 3960c336ad)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2015-07-28 18:23:18 -05:00
..
Makefile.objs target-arm: add emulation of PSCI calls for system emulation 2014-10-24 12:19:13 +01:00
arm-semi.c Pass semihosting exit code back to system. 2014-12-11 12:07:48 +00:00
arm_ldst.h softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
cpu-qom.h target-arm: Add ARMCPU secure property 2014-12-22 23:12:28 +00:00
cpu.c target-arm: Add CPU property to disable AArch64 2015-02-13 05:46:08 +00:00
cpu.h cpu: Make cpu_init() return QOM CPUState object 2015-03-10 17:33:51 +01:00
cpu64.c target-arm: Add missing compatible property to A57 2015-03-11 13:21:06 +00:00
crypto_helper.c target-arm: crypto: fix BE host support 2015-01-16 11:54:29 +00:00
gdbstub.c cpu: Introduce CPUClass::gdb_{read,write}_register() 2013-07-27 00:04:17 +02:00
gdbstub64.c target-arm/gdbstub64.c: remove useless 'break' statement. 2014-04-17 21:34:06 +01:00
helper-a64.c target-arm: Store SPSR_EL1 state in banked_spsr[1] (SPSR_svc) 2015-04-01 17:57:29 +01:00
helper-a64.h target-arm: A64: Implement CRC instructions 2014-06-09 16:06:12 +01:00
helper.c target-arm: Store SPSR_EL1 state in banked_spsr[1] (SPSR_svc) 2015-04-01 17:57:29 +01:00
helper.h target-arm: A64: Emulate the SMC insn 2014-09-29 18:48:50 +01:00
internals.h target-arm: Store SPSR_EL1 state in banked_spsr[1] (SPSR_svc) 2015-04-01 17:57:29 +01:00
iwmmxt_helper.c target-arm: Delete unused iwmmxt_msadb helper 2014-06-09 16:06:12 +01:00
kvm-consts.h target-arm: add missing PSCI constants needed for PSCI emulation 2014-10-24 12:19:12 +01:00
kvm-stub.c target-arm: Initialize cpreg list from KVM when using KVM 2013-06-25 18:16:10 +01:00
kvm.c target-arm: kvm: save/restore mp state 2015-04-01 17:57:30 +01:00
kvm32.c target-arm: kvm: save/restore mp state 2015-04-01 17:57:30 +01:00
kvm64.c target-arm: kvm64 fix save/restore of SPSR regs 2015-04-01 17:57:30 +01:00
kvm_arm.h target-arm: kvm: save/restore mp state 2015-04-01 17:57:30 +01:00
machine.c vmstate: accept QEMUTimer in VMSTATE_TIMER*, add VMSTATE_TIMER_PTR* 2015-01-26 12:22:44 +01:00
neon_helper.c target-arm: add support for v8 VMULL.P64 instruction 2014-06-09 16:06:11 +01:00
op_addsub.h
op_helper.c target-arm: Add 32/64-bit register sync 2015-02-13 05:46:08 +00:00
psci.c target-arm: add emulation of PSCI calls for system emulation 2014-10-24 12:19:13 +01:00
translate-a64.c tcg: Change translator-side labels to a pointer 2015-03-13 12:28:18 -07:00
translate.c target-arm: Avoid buffer overrun on UNPREDICTABLE ldrd/strd 2015-07-28 18:23:18 -05:00
translate.h tcg: Change translator-side labels to a pointer 2015-03-13 12:28:18 -07:00