root / target-s390x / interrupt.c @ 9c17d615
History | View | Annotate | Download (748 Bytes)
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 "sysemu/kvm.h" |
12 |
|
13 |
#if !defined(CONFIG_USER_ONLY)
|
14 |
/* service interrupts are floating therefore we must not pass an cpustate */
|
15 |
void 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
|