unicorn/qemu/target-arm
Peter Maydell 4d0bdc61b6
target-arm: Use a single entry point for AArch64 and AArch32 exceptions
If EL2 or EL3 is present on an AArch64 CPU, then exceptions can be
taken to an exception level which is running AArch32 (if only EL0
and EL1 are present then EL1 must be AArch64 and all exceptions are
taken to AArch64). To support this we need to have a single
implementation of the CPU do_interrupt() method which can handle both
32 and 64 bit exception entry.

Pull the common parts of aarch64_cpu_do_interrupt() and
arm_cpu_do_interrupt() out into a new function which calls
either the AArch32 or AArch64 specific entry code once it has
worked out which one is needed.

We temporarily special-case the handling of EXCP_SEMIHOST to
avoid an assertion in arm_el_is_aa64(); the next patch will
pull all the semihosting handling out to the arm_cpu_do_interrupt()
level (since semihosting semantics depend on the register width
of the calling code, not on that of any higher EL).

Backports commit 966f758c49ff478c4757efa5970ce649161bff92 from qemu
2018-02-18 22:34:31 -05:00
..
arm_ldst.h import 2015-08-21 15:04:50 +08:00
cpu-qom.h target-arm: Use a single entry point for AArch64 and AArch32 exceptions 2018-02-18 22:34:31 -05:00
cpu.c target-arm: Implement cpu_get_phys_page_attrs_debug 2018-02-18 22:15:50 -05:00
cpu.h target-arm: Properly support EL2 and EL3 in arm_el_is_aa64() 2018-02-18 22:20:51 -05:00
cpu64.c target-arm: Use a single entry point for AArch64 and AArch32 exceptions 2018-02-18 22:34:31 -05:00
crypto_helper.c target-arm: Clean up includes 2018-02-17 21:09:32 -05:00
helper-a64.c target-arm: Move aarch64_cpu_do_interrupt() to helper.c 2018-02-18 22:23:06 -05:00
helper-a64.h import 2015-08-21 15:04:50 +08:00
helper.c target-arm: Use a single entry point for AArch64 and AArch32 exceptions 2018-02-18 22:34:31 -05:00
helper.h target-arm: Fix CPU breakpoint handling 2018-02-17 15:24:02 -05:00
internals.h target-arm: Use the right MMU index in arm_regime_using_lpae_format 2018-02-17 20:56:32 -05:00
iwmmxt_helper.c target-arm: Clean up includes 2018-02-17 21:09:32 -05: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 target-arm: Clean up includes 2018-02-17 21:09:32 -05:00
op_addsub.h import 2015-08-21 15:04:50 +08:00
op_helper.c target-arm: Clean up includes 2018-02-17 21:09:32 -05:00
psci.c import 2015-08-21 15:04:50 +08:00
translate-a64.c target-arm: Clean up includes 2018-02-17 21:09:32 -05:00
translate.c target-arm: Clean up includes 2018-02-17 21:09:32 -05:00
translate.h tcg: Remove gen_intermediate_code_pc 2018-02-17 15:23:59 -05:00
unicorn.h arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
unicorn_aarch64.c target-arm: rename c1_coproc to cpacr_el1 2018-02-12 20:46:00 -05:00
unicorn_arm.c target-arm: Add registers for PMSAv7 2018-02-17 15:22:43 -05:00