qemu/target-s390x/interrupt.c
<<
>>
Prefs
   1/*
   2 * QEMU S/390 Interrupt support
   3 *
   4 * Copyright IBM, Corp. 2012
   5 *
   6 * This work is licensed under the terms of the GNU GPL, version 2 or (at your
   7 * option) any later version.  See the COPYING file in the top-level directory.
   8 */
   9
  10#include "cpu.h"
  11#include "kvm.h"
  12
  13#if !defined(CONFIG_USER_ONLY)
  14/* service interrupts are floating therefore we must not pass an cpustate */
  15void s390_sclp_extint(uint32_t parm)
  16{
  17    S390CPU *dummy_cpu = s390_cpu_addr2state(0);
  18    CPUS390XState *env = &dummy_cpu->env;
  19
  20    if (kvm_enabled()) {
  21#ifdef CONFIG_KVM
  22        kvm_s390_interrupt_internal(env, KVM_S390_INT_SERVICE, parm, 0, 1);
  23#endif
  24    } else {
  25        env->psw.addr += 4;
  26        cpu_inject_ext(env, EXT_SERVICE, parm, 0);
  27    }
  28}
  29#endif
  30