[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC v13 35/80] target/arm: make further preparation for the exception c
From: |
Claudio Fontana |
Subject: |
[RFC v13 35/80] target/arm: make further preparation for the exception code to move |
Date: |
Wed, 14 Apr 2021 13:26:05 +0200 |
the exception code in tcg/ needs some adjustment before being exposed
to KVM-only builds. We need to call arm_rebuild_hflags only when
TCG is enabled, or we will error out.
The direct call to helper_rebuild_hflags_a64(env, new_el) will not
be possible when extracting out to common code,
it seems safe to replace it with a call to arm_rebuild_hflags, since
the write to pstate is already done.
Also, some CONFIG_TCG needs to be extended further, so that all
the tcg-only code is marked as such.
Signed-off-by: Claudio Fontana <cfontana@suse.de>
---
target/arm/tcg/helper.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/target/arm/tcg/helper.c b/target/arm/tcg/helper.c
index 2dbeb3a077..f2407f0af5 100644
--- a/target/arm/tcg/helper.c
+++ b/target/arm/tcg/helper.c
@@ -755,7 +755,9 @@ static void take_aarch32_exception(CPUARMState *env, int
new_mode,
env->regs[14] = env->regs[15] + offset;
}
env->regs[15] = newpc;
- arm_rebuild_hflags(env);
+ if (tcg_enabled()) {
+ arm_rebuild_hflags(env);
+ }
}
static void arm_cpu_do_interrupt_aarch32_hyp(CPUState *cs)
@@ -1242,7 +1244,11 @@ static void arm_cpu_do_interrupt_aarch64(CPUState *cs)
pstate_write(env, PSTATE_DAIF | new_mode);
env->aarch64 = 1;
aarch64_restore_sp(env, new_el);
- helper_rebuild_hflags_a64(env, new_el);
+
+ if (tcg_enabled()) {
+ /* pstate already written, so we can use arm_rebuild_hflags here */
+ arm_rebuild_hflags(env);
+ }
env->pc = addr;
@@ -1306,6 +1312,7 @@ void arm_cpu_do_interrupt(CPUState *cs)
env->exception.syndrome);
}
+#ifdef CONFIG_TCG
if (arm_is_psci_call(cpu, cs->exception_index)) {
arm_handle_psci_call(cpu);
qemu_log_mask(CPU_LOG_INT, "...handled as PSCI call\n");
@@ -1317,7 +1324,6 @@ void arm_cpu_do_interrupt(CPUState *cs)
* that caused the exception, not the target exception level, so
* must be handled here.
*/
-#ifdef CONFIG_TCG
if (cs->exception_index == EXCP_SEMIHOST) {
handle_semihosting(cs);
return;
--
2.26.2
- [RFC v13 24/80] target/arm: move arm_sctlr away from tcg helpers, (continued)
- [RFC v13 24/80] target/arm: move arm_sctlr away from tcg helpers, Claudio Fontana, 2021/04/14
- [RFC v13 28/80] target/arm: split 32bit and 64bit arm dump state, Claudio Fontana, 2021/04/14
- [RFC v13 33/80] target/arm: move fp_exception_el out of TCG helpers, Claudio Fontana, 2021/04/14
- [RFC v13 31/80] target/arm: move sve_exception_el out of TCG helpers, Claudio Fontana, 2021/04/14
- [RFC v13 36/80] target/arm: fix style of arm_cpu_do_interrupt functions before move, Claudio Fontana, 2021/04/14
- [RFC v13 42/80] target/arm: wrap call to aarch64_sve_change_el in tcg_enabled(), Claudio Fontana, 2021/04/14
- [RFC v13 40/80] target/arm: move TCGCPUOps to tcg/tcg-cpu.c, Claudio Fontana, 2021/04/14
- [RFC v13 39/80] target/arm: replace CONFIG_TCG with tcg_enabled, Claudio Fontana, 2021/04/14
- [RFC v13 44/80] target/arm: move kvm-const.h, kvm.c, kvm64.c, kvm_arm.h to kvm/, Claudio Fontana, 2021/04/14
- [RFC v13 26/80] target/arm: move aarch64_sync_32_to_64 (and vv) to cpu code, Claudio Fontana, 2021/04/14
- [RFC v13 35/80] target/arm: make further preparation for the exception code to move,
Claudio Fontana <=
- [RFC v13 43/80] target/arm: remove kvm include file for PSCI and arm-powerctl, Claudio Fontana, 2021/04/14
- [RFC v13 46/80] target/arm: cleanup cpu includes, Claudio Fontana, 2021/04/14
- [RFC v13 48/80] target/arm: remove kvm-stub.c, Claudio Fontana, 2021/04/14
- [RFC v13 30/80] target/arm: fixup sve_exception_el code style before move, Claudio Fontana, 2021/04/14
- [RFC v13 32/80] target/arm: fix comments style of fp_exception_el before moving it, Claudio Fontana, 2021/04/14
- [RFC v13 38/80] target/arm: rename handle_semihosting to tcg_handle_semihosting, Claudio Fontana, 2021/04/14
- [RFC v13 45/80] MAINTAINERS: update arm kvm maintained files to all in target/arm/kvm/, Claudio Fontana, 2021/04/14
- [RFC v13 37/80] target/arm: move exception code out of tcg/helper.c, Claudio Fontana, 2021/04/14
- [RFC v13 51/80] tests: do not run test-hmp on all machines for ARM KVM-only, Claudio Fontana, 2021/04/14
- [RFC v13 47/80] target/arm: remove broad "else" statements when checking accels, Claudio Fontana, 2021/04/14