hw/intc/i8259: Make using the isa_pic singleton more type-safe

This even spares some casts in hot code paths along the way.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-Id: <20230109172347.1830-10-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
Bernhard Beschow 2023-01-09 18:23:22 +01:00 committed by Philippe Mathieu-Daudé
parent f0712099a2
commit 2aaf0ec7ff
3 changed files with 8 additions and 10 deletions

View File

@ -55,7 +55,7 @@ struct PICClass {
#ifdef DEBUG_IRQ_LATENCY #ifdef DEBUG_IRQ_LATENCY
static int64_t irq_time[16]; static int64_t irq_time[16];
#endif #endif
DeviceState *isa_pic; PICCommonState *isa_pic;
static PICCommonState *slave_pic; static PICCommonState *slave_pic;
/* return the highest priority found in mask (highest = smallest /* return the highest priority found in mask (highest = smallest
@ -173,9 +173,8 @@ static void pic_intack(PICCommonState *s, int irq)
pic_update_irq(s); pic_update_irq(s);
} }
int pic_read_irq(DeviceState *d) int pic_read_irq(PICCommonState *s)
{ {
PICCommonState *s = PIC_COMMON(d);
int irq, intno; int irq, intno;
irq = pic_get_irq(s); irq = pic_get_irq(s);
@ -354,10 +353,8 @@ static uint64_t pic_ioport_read(void *opaque, hwaddr addr,
return ret; return ret;
} }
int pic_get_output(DeviceState *d) int pic_get_output(PICCommonState *s)
{ {
PICCommonState *s = PIC_COMMON(d);
return (pic_get_irq(s) >= 0); return (pic_get_irq(s) >= 0);
} }
@ -426,7 +423,7 @@ qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq)
irq_set[i] = qdev_get_gpio_in(dev, i); irq_set[i] = qdev_get_gpio_in(dev, i);
} }
isa_pic = dev; isa_pic = PIC_COMMON(dev);
isadev = i8259_init_chip(TYPE_I8259, bus, false); isadev = i8259_init_chip(TYPE_I8259, bus, false);
dev = DEVICE(isadev); dev = DEVICE(isadev);

View File

@ -3,10 +3,10 @@
/* i8259.c */ /* i8259.c */
extern DeviceState *isa_pic; extern PICCommonState *isa_pic;
qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq); qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq);
qemu_irq *kvm_i8259_init(ISABus *bus); qemu_irq *kvm_i8259_init(ISABus *bus);
int pic_get_output(DeviceState *d); int pic_get_output(PICCommonState *s);
int pic_read_irq(DeviceState *d); int pic_read_irq(PICCommonState *s);
#endif #endif

View File

@ -99,6 +99,7 @@ typedef struct PCIExpressDevice PCIExpressDevice;
typedef struct PCIExpressHost PCIExpressHost; typedef struct PCIExpressHost PCIExpressHost;
typedef struct PCIHostDeviceAddress PCIHostDeviceAddress; typedef struct PCIHostDeviceAddress PCIHostDeviceAddress;
typedef struct PCIHostState PCIHostState; typedef struct PCIHostState PCIHostState;
typedef struct PICCommonState PICCommonState;
typedef struct PostcopyDiscardState PostcopyDiscardState; typedef struct PostcopyDiscardState PostcopyDiscardState;
typedef struct Property Property; typedef struct Property Property;
typedef struct PropertyInfo PropertyInfo; typedef struct PropertyInfo PropertyInfo;