unicorn/qemu/target/arm
Peter Maydell 8036c5b3de
target/arm: Don't switch to target stack early in v7M exception return
Currently our M profile exception return code switches to the
target stack pointer relatively early in the process, before
it tries to pop the exception frame off the stack. This is
awkward for v8M for two reasons:
* in v8M the process vs main stack pointer is not selected
purely by the value of CONTROL.SPSEL, so updating SPSEL
and relying on that to switch to the right stack pointer
won't work
* the stack we should be reading the stack frame from and
the stack we will eventually switch to might not be the
same if the guest is doing strange things

Change our exception return code to use a 'frame pointer'
to read the exception frame rather than assuming that we
can switch the live stack pointer this early.

Backports commit 5b5223997c04b769bb362767cecb5f7ec382c5f0 from qemu
2018-03-05 01:26:05 -05:00
..
arm-powerctl.c ARM: Factor out ARM on/off PSCI control functions 2018-03-01 23:31:47 -05:00
arm-powerctl.h ARM: Factor out ARM on/off PSCI control functions 2018-03-01 23:31:47 -05:00
arm_ldst.h Fix Thumb-1 BE32 execution and disassembly. 2018-03-02 00:20:11 -05:00
cpu-qom.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
cpu.c target/arm: Clear exclusive monitor on v7M reset, exception entry/exit 2018-03-04 23:08:31 -05:00
cpu.h target/arm: Handle banking in negative-execution-priority check in cpu_mmu_index() 2018-03-05 00:54:28 -05:00
cpu64.c target-arm: Enable EL2 feature bit on A53 and A57 2018-03-01 23:36:44 -05:00
crypto_helper.c Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
helper-a64.c Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
helper-a64.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
helper.c target/arm: Don't switch to target stack early in v7M exception return 2018-03-05 01:26:05 -05:00
helper.h target/arm: Implement BXNS, and banked stack pointers 2018-03-04 21:21:23 -05:00
internals.h target/arm: Add and use defines for EXCRET constants 2018-03-04 23:12:37 -05:00
iwmmxt_helper.c Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
kvm-consts.h arm: better stub version for MISMATCH_CHECK 2018-03-02 00:13:45 -05:00
Makefile.objs ARM: Factor out ARM on/off PSCI control functions 2018-03-01 23:31:47 -05:00
neon_helper.c Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
op_addsub.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
op_helper.c arm: Fix SMC reporting to EL2 when QEMU provides PSCI 2018-03-05 01:19:22 -05:00
psci.c target/arm/psci.c: If EL2 implemented, start CPUs in EL2 2018-03-01 23:34:57 -05:00
translate-a64.c target/arm: Remove out of date ARM ARM section references in A64 decoder 2018-03-05 01:05:53 -05:00
translate.c target/arm: Implement BXNS, and banked stack pointers 2018-03-04 21:21:23 -05:00
translate.h target/arm: Implement BXNS, and banked stack pointers 2018-03-04 21:21:23 -05:00
unicorn.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
unicorn_aarch64.c Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
unicorn_arm.c Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00