mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
s390x/tcg: turn INTERRUPT_EXT into a mask
External interrupts are currently all handled like floating external interrupts, they are queued. Let's prepare for a split of floating and local interrupts by turning INTERRUPT_EXT into a mask. While we can have various floating external interrupts of one kind, there is usually only one (or a fixed number) of the local external interrupts. So turn INTERRUPT_EXT into a mask and properly indicate the kind of external interrupt. Floating interrupts will have to moved out of one CPU instance later once we have SMP support. The only floating external interrupts used right now are SERVICE interrupts, so let's use that name. Following patches will clean up SERVICE interrupt injection. This get's rid of the ugly special handling for cpu timer and clock comparator interrupts. And we really only store the parameters as defined by the PoP. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20170928203708.9376-2-david@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
This commit is contained in:
parent
9ea63c05d9
commit
6482b0ffd1
5 changed files with 61 additions and 47 deletions
|
@ -51,20 +51,12 @@
|
|||
#ifndef CONFIG_USER_ONLY
|
||||
void s390x_tod_timer(void *opaque)
|
||||
{
|
||||
S390CPU *cpu = opaque;
|
||||
CPUS390XState *env = &cpu->env;
|
||||
|
||||
env->pending_int |= INTERRUPT_TOD;
|
||||
cpu_interrupt(CPU(cpu), CPU_INTERRUPT_HARD);
|
||||
cpu_inject_clock_comparator((S390CPU *) opaque);
|
||||
}
|
||||
|
||||
void s390x_cpu_timer(void *opaque)
|
||||
{
|
||||
S390CPU *cpu = opaque;
|
||||
CPUS390XState *env = &cpu->env;
|
||||
|
||||
env->pending_int |= INTERRUPT_CPUTIMER;
|
||||
cpu_interrupt(CPU(cpu), CPU_INTERRUPT_HARD);
|
||||
cpu_inject_cpu_timer((S390CPU *) opaque);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue