i386: fix isapc machine
authoraurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162>
Tue, 19 Aug 2008 12:55:20 +0000 (12:55 +0000)
committeraurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162>
Tue, 19 Aug 2008 12:55:20 +0000 (12:55 +0000)
- cirrus vga: enable graphic console
- pc: don't use apic for interrupts on ISA machine

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5026 c046a42c-6fe2-441c-8c8c-71466251a162

hw/cirrus_vga.c
hw/pc.c

index 2d0f66a..8e223e2 100644 (file)
@@ -3228,6 +3228,8 @@ void isa_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base,
     vga_common_init((VGAState *)s,
                     ds, vga_ram_base, vga_ram_offset, vga_ram_size);
     cirrus_init_common(s, CIRRUS_ID_CLGD5430, 0);
+    s->console = graphic_console_init(s->ds, s->update, s->invalidate,
+                                      s->screen_dump, s->text_update, s);
     /* XXX ISA-LFB support */
 }
 
diff --git a/hw/pc.c b/hw/pc.c
index 7461a08..f20944a 100644 (file)
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -121,10 +121,14 @@ static void pic_irq_request(void *opaque, int irq, int level)
     if (!level)
         return;
 
-    while (env) {
-        if (apic_accept_pic_intr(env))
-            apic_local_deliver(env, APIC_LINT0);
-        env = env->next_cpu;
+    if (env->apic_state) {
+        while (env) {
+            if (apic_accept_pic_intr(env))
+                apic_local_deliver(env, APIC_LINT0);
+            env = env->next_cpu;
+        }
+    } else {
+        cpu_interrupt(env, CPU_INTERRUPT_HARD);
     }
 }