[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH qom-cpu 45/59] pc: Abstract pic_irq_request() with q
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PATCH qom-cpu 45/59] pc: Abstract pic_irq_request() with qemu_for_each_cpu() |
Date: |
Sun, 9 Jun 2013 21:13:12 +0200 |
Signed-off-by: Andreas Färber <address@hidden>
---
hw/i386/pc.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 71d9019..28c9c6e 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -183,18 +183,23 @@ int cpu_get_pic_interrupt(CPUX86State *env)
return intno;
}
+static void pic_irq_request_apic_one(CPUState *cs, void *data)
+{
+ int *level = data;
+ X86CPU *cpu = X86_CPU(cs);
+
+ if (apic_accept_pic_intr(cpu->env.apic_state)) {
+ apic_deliver_pic_intr(cpu->env.apic_state, *level);
+ }
+}
+
static void pic_irq_request(void *opaque, int irq, int level)
{
CPUX86State *env = first_cpu;
DPRINTF("pic_irqs: %s irq %d\n", level? "raise" : "lower", irq);
if (env->apic_state) {
- while (env) {
- if (apic_accept_pic_intr(env->apic_state)) {
- apic_deliver_pic_intr(env->apic_state, level);
- }
- env = env->next_cpu;
- }
+ qemu_for_each_cpu(pic_irq_request_apic_one, &level);
} else {
CPUState *cs = CPU(x86_env_get_cpu(env));
if (level) {
--
1.8.1.4
- [Qemu-devel] [PATCH qom-cpu 34/59] kvm: Change kvm_remove_all_breakpoints() argument to CPUState, (continued)
- [Qemu-devel] [PATCH qom-cpu 34/59] kvm: Change kvm_remove_all_breakpoints() argument to CPUState, Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 35/59] linux-user: Simplify start_exclusive(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 36/59] linux-user/elfload: Abstract fill_note_info() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 38/59] translate-all: Abstract tb_flush() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 37/59] target-i386: Abstract cpu_x86_inject_mce() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 39/59] translate-all: Abstract tb_phys_invalidate() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 40/59] target-ppc: Abstract helper_msgsnd() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 42/59] target-mips: Abstract helper_evpe() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 41/59] target-mips: Abstract helper_dvpe() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 43/59] kvmclock: Abstract kvmclock_vm_state_change() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 45/59] pc: Abstract pic_irq_request() with qemu_for_each_cpu(),
Andreas Färber <=
- [Qemu-devel] [PATCH qom-cpu 44/59] kvmvapic: Abstract vapic_enable_tpr_reporting() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 46/59] ppc: Abstract ppce500_set_mpic_proxy() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 48/59] cpus: Abstract all_cpu_threads_idle() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 47/59] spapr: Abstract spapr_fix_cpu_dt() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 49/59] cpus: Abstract all_vcpus_paused() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 50/59] cpus: Abstract qmp_query_cpus() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 51/59] exec: Abstract qemu_get_cpu() with qemu_for_each_cpu(), Andreas Färber, 2013/06/09