unicorn/qemu/target/arm
Peter Maydell 16c0c2d253
target/arm: Factor out code to calculate FSR for debug exceptions
When a debug exception is taken to AArch32, it appears as a Prefetch
Abort, and the Instruction Fault Status Register (IFSR) must be set.
The IFSR has two possible formats, depending on whether LPAE is in
use. Factor out the code in arm_debug_excp_handler() which picks
an FSR value into its own utility function, update it to use
arm_fi_to_lfsc() and arm_fi_to_sfsc() rather than hard-coded constants,
and use the correct condition to select long or short format.

In particular this fixes a bug where we could select the short
format because we're at EL0 and the EL1 translation regime is
not using LPAE, but then route the debug exception to EL2 because
of MDCR_EL2.TDE and hand EL2 the wrong format FSR.

Backports commit 81621d9ab8a0f07956e67850b15eebf6d6992eec from qemu
2018-03-25 16:35:27 -04: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 target/arm: Add "-cpu max" support 2018-03-12 10:11:49 -04:00
cpu.c cpu: Add Error argument to cpu_exec_init() 2018-03-21 07:50:33 -04:00
cpu.h cpu: get rid of unused cpu_init() defines 2018-03-20 14:21:45 -04:00
cpu64.c target/arm: Make 'any' CPU just an alias for 'max' 2018-03-12 10:11:49 -04:00
crypto_helper.c target/arm/cpu and crypto_helper: Correct bad merge and adjust to qemu code style 2018-03-12 11:57:24 -04:00
helper-a64.c target/arm/helper64: Correct bad merge 2018-03-12 11:37:27 -04:00
helper-a64.h arm/translate-a64: add FP16 FSQRT to simd_two_reg_misc_fp16 2018-03-08 21:57:35 -05:00
helper.c cpu: Generify CPU init functions 2018-03-20 08:21:51 -04:00
helper.h target/arm: Honour MDCR_EL2.TDE when routing exceptions due to BKPT/BRK 2018-03-25 16:33:04 -04:00
internals.h target/arm: Factor out code to calculate FSR for debug exceptions 2018-03-25 16:35:27 -04: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 target/arm: Decode aa64 armv8.1 scalar three same extra 2018-03-09 00:02:23 -05:00
neon_helper.c target/*/cpu.h: remove softfloat.h 2018-03-08 09:58:47 -05:00
op_addsub.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
op_helper.c target/arm: Factor out code to calculate FSR for debug exceptions 2018-03-25 16:35:27 -04:00
psci.c fix WFI/WFE length in syndrome register 2018-03-05 11:21:51 -05:00
translate-a64.c target/arm: Honour MDCR_EL2.TDE when routing exceptions due to BKPT/BRK 2018-03-25 16:33:04 -04:00
translate.c target/arm: Honour MDCR_EL2.TDE when routing exceptions due to BKPT/BRK 2018-03-25 16:33:04 -04:00
translate.h target/arm: Add SVE state to TB->FLAGS 2018-03-07 11:44:32 -05:00
unicorn.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
unicorn_aarch64.c unicorn/aarch64: Use qemu-provided helpers for accessing VFP/NEON/SIMD registers 2018-03-07 11:25:41 -05:00
unicorn_arm.c Use DEFINE_MACHINE() to register all machines 2018-03-11 15:12:46 -04:00
vec_helper.c translate/arm/vec_helper: Align to qemu formatting 2018-03-12 11:59:14 -04:00