[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 12/23] i8259: Clear ELCR on reset
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] [PATCH v2 12/23] i8259: Clear ELCR on reset |
Date: |
Fri, 7 Oct 2011 09:19:45 +0200 |
The ELCR is actually part of the chipset but we model it here for
simplicity reasons. The PIIX3 clears the ELCR on reset, which was once
broken by 4dbe19e181. Fix this by splitting up pic_init_reset from
pic_reset and clearing the register in the latter.
Signed-off-by: Jan Kiszka <address@hidden>
---
hw/i8259.c | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/hw/i8259.c b/hw/i8259.c
index 3498c6b..d18fc62 100644
--- a/hw/i8259.c
+++ b/hw/i8259.c
@@ -263,10 +263,8 @@ int pic_read_irq(PicState2 *s)
return intno;
}
-static void pic_reset(void *opaque)
+static void pic_init_reset(PicState *s)
{
- PicState *s = opaque;
-
s->last_irr = 0;
s->irr = 0;
s->imr = 0;
@@ -286,6 +284,14 @@ static void pic_reset(void *opaque)
pic_update_irq(s->pics_state);
}
+static void pic_reset(void *opaque)
+{
+ PicState *s = opaque;
+
+ pic_init_reset(s);
+ s->elcr = 0;
+}
+
static void pic_ioport_write(void *opaque, target_phys_addr_t addr64,
uint64_t val64, unsigned size)
{
@@ -297,8 +303,7 @@ static void pic_ioport_write(void *opaque,
target_phys_addr_t addr64,
DPRINTF("write: addr=0x%02x val=0x%02x\n", addr, val);
if (addr == 0) {
if (val & 0x10) {
- /* init */
- pic_reset(s);
+ pic_init_reset(s);
s->init_state = 1;
s->init4 = val & 1;
s->single_mode = val & 2;
--
1.7.3.4
- [Qemu-devel] [PATCH v2 04/23] pc: Fix and clean up PIC-to-APIC IRQ path, (continued)
- [Qemu-devel] [PATCH v2 04/23] pc: Fix and clean up PIC-to-APIC IRQ path, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 08/23] i8239: Introduce per-PIC output interrupt, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 07/23] i8259: Move pic_set_irq1 after pic_update_irq, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 11/23] i8259: Update IRQ state after reset, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 10/23] i8259: Reorder intack in pic_read_irq, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 09/23] i8259: Do not update IRQ output after spurious pic_poll_read, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 13/23] i8259: Switch to per-PIC IRQ update, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 15/23] i8259: Clean up pic_ioport_read, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 14/23] i8259: Fix poll command, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 17/23] i8259: Replace PicState::pics_state with master flag, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 12/23] i8259: Clear ELCR on reset,
Jan Kiszka <=
- [Qemu-devel] [PATCH v2 02/23] pc: Generalize ISA IRQs to GSIs, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 19/23] qdev: Add HEX8 property, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 16/23] i8259: PREP: Replace pic_intack_read with pic_read_irq, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 21/23] i8259: Fix coding style, Jan Kiszka, 2011/10/07
- [Qemu-devel] [PATCH v2 22/23] monitor: Restrict pic/irq_info to supporting targets, Jan Kiszka, 2011/10/07