qemu/target/arm
Peter Maydell eeade00176 target/arm: Don't use cpsr_write/cpsr_read to transfer M profile XPSR
For M profile the XPSR is a similar but not identical format to the
A profile CPSR/SPSR. (For instance the Thumb bit is in a different
place.) For guest accesses we make the M profile code go through
xpsr_read() and xpsr_write() which handle the different layout.
However for migration we use cpsr_read() and cpsr_write() to
marshal state into and out of the migration data stream. This
is pretty confusing and works more by luck than anything else.
Make M profile migration use xpsr_read() and xpsr_write() instead.

The most complicated part of this is handling the possibility
that the migration source is an older QEMU which hands us a
CPSR format value; helpfully we can always tell the two apart.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 1501692241-23310-11-git-send-email-peter.maydell@linaro.org
2017-09-04 15:21:52 +01:00
..
arch_dump.c
arm_ldst.h Fix Thumb-1 BE32 execution and disassembly. 2017-02-07 18:29:59 +00:00
arm-powerctl.c target-arm/powerctl: defer cpu reset work to CPU context 2017-02-24 10:32:46 +00:00
arm-powerctl.h target-arm/powerctl: defer cpu reset work to CPU context 2017-02-24 10:32:46 +00:00
arm-semi.c
cpu64.c target-arm: Enable EL2 feature bit on A53 and A57 2017-01-20 11:15:10 +00:00
cpu-qom.h
cpu.c target/arm: Don't store M profile PRIMASK and FAULTMASK in daif 2017-09-04 15:21:52 +01:00
cpu.h target/arm: Don't store M profile PRIMASK and FAULTMASK in daif 2017-09-04 15:21:52 +01:00
crypto_helper.c
gdbstub64.c
gdbstub.c
helper-a64.c target-arm: Use clrsb helper 2017-01-10 08:47:48 -08:00
helper-a64.h target-arm: Use clrsb helper 2017-01-10 08:47:48 -08:00
helper.c target/arm: Don't store M profile PRIMASK and FAULTMASK in daif 2017-09-04 15:21:52 +01:00
helper.h target-arm: Use clz opcode 2017-01-10 08:06:11 -08:00
internals.h target/arm: Use MMUAccessType enum rather than int 2017-09-04 15:21:51 +01:00
iwmmxt_helper.c
kvm32.c
kvm64.c arm/kvm: Remove trailing newlines from error_report() 2017-04-20 17:39:17 +01:00
kvm_arm.h
kvm-consts.h arm: add trailing ; after MISMATCH_CHECK 2017-02-01 03:37:18 +02:00
kvm-stub.c
kvm.c ARM: KVM: Enable in-kernel timers with user space gic 2017-07-11 11:21:26 +01:00
machine.c target/arm: Don't use cpsr_write/cpsr_read to transfer M profile XPSR 2017-09-04 15:21:52 +01:00
Makefile.objs
monitor.c
neon_helper.c
op_addsub.h
op_helper.c target/arm: Don't trap WFI/WFE for M profile 2017-09-04 15:21:51 +01:00
psci.c shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
trace-events trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
translate-a64.c target/arm: Require alignment for load exclusive 2017-08-15 17:38:44 +01:00
translate.c target/arm: Tighten up Thumb decode where new v8M insns will be 2017-09-04 15:21:51 +01:00
translate.h tcg: Pass generic CPUState to gen_intermediate_code() 2017-07-19 14:45:16 -07:00