Following patches aim to change ISA bus to a first-citizen class in Qemu. They add ISA bus ops, like for scsi and usb buses.
Current ISA bridges (PIIX3, PIIX4, EBUS and VT82C686) are converted to this new API, and a simple 'isabus-bridge' device is added. isa_address_space() operation can probably be used to remove the infamous isa_mem_base variable. However, some work is already done in this direction on the ML, so I didn't change anything. Finally, add bus argument to all ISA functions, so architectures with multiple ISA buses (like some Alpha systems) can be emulated. Patch 14 is a temporary patch, which should be reverted once i8259 is qdevifed. Patches have already been sent to ML for this [1]. It can also be dropped if Jan's series is merged. However, patches 1 to 13 can be applied immediately. I also was unable to reproduce the problem Anthony mentioned on [2], using TCG on a 32-bit host. Changes since v2: - rebased - add back spaces between function name and parenthesis on malc' request - split some patches in two for easier bisecting - add temporary workaround for non-qdevified i8259 Changes since v1: - add ISA bus argument to all ISA functions - remove default ISA bus concept as per Jan request [1] http://lists.gnu.org/archive/html/qemu-devel/2011-09/msg03504.html [2] http://lists.gnu.org/archive/html/qemu-devel/2011-09/msg03053.html Hervé Poussineau (16): isa: rename isa_bus_new to isa_bus_bridge_init isa: rework ISA bus internals, and add ISA bus ops structure isa: correctly implement isa_address_space(), by calling a bus-specific function audio: give ISA bus to sound cards, instead of PIC pc: improve bus implementation of PIIX3 bridge fulong2e: improve bus implementation of vt82c bridge sun4u: improve bus implementation of EBus bridge malta: improve bus implementation of PIIX4 bridge isa: remove unused parameter to isa_bus_bridge_init() isa: give bus to isa_create() and isa_try_create() methods isa: use bus given in parameter to create device on specified ISA bus isa: give bus to isa_get_irq() and isa_bus_irqs() isa: use bus given in parameter to get/set irqs on specified ISA bus i8259: add ad-hock variables to please future changes in isa_register_ioport() isa: remove useless test in isa_register_ioport() isa: remove limitation of only one ISA bus Makefile.objs | 2 +- arch_init.c | 10 ++-- arch_init.h | 2 +- hw/adlib.c | 2 +- hw/audiodev.h | 8 ++-- hw/cs4231a.c | 4 +- hw/fdc.h | 4 +- hw/gus.c | 4 +- hw/i8254.c | 2 +- hw/i8259.c | 29 +++++++++++++- hw/ide.h | 14 ++++-- hw/ide/isa.c | 4 +- hw/ide/piix.c | 30 +++++++++++---- hw/ide/via.c | 18 +++++++-- hw/isa-bridge.c | 92 ++++++++++++++++++++++++++++++++++++++++++++ hw/isa-bus.c | 108 +++++++++++++++++++++++---------------------------- hw/isa.h | 36 ++++++++++++++--- hw/m48t59.c | 5 +- hw/mc146818rtc.c | 4 +- hw/mc146818rtc.h | 2 +- hw/mips_fulong2e.c | 25 +++++------- hw/mips_jazz.c | 11 +++-- hw/mips_malta.c | 27 ++++++------- hw/mips_r4k.c | 19 +++++---- hw/nvram.h | 3 +- hw/pc.c | 34 ++++++++-------- hw/pc.h | 38 ++++++++++--------- hw/pc_piix.c | 27 +++++++------ hw/pcspk.c | 2 +- hw/piix4.c | 41 ++++++++++++++++++- hw/piix_pci.c | 45 +++++++++++++++++++-- hw/ppc_prep.c | 18 +++++---- hw/sb16.c | 4 +- hw/sun4u.c | 54 ++++++++++++++++++++------ hw/vt82c686.c | 33 ++++++++++++++- hw/vt82c686.h | 2 +- qemu-common.h | 1 + 37 files changed, 526 insertions(+), 238 deletions(-) create mode 100644 hw/isa-bridge.c -- 1.7.6.3