|
From: | Richard Henderson |
Subject: | Re: [Qemu-devel] [PATCH 1/5] target/s390x: Move program_interrupt() & trigger_pgm_exception() to interrupt.c |
Date: | Wed, 19 Jul 2017 08:05:26 -1000 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 |
On 07/19/2017 02:54 AM, Thomas Huth wrote:
+void program_interrupt(CPUS390XState *env, uint32_t code, int ilen) +{ + S390CPU *cpu = s390_env_get_cpu(env); + + qemu_log_mask(CPU_LOG_INT, "program interrupt at %#" PRIx64 "\n", + env->psw.addr); + + if (kvm_enabled()) { +#ifdef CONFIG_KVM + struct kvm_s390_irq irq = { + .type = KVM_S390_PROGRAM_INT, + .u.pgm.code = code, + }; + + kvm_s390_vcpu_interrupt(cpu, &irq); +#endif + } else { + trigger_pgm_exception(env, code, ilen); +#ifdef CONFIG_TCG + cpu_loop_exit(CPU(cpu)); +#endif + } +}
I would like to take the opportunity to split the kvm and tcg versions apart. Primarily because the tcg half is noreturn, and I keep having to add g_assert_not_reached after calling it to avoid other Werrors.
That might also help with the ifdeffing a little so you can write if (kvm_enabled()) { kvm_program_interrupt(...); } else if (tcg_enabled()) { tcg_program_interrupt(...); } else { g_assert_not_reached(); } r~
[Prev in Thread] | Current Thread | [Next in Thread] |