Patchwork [10/19] hw: move some header files to include/

login
register
mail settings
Submitter Paolo Bonzini
Date Feb. 4, 2013, 5:29 p.m.
Message ID <1359999004-22982-11-git-send-email-pbonzini@redhat.com>
Download mbox | patch
Permalink /patch/218009/
State New
Headers show

Comments

Paolo Bonzini - Feb. 4, 2013, 5:29 p.m.
These will be used from multiple subdirectories.  Move them where
they can be found.

Files that are only used in a single subdirectory remain in hw/
for now.  I'll move them later.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 arch_init.c                                        |    6 ++--
 blockdev-nbd.c                                     |    1 -
 blockdev.c                                         |    2 +-
 exec.c                                             |    2 +-
 gdbstub.c                                          |    2 +-
 hw/9pfs/virtio-9p-device.c                         |    4 +-
 hw/9pfs/virtio-9p-handle.c                         |    2 +-
 hw/9pfs/virtio-9p-local.c                          |    2 +-
 hw/9pfs/virtio-9p-posix-acl.c                      |    2 +-
 hw/9pfs/virtio-9p-proxy.c                          |    2 +-
 hw/9pfs/virtio-9p-synth.c                          |    2 +-
 hw/9pfs/virtio-9p-xattr-user.c                     |    2 +-
 hw/9pfs/virtio-9p-xattr.c                          |    2 +-
 hw/9pfs/virtio-9p.c                                |    2 +-
 hw/9pfs/virtio-9p.h                                |    2 +-
 hw/ac97.c                                          |    2 +-
 hw/acpi.c                                          |    2 +-
 hw/acpi_ich9.c                                     |    4 +-
 hw/acpi_piix4.c                                    |    8 +++---
 hw/adlib.c                                         |    4 +-
 hw/alpha_dp264.c                                   |    8 +++---
 hw/alpha_pci.c                                     |    2 +-
 hw/alpha_typhoon.c                                 |    4 +-
 hw/an5206.c                                        |    2 +-
 hw/apb_pci.c                                       |    2 +-
 hw/apic.c                                          |    8 +++---
 hw/apic_common.c                                   |    4 +-
 hw/apm.c                                           |    2 +-
 hw/applesmc.c                                      |    2 +-
 hw/arm_boot.c                                      |    2 +-
 hw/arm_pic.c                                       |    2 +-
 hw/armv7m.c                                        |    2 +-
 hw/armv7m_nvic.c                                   |    2 +-
 hw/axis_dev88.c                                    |    4 +-
 hw/bitbang_i2c.h                                   |    2 +-
 hw/blizzard.c                                      |    2 +-
 hw/block-common.c                                  |    2 +-
 hw/bonito.c                                        |    2 +-
 hw/bt-hid.c                                        |    2 +-
 hw/cbus.c                                          |    2 +-
 hw/cdrom.c                                         |    2 +-
 hw/collie.c                                        |    6 ++--
 hw/cris_pic_cpu.c                                  |    2 +-
 hw/cs4231a.c                                       |    4 +-
 hw/dataplane/virtio-blk.c                          |    2 +-
 hw/dataplane/virtio-blk.h                          |    2 +-
 hw/dataplane/vring.h                               |    2 +-
 hw/debugcon.c                                      |    2 +-
 hw/debugexit.c                                     |    2 +-
 hw/dma.c                                           |    2 +-
 hw/dp8393x.c                                       |    2 +-
 hw/ds1338.c                                        |    2 +-
 hw/ecc.c                                           |    2 +-
 hw/eepro100.c                                      |    2 +-
 hw/eeprom93xx.c                                    |    2 +-
 hw/es1370.c                                        |    2 +-
 hw/escc.c                                          |    2 +-
 hw/esp-pci.c                                       |    4 +-
 hw/esp.c                                           |    2 +-
 hw/etraxfs_dma.c                                   |    2 +-
 hw/etraxfs_eth.c                                   |    2 +-
 hw/exynos4210.c                                    |    4 +-
 hw/exynos4210_combiner.c                           |    2 +-
 hw/exynos4210_gic.c                                |    2 +-
 hw/exynos4210_i2c.c                                |    2 +-
 hw/exynos4210_mct.c                                |    2 +-
 hw/exynos4210_pwm.c                                |    2 +-
 hw/exynos4210_rtc.c                                |    2 +-
 hw/exynos4210_uart.c                               |    2 +-
 hw/exynos4_boards.c                                |    4 +-
 hw/fdc.c                                           |    4 +-
 hw/fw_cfg.c                                        |    4 +-
 hw/gt64xxx.c                                       |    2 +-
 hw/gumstix.c                                       |    6 ++--
 hw/gus.c                                           |    4 +-
 hw/hd-geometry.c                                   |    2 +-
 hw/hid.c                                           |    2 +-
 hw/highbank.c                                      |    4 +-
 hw/hpet.c                                          |    6 ++--
 hw/i2c.c                                           |    2 +-
 hw/i82374.c                                        |    2 +-
 hw/i82378.c                                        |    4 +-
 hw/i8254.c                                         |    6 ++--
 hw/i8254_common.c                                  |    6 ++--
 hw/i8259.c                                         |    4 +-
 hw/i8259_common.c                                  |    2 +-
 hw/i82801b11.c                                     |    2 +-
 hw/ide/atapi.c                                     |    2 +-
 hw/ide/cmd646.c                                    |    2 +-
 hw/ide/core.c                                      |    4 +-
 hw/ide/ich.c                                       |    2 +-
 hw/ide/internal.h                                  |    6 ++--
 hw/ide/isa.c                                       |    2 +-
 hw/ide/macio.c                                     |    2 +-
 hw/ide/microdrive.c                                |    2 +-
 hw/ide/pci.c                                       |    2 +-
 hw/ide/piix.c                                      |    2 +-
 hw/ide/qdev.c                                      |    2 +-
 hw/ide/via.c                                       |    2 +-
 hw/imx_ccm.c                                       |    2 +-
 hw/imx_serial.c                                    |    2 +-
 hw/imx_timer.c                                     |    2 +-
 hw/integratorcp.c                                  |    4 +-
 hw/intel-hda.c                                     |    2 +-
 hw/ioapic.c                                        |    6 ++--
 hw/ioapic_common.c                                 |    4 +-
 hw/isa-bus.c                                       |    2 +-
 hw/isa_mmio.c                                      |    2 +-
 hw/kvm/apic.c                                      |    2 +-
 hw/kvm/i8254.c                                     |    4 +-
 hw/kvm/i8259.c                                     |    4 +-
 hw/kvm/ioapic.c                                    |    4 +-
 hw/kvmvapic.c                                      |    2 +-
 hw/kzm.c                                           |    8 +++---
 hw/lan9118.c                                       |    2 +-
 hw/lance.c                                         |    2 +-
 hw/lm32_boards.c                                   |    4 +-
 hw/lm32_juart.c                                    |    2 +-
 hw/lm32_pic.c                                      |    2 +-
 hw/lm832x.c                                        |    2 +-
 hw/loader.c                                        |    2 +-
 hw/lpc_ich9.c                                      |   14 ++++++------
 hw/lsi53c895a.c                                    |    2 +-
 hw/m25p80.c                                        |    2 +-
 hw/m48t59.c                                        |    4 +-
 hw/mac_dbdma.c                                     |    4 +-
 hw/mac_nvram.c                                     |    2 +-
 hw/macio.c                                         |    4 +-
 hw/mainstone.c                                     |    8 +++---
 hw/marvell_88w8618_audio.c                         |    2 +-
 hw/max7310.c                                       |    2 +-
 hw/mc146818rtc.c                                   |    4 +-
 hw/mcf5206.c                                       |    2 +-
 hw/mcf5208.c                                       |    2 +-
 hw/mcf_fec.c                                       |    2 +-
 hw/mcf_intc.c                                      |    2 +-
 hw/mcf_uart.c                                      |    2 +-
 hw/megasas.c                                       |    4 +-
 hw/milkymist-softusb.c                             |    2 +-
 hw/milkymist.c                                     |    4 +-
 hw/mips_addr.c                                     |    2 +-
 hw/mips_fulong2e.c                                 |   20 +++++++++---------
 hw/mips_int.c                                      |    2 +-
 hw/mips_jazz.c                                     |   20 +++++++++---------
 hw/mips_malta.c                                    |   18 ++++++++--------
 hw/mips_mipssim.c                                  |   10 ++++----
 hw/mips_r4k.c                                      |   16 +++++++-------
 hw/mips_timer.c                                    |    2 +-
 hw/multiboot.c                                     |    2 +-
 hw/musicpal.c                                      |   10 ++++----
 hw/nand.c                                          |    2 +-
 hw/ne2000-isa.c                                    |    2 +-
 hw/nseries.c                                       |   10 ++++----
 hw/omap1.c                                         |    4 +-
 hw/omap2.c                                         |    6 ++--
 hw/omap_clk.c                                      |    2 +-
 hw/omap_dma.c                                      |    2 +-
 hw/omap_dss.c                                      |    2 +-
 hw/omap_gpio.c                                     |    2 +-
 hw/omap_gpmc.c                                     |    4 +-
 hw/omap_gptimer.c                                  |    2 +-
 hw/omap_i2c.c                                      |    4 +-
 hw/omap_intc.c                                     |    2 +-
 hw/omap_l4.c                                       |    2 +-
 hw/omap_lcdc.c                                     |    2 +-
 hw/omap_mmc.c                                      |    2 +-
 hw/omap_sdrc.c                                     |    2 +-
 hw/omap_spi.c                                      |    2 +-
 hw/omap_sx1.c                                      |    6 ++--
 hw/omap_synctimer.c                                |    2 +-
 hw/omap_tap.c                                      |    2 +-
 hw/omap_uart.c                                     |    4 +-
 hw/onenand.c                                       |    2 +-
 hw/openpic.c                                       |    2 +-
 hw/openrisc_sim.c                                  |    2 +-
 hw/palm.c                                          |    6 ++--
 hw/pam.c                                           |    2 +-
 hw/parallel.c                                      |    2 +-
 hw/pc-testdev.c                                    |    2 +-
 hw/pc.c                                            |   22 ++++++++++----------
 hw/pc87312.c                                       |    2 +-
 hw/pc_piix.c                                       |    6 ++--
 hw/pc_q35.c                                        |   10 ++++----
 hw/pc_sysfw.c                                      |    2 +-
 hw/pci/pci-hotplug.c                               |    4 +-
 hw/pci/pci.h                                       |    2 +-
 hw/pckbd.c                                         |    4 +-
 hw/pcspk.c                                         |    6 ++--
 hw/petalogix_ml605_mmu.c                           |    6 ++--
 hw/petalogix_s3adsp1800_mmu.c                      |    4 +-
 hw/pflash_cfi01.c                                  |    2 +-
 hw/pflash_cfi02.c                                  |    2 +-
 hw/piix4.c                                         |    2 +-
 hw/piix_pci.c                                      |    6 ++--
 hw/pl050.c                                         |    2 +-
 hw/pm_smbus.c                                      |    4 +-
 hw/ppc.c                                           |    4 +-
 hw/ppc/e500.c                                      |    4 +-
 hw/ppc/mac_newworld.c                              |   10 ++++----
 hw/ppc/mac_oldworld.c                              |   10 ++++----
 hw/ppc/prep.c                                      |   14 ++++++------
 hw/ppc405.h                                        |    2 +-
 hw/ppc405_boards.c                                 |    6 ++--
 hw/ppc405_uc.c                                     |    4 +-
 hw/ppc440_bamboo.c                                 |    4 +-
 hw/ppc4xx_devs.c                                   |    4 +-
 hw/ppc4xx_pci.c                                    |    4 +-
 hw/ppc_booke.c                                     |    4 +-
 hw/ps2.c                                           |    2 +-
 hw/puv3.c                                          |    2 +-
 hw/puv3_dma.c                                      |    2 +-
 hw/puv3_gpio.c                                     |    2 +-
 hw/puv3_intc.c                                     |    2 +-
 hw/puv3_ost.c                                      |    2 +-
 hw/puv3_pm.c                                       |    2 +-
 hw/pxa2xx.c                                        |    6 ++--
 hw/pxa2xx_dma.c                                    |    2 +-
 hw/pxa2xx_gpio.c                                   |    2 +-
 hw/pxa2xx_keypad.c                                 |    2 +-
 hw/pxa2xx_lcd.c                                    |    2 +-
 hw/pxa2xx_mmci.c                                   |    2 +-
 hw/pxa2xx_pcmcia.c                                 |    4 +-
 hw/pxa2xx_pic.c                                    |    2 +-
 hw/pxa2xx_timer.c                                  |    2 +-
 hw/q35.c                                           |    2 +-
 hw/qdev-properties-system.c                        |    2 +-
 hw/qdev-properties.c                               |    2 +-
 hw/r2d.c                                           |    6 ++--
 hw/rc4030.c                                        |    2 +-
 hw/realview.c                                      |    6 ++--
 hw/s390x/s390-virtio-bus.c                         |   10 ++++----
 hw/s390x/s390-virtio-bus.h                         |   12 +++++-----
 hw/s390x/s390-virtio.c                             |    2 +-
 hw/s390x/virtio-ccw.c                              |    8 +++---
 hw/s390x/virtio-ccw.h                              |   10 ++++----
 hw/sb16.c                                          |    4 +-
 hw/scsi-bus.c                                      |    4 +-
 hw/scsi-disk.c                                     |    6 ++--
 hw/scsi-generic.c                                  |    4 +-
 hw/serial-isa.c                                    |    4 +-
 hw/serial-pci.c                                    |    2 +-
 hw/serial.c                                        |    2 +-
 hw/sh7750.c                                        |    4 +-
 hw/sh7750_regnames.c                               |    2 +-
 hw/sh_intc.c                                       |    4 +-
 hw/sh_pci.c                                        |    2 +-
 hw/sh_serial.c                                     |    2 +-
 hw/sh_timer.c                                      |    2 +-
 hw/shix.c                                          |    2 +-
 hw/slavio_intctl.c                                 |    2 +-
 hw/slavio_timer.c                                  |    2 +-
 hw/sm501.c                                         |    4 +-
 hw/smbios.c                                        |    2 +-
 hw/smbus.c                                         |    4 +-
 hw/smbus_eeprom.c                                  |    4 +-
 hw/smbus_ich9.c                                    |    8 +++---
 hw/smc91c111.c                                     |    2 +-
 hw/spapr.c                                         |   10 ++++----
 hw/spapr_events.c                                  |    4 +-
 hw/spapr_hcall.c                                   |    2 +-
 hw/spapr_iommu.c                                   |    2 +-
 hw/spapr_llan.c                                    |    4 +-
 hw/spapr_nvram.c                                   |    4 +-
 hw/spapr_pci.c                                     |    4 +-
 hw/spapr_rtas.c                                    |    4 +-
 hw/spapr_vio.c                                     |    6 ++--
 hw/spapr_vscsi.c                                   |    8 +++---
 hw/spapr_vty.c                                     |    4 +-
 hw/sparc32_dma.c                                   |    4 +-
 hw/spitz.c                                         |   12 +++++-----
 hw/ssd0303.c                                       |    2 +-
 hw/stellaris.c                                     |    6 ++--
 hw/stellaris_input.c                               |    2 +-
 hw/strongarm.c                                     |    2 +-
 hw/sun4c_intctl.c                                  |    2 +-
 hw/sun4m.c                                         |   18 ++++++++--------
 hw/sun4m_iommu.c                                   |    2 +-
 hw/sun4u.c                                         |   12 +++++-----
 hw/tc58128.c                                       |    2 +-
 hw/tc6393xb.c                                      |    4 +-
 hw/tmp105.c                                        |    2 +-
 hw/tmp105.h                                        |    2 +-
 hw/tosa.c                                          |   10 ++++----
 hw/tsc2005.c                                       |    2 +-
 hw/tsc210x.c                                       |    4 +-
 hw/tusb6010.c                                      |    4 +-
 hw/twl92230.c                                      |    2 +-
 hw/usb/dev-audio.c                                 |    2 +-
 hw/usb/dev-hid.c                                   |    2 +-
 hw/usb/dev-storage.c                               |    2 +-
 hw/usb/dev-uas.c                                   |    4 +-
 hw/versatilepb.c                                   |    8 +++---
 hw/vexpress.c                                      |    6 ++--
 hw/vga.c                                           |    2 +-
 hw/vhost.c                                         |    2 +-
 hw/vhost_net.c                                     |    6 ++--
 hw/virtex_ml507.c                                  |   10 ++++----
 hw/virtio-balloon.c                                |    4 +-
 hw/virtio-blk.c                                    |    6 ++--
 hw/virtio-bus.c                                    |    4 +-
 hw/virtio-console.c                                |    2 +-
 hw/virtio-net.c                                    |    6 ++--
 hw/virtio-pci.c                                    |   12 +++++-----
 hw/virtio-pci.h                                    |   14 ++++++------
 hw/virtio-rng.c                                    |    4 +-
 hw/virtio-scsi.c                                   |    6 ++--
 hw/virtio-serial-bus.c                             |    2 +-
 hw/virtio.c                                        |    4 +-
 hw/vmmouse.c                                       |    2 +-
 hw/vmport.c                                        |    2 +-
 hw/vt82c686.c                                      |   16 +++++++-------
 hw/wdt_ib700.c                                     |    2 +-
 hw/wm8750.c                                        |    2 +-
 hw/xen_apic.c                                      |    4 +-
 hw/xen_backend.c                                   |    2 +-
 hw/xen_console.c                                   |    2 +-
 hw/xen_devconfig.c                                 |    2 +-
 hw/xen_disk.c                                      |    2 +-
 hw/xen_domainbuild.c                               |    2 +-
 hw/xen_domainbuild.h                               |    2 +-
 hw/xen_machine_pv.c                                |    2 +-
 hw/xen_nic.c                                       |    2 +-
 hw/xen_platform.c                                  |    4 +-
 hw/xen_pt.c                                        |    4 +-
 hw/xen_pt.h                                        |    2 +-
 hw/xen_pt_config_init.c                            |    2 +-
 hw/xen_pt_msi.c                                    |    4 +-
 hw/xenfb.c                                         |    2 +-
 hw/xics.c                                          |    4 +-
 hw/xilinx_zynq.c                                   |    4 +-
 hw/xtensa_lx60.c                                   |    4 +-
 hw/z2.c                                            |   10 ++++----
 include/exec/memory-internal.h                     |    2 +-
 {hw => include/hw/acpi}/acpi.h                     |    0
 hw/acpi_ich9.h => include/hw/acpi/ich9.h           |    2 +-
 {hw => include/hw}/adb.h                           |    0
 hw/arm-misc.h => include/hw/arm/arm.h              |    0
 {hw => include/hw/arm}/devices.h                   |    0
 {hw => include/hw/arm}/exynos4210.h                |    0
 {hw => include/hw/arm}/imx.h                       |    0
 {hw => include/hw/arm}/omap.h                      |    0
 {hw => include/hw/arm}/pxa.h                       |    0
 hw/audiodev.h => include/hw/audio/audio.h          |    0
 {hw => include/hw/audio}/pcspk.h                   |    2 +-
 hw/block-common.h => include/hw/block/block.h      |    0
 {hw => include/hw/block}/fdc.h                     |    0
 {hw => include/hw/block}/flash.h                   |    0
 {hw => include/hw}/boards.h                        |    0
 {hw => include/hw}/bt.h                            |    0
 {hw => include/hw/char}/escc.h                     |    0
 {hw => include/hw/char}/lm32_juart.h               |    0
 {hw => include/hw/char}/serial.h                   |    0
 {hw => include/hw/cris}/etraxfs.h                  |    2 +-
 {hw => include/hw/cris}/etraxfs_dma.h              |    0
 {hw => include/hw}/elf_ops.h                       |    0
 {hw => include/hw}/empty_slot.h                    |    0
 {hw => include/hw}/hw.h                            |    0
 {hw => include/hw/i2c}/i2c.h                       |    0
 {hw => include/hw/i2c}/pm_smbus.h                  |    0
 {hw => include/hw/i2c}/smbus.h                     |    2 +-
 {hw => include/hw/i386}/apic-msidef.h              |    0
 {hw => include/hw/i386}/apic.h                     |    0
 {hw => include/hw/i386}/apic_internal.h            |    0
 {hw => include/hw/i386}/ich9.h                     |   12 +++++-----
 {hw => include/hw/i386}/ioapic.h                   |    0
 {hw => include/hw/i386}/ioapic_internal.h          |    0
 {hw => include/hw/i386}/smbios.h                   |    0
 {hw => include/hw}/ide.h                           |    2 +-
 {hw => include/hw/input}/hid.h                     |    0
 {hw => include/hw/input}/ps2.h                     |    0
 {hw => include/hw}/irq.h                           |    0
 {hw => include/hw/isa}/apm.h                       |    0
 {hw => include/hw/isa}/i8259_internal.h            |    2 +-
 {hw => include/hw/isa}/isa.h                       |    0
 {hw => include/hw/isa}/pc87312.h                   |    2 +-
 {hw => include/hw/isa}/vt82c686.h                  |    0
 {hw => include/hw}/kvm/clock.h                     |    0
 {hw => include/hw/lm32}/lm32_pic.h                 |    0
 {hw => include/hw}/loader.h                        |    0
 {hw => include/hw/m68k}/mcf.h                      |    0
 hw/mips-bios.h => include/hw/mips/bios.h           |    0
 hw/mips_cpudevs.h => include/hw/mips/cpudevs.h     |    0
 {hw => include/hw/mips}/mips.h                     |    0
 {hw => include/hw/misc}/eeprom93xx.h               |    0
 {hw => include/hw/misc}/fw_cfg.h                   |    0
 {hw => include/hw/misc}/pcmcia.h                   |    0
 {hw => include/hw}/pc.h                            |    6 ++--
 hw/apb_pci.h => include/hw/pci/host-apb.h          |    0
 hw/spapr_pci.h => include/hw/pci/host-spapr.h      |    2 +-
 hw/alpha_sys.h => include/hw/pci/host-typhoon.h    |    0
 {hw => include/hw/pci}/pam.h                       |    0
 {hw => include/hw/pci}/q35.h                       |   12 +++++-----
 {hw => include/hw/ppc}/mac_dbdma.h                 |    0
 {hw => include/hw/ppc}/ppc.h                       |    0
 {hw => include/hw/ppc}/ppc4xx.h                    |    0
 {hw => include/hw/ppc}/spapr.h                     |    2 +-
 {hw => include/hw/ppc}/spapr_vio.h                 |    0
 {hw => include/hw/ppc}/xics.h                      |    0
 {hw => include/hw}/ptimer.h                        |    0
 {hw => include/hw}/qdev-addr.h                     |    0
 {hw => include/hw}/qdev-core.h                     |    0
 {hw => include/hw}/qdev-dma.h                      |    0
 {hw => include/hw}/qdev-properties.h               |    0
 {hw => include/hw}/qdev.h                          |    0
 {hw => include/hw}/s390x/event-facility.h          |    0
 {hw => include/hw}/s390x/sclp.h                    |    0
 {hw => include/hw/scsi}/esp.h                      |    2 +-
 {hw => include/hw/scsi}/scsi-defs.h                |    0
 {hw => include/hw/scsi}/scsi.h                     |    2 +-
 {hw => include/hw}/sd.h                            |    0
 {hw => include/hw/sh4}/sh.h                        |    2 +-
 {hw => include/hw/sh4}/sh_intc.h                   |    0
 {hw => include/hw/sparc}/firmware_abi.h            |    0
 {hw => include/hw/sparc}/sparc32_dma.h             |    0
 {hw => include/hw/sparc}/sun4m.h                   |    2 +-
 {hw => include/hw}/ssi.h                           |    0
 {hw => include/hw}/stream.h                        |    0
 {hw => include/hw}/sysbus.h                        |    0
 hw/hpet_emul.h => include/hw/timer/hpet.h          |    0
 {hw => include/hw/timer}/i8254.h                   |    2 +-
 {hw => include/hw/timer}/i8254_internal.h          |    2 +-
 hw/nvram.h => include/hw/timer/m48t59.h            |    0
 {hw => include/hw/timer}/mc146818rtc.h             |    4 +-
 {hw => include/hw/timer}/mc146818rtc_regs.h        |    0
 {hw => include/hw/unicore32}/puv3.h                |    0
 {hw => include/hw}/usb.h                           |    0
 {hw => include/hw/virtio}/vhost.h                  |    2 +-
 {hw => include/hw/virtio}/vhost_net.h              |    0
 .../hw/virtio/virtio-9p.h                          |    0
 {hw => include/hw/virtio}/virtio-balloon.h         |    2 +-
 {hw => include/hw/virtio}/virtio-blk.h             |    4 +-
 {hw => include/hw/virtio}/virtio-bus.h             |    2 +-
 {hw => include/hw/virtio}/virtio-net.h             |    2 +-
 {hw => include/hw/virtio}/virtio-rng.h             |    0
 {hw => include/hw/virtio}/virtio-scsi.h            |    2 +-
 {hw => include/hw/virtio}/virtio-serial.h          |    2 +-
 {hw => include/hw/virtio}/virtio.h                 |    2 +-
 {hw => include/hw}/watchdog.h                      |    0
 {hw => include/hw/xen}/xen_backend.h               |    2 +-
 {hw => include/hw/xen}/xen_common.h                |    2 +-
 {hw => include/hw}/xilinx.h                        |    0
 {hw => include/sysemu}/xen.h                       |    0
 monitor.c                                          |    6 ++--
 net/tap.c                                          |    2 +-
 target-arm/arm-semi.c                              |    2 +-
 target-i386/cpu.c                                  |    4 +-
 target-i386/cpu.h                                  |    2 +-
 target-i386/kvm.c                                  |    2 +-
 target-i386/machine.c                              |    2 +-
 target-lm32/op_helper.c                            |    4 +-
 target-lm32/translate.c                            |    2 +-
 target-ppc/kvm.c                                   |    6 ++--
 target-sh4/helper.c                                |    2 +-
 vl.c                                               |   10 ++++----
 xen-stub.c                                         |    2 +-
 455 files changed, 699 insertions(+), 700 deletions(-)
 rename {hw => include/hw/acpi}/acpi.h (100%)
 rename hw/acpi_ich9.h => include/hw/acpi/ich9.h (98%)
 rename {hw => include/hw}/adb.h (100%)
 rename hw/arm-misc.h => include/hw/arm/arm.h (100%)
 rename {hw => include/hw/arm}/devices.h (100%)
 rename {hw => include/hw/arm}/exynos4210.h (100%)
 rename {hw => include/hw/arm}/imx.h (100%)
 rename {hw => include/hw/arm}/omap.h (100%)
 rename {hw => include/hw/arm}/pxa.h (100%)
 rename hw/audiodev.h => include/hw/audio/audio.h (100%)
 rename {hw => include/hw/audio}/pcspk.h (98%)
 rename hw/block-common.h => include/hw/block/block.h (100%)
 rename {hw => include/hw/block}/fdc.h (100%)
 rename {hw => include/hw/block}/flash.h (100%)
 rename {hw => include/hw}/boards.h (100%)
 rename {hw => include/hw}/bt.h (100%)
 rename {hw => include/hw/char}/escc.h (100%)
 rename {hw => include/hw/char}/lm32_juart.h (100%)
 rename {hw => include/hw/char}/serial.h (100%)
 rename {hw => include/hw/cris}/etraxfs.h (98%)
 rename {hw => include/hw/cris}/etraxfs_dma.h (100%)
 rename {hw => include/hw}/elf_ops.h (100%)
 rename {hw => include/hw}/empty_slot.h (100%)
 rename {hw => include/hw}/hw.h (100%)
 rename {hw => include/hw/i2c}/i2c.h (100%)
 rename {hw => include/hw/i2c}/pm_smbus.h (100%)
 rename {hw => include/hw/i2c}/smbus.h (99%)
 rename {hw => include/hw/i386}/apic-msidef.h (100%)
 rename {hw => include/hw/i386}/apic.h (100%)
 rename {hw => include/hw/i386}/apic_internal.h (100%)
 rename {hw => include/hw/i386}/ich9.h (98%)
 rename {hw => include/hw/i386}/ioapic.h (100%)
 rename {hw => include/hw/i386}/ioapic_internal.h (100%)
 rename {hw => include/hw/i386}/smbios.h (100%)
 rename {hw => include/hw}/ide.h (97%)
 rename {hw => include/hw/input}/hid.h (100%)
 rename {hw => include/hw/input}/ps2.h (100%)
 rename {hw => include/hw}/irq.h (100%)
 rename {hw => include/hw/isa}/apm.h (100%)
 rename {hw => include/hw/isa}/i8259_internal.h (99%)
 rename {hw => include/hw/isa}/isa.h (100%)
 rename {hw => include/hw/isa}/pc87312.h (98%)
 rename {hw => include/hw/isa}/vt82c686.h (100%)
 rename {hw => include/hw}/kvm/clock.h (100%)
 rename {hw => include/hw/lm32}/lm32_pic.h (100%)
 rename {hw => include/hw}/loader.h (100%)
 rename {hw => include/hw/m68k}/mcf.h (100%)
 rename hw/mips-bios.h => include/hw/mips/bios.h (100%)
 rename hw/mips_cpudevs.h => include/hw/mips/cpudevs.h (100%)
 rename {hw => include/hw/mips}/mips.h (100%)
 rename {hw => include/hw/misc}/eeprom93xx.h (100%)
 rename {hw => include/hw/misc}/fw_cfg.h (100%)
 rename {hw => include/hw/misc}/pcmcia.h (100%)
 rename {hw => include/hw}/pc.h (98%)
 rename hw/apb_pci.h => include/hw/pci/host-apb.h (100%)
 rename hw/spapr_pci.h => include/hw/pci/host-spapr.h (99%)
 rename hw/alpha_sys.h => include/hw/pci/host-typhoon.h (100%)
 rename {hw => include/hw/pci}/pam.h (100%)
 rename {hw => include/hw/pci}/q35.h (97%)
 rename {hw => include/hw/ppc}/mac_dbdma.h (100%)
 rename {hw => include/hw/ppc}/ppc.h (100%)
 rename {hw => include/hw/ppc}/ppc4xx.h (100%)
 rename {hw => include/hw/ppc}/spapr.h (99%)
 rename {hw => include/hw/ppc}/spapr_vio.h (100%)
 rename {hw => include/hw/ppc}/xics.h (100%)
 rename {hw => include/hw}/ptimer.h (100%)
 rename {hw => include/hw}/qdev-addr.h (100%)
 rename {hw => include/hw}/qdev-core.h (100%)
 rename {hw => include/hw}/qdev-dma.h (100%)
 rename {hw => include/hw}/qdev-properties.h (100%)
 rename {hw => include/hw}/qdev.h (100%)
 rename {hw => include/hw}/s390x/event-facility.h (100%)
 rename {hw => include/hw}/s390x/sclp.h (100%)
 rename {hw => include/hw/scsi}/esp.h (99%)
 rename {hw => include/hw/scsi}/scsi-defs.h (100%)
 rename {hw => include/hw/scsi}/scsi.h (99%)
 rename {hw => include/hw}/sd.h (100%)
 rename {hw => include/hw/sh4}/sh.h (98%)
 rename {hw => include/hw/sh4}/sh_intc.h (100%)
 rename {hw => include/hw/sparc}/firmware_abi.h (100%)
 rename {hw => include/hw/sparc}/sparc32_dma.h (100%)
 rename {hw => include/hw/sparc}/sun4m.h (96%)
 rename {hw => include/hw}/ssi.h (100%)
 rename {hw => include/hw}/stream.h (100%)
 rename {hw => include/hw}/sysbus.h (100%)
 rename hw/hpet_emul.h => include/hw/timer/hpet.h (100%)
 rename {hw => include/hw/timer}/i8254.h (98%)
 rename {hw => include/hw/timer}/i8254_internal.h (99%)
 rename hw/nvram.h => include/hw/timer/m48t59.h (100%)
 rename {hw => include/hw/timer}/mc146818rtc.h (80%)
 rename {hw => include/hw/timer}/mc146818rtc_regs.h (100%)
 rename {hw => include/hw/unicore32}/puv3.h (100%)
 rename {hw => include/hw}/usb.h (100%)
 rename {hw => include/hw/virtio}/vhost.h (98%)
 rename {hw => include/hw/virtio}/vhost_net.h (100%)
 rename hw/9pfs/virtio-9p-device.h => include/hw/virtio/virtio-9p.h (100%)
 rename {hw => include/hw/virtio}/virtio-balloon.h (98%)
 rename {hw => include/hw/virtio}/virtio-blk.h (98%)
 rename {hw => include/hw/virtio}/virtio-bus.h (99%)
 rename {hw => include/hw/virtio}/virtio-net.h (99%)
 rename {hw => include/hw/virtio}/virtio-rng.h (100%)
 rename {hw => include/hw/virtio}/virtio-scsi.h (97%)
 rename {hw => include/hw/virtio}/virtio-serial.h (99%)
 rename {hw => include/hw/virtio}/virtio.h (99%)
 rename {hw => include/hw}/watchdog.h (100%)
 rename {hw => include/hw/xen}/xen_backend.h (99%)
 rename {hw => include/hw/xen}/xen_common.h (99%)
 rename {hw => include/hw}/xilinx.h (100%)
 rename {hw => include/sysemu}/xen.h (100%)

Patch

diff --git a/arch_init.c b/arch_init.c
index 8da868b..7df6678 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -37,13 +37,13 @@ 
 #include "audio/audio.h"
 #include "hw/pc.h"
 #include "hw/pci/pci.h"
-#include "hw/audiodev.h"
+#include "hw/audio/audio.h"
 #include "sysemu/kvm.h"
 #include "migration/migration.h"
 #include "exec/gdbstub.h"
-#include "hw/smbios.h"
+#include "hw/i386/smbios.h"
 #include "exec/address-spaces.h"
-#include "hw/pcspk.h"
+#include "hw/audio/pcspk.h"
 #include "migration/page_cache.h"
 #include "qemu/config-file.h"
 #include "qmp-commands.h"
diff --git a/blockdev-nbd.c b/blockdev-nbd.c
index dc4e9a2..c1730ad 100644
--- a/blockdev-nbd.c
+++ b/blockdev-nbd.c
@@ -10,7 +10,6 @@ 
  */
 
 #include "sysemu/blockdev.h"
-#include "hw/block-common.h"
 #include "monitor/monitor.h"
 #include "qapi/qmp/qerror.h"
 #include "sysemu/sysemu.h"
diff --git a/blockdev.c b/blockdev.c
index 63e6f1e..7f7d083 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -8,7 +8,7 @@ 
  */
 
 #include "sysemu/blockdev.h"
-#include "hw/block-common.h"
+#include "hw/block/block.h"
 #include "block/blockjob.h"
 #include "monitor/monitor.h"
 #include "qapi/qmp/qerror.h"
diff --git a/exec.c b/exec.c
index b85508b..273c5ea 100644
--- a/exec.c
+++ b/exec.c
@@ -31,7 +31,7 @@ 
 #include "hw/qdev.h"
 #include "qemu/osdep.h"
 #include "sysemu/kvm.h"
-#include "hw/xen.h"
+#include "sysemu/xen.h"
 #include "qemu/timer.h"
 #include "qemu/config-file.h"
 #include "exec/memory.h"
diff --git a/gdbstub.c b/gdbstub.c
index 6cd26f1..c90fc05 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -1606,7 +1606,7 @@  static int cpu_gdb_write_register(CPUS390XState *env, uint8_t *mem_buf, int n)
 }
 #elif defined (TARGET_LM32)
 
-#include "hw/lm32_pic.h"
+#include "hw/lm32/lm32_pic.h"
 #define NUM_CORE_REGS (32 + 7)
 
 static int cpu_gdb_read_register(CPULM32State *env, uint8_t *mem_buf, int n)
diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c
index d321c80..9eab65a 100644
--- a/hw/9pfs/virtio-9p-device.c
+++ b/hw/9pfs/virtio-9p-device.c
@@ -11,12 +11,12 @@ 
  *
  */
 
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "hw/pc.h"
 #include "qemu/sockets.h"
 #include "virtio-9p.h"
 #include "fsdev/qemu-fsdev.h"
-#include "virtio-9p-device.h"
+#include "hw/virtio/virtio-9p.h"
 #include "virtio-9p-xattr.h"
 #include "virtio-9p-coth.h"
 
diff --git a/hw/9pfs/virtio-9p-handle.c b/hw/9pfs/virtio-9p-handle.c
index e30fdb6..fe8e0ed 100644
--- a/hw/9pfs/virtio-9p-handle.c
+++ b/hw/9pfs/virtio-9p-handle.c
@@ -11,7 +11,7 @@ 
  *
  */
 
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "virtio-9p.h"
 #include "virtio-9p-xattr.h"
 #include <arpa/inet.h>
diff --git a/hw/9pfs/virtio-9p-local.c b/hw/9pfs/virtio-9p-local.c
index f1b1c83..be898ec 100644
--- a/hw/9pfs/virtio-9p-local.c
+++ b/hw/9pfs/virtio-9p-local.c
@@ -11,7 +11,7 @@ 
  *
  */
 
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "virtio-9p.h"
 #include "virtio-9p-xattr.h"
 #include <arpa/inet.h>
diff --git a/hw/9pfs/virtio-9p-posix-acl.c b/hw/9pfs/virtio-9p-posix-acl.c
index 08bb0e8..339c5ec 100644
--- a/hw/9pfs/virtio-9p-posix-acl.c
+++ b/hw/9pfs/virtio-9p-posix-acl.c
@@ -13,7 +13,7 @@ 
 
 #include <sys/types.h>
 #include "qemu/xattr.h"
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "virtio-9p.h"
 #include "fsdev/file-op-9p.h"
 #include "virtio-9p-xattr.h"
diff --git a/hw/9pfs/virtio-9p-proxy.c b/hw/9pfs/virtio-9p-proxy.c
index acac15c..36e0462 100644
--- a/hw/9pfs/virtio-9p-proxy.c
+++ b/hw/9pfs/virtio-9p-proxy.c
@@ -11,7 +11,7 @@ 
  */
 #include <sys/socket.h>
 #include <sys/un.h>
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "virtio-9p.h"
 #include "qemu/error-report.h"
 #include "fsdev/qemu-fsdev.h"
diff --git a/hw/9pfs/virtio-9p-synth.c b/hw/9pfs/virtio-9p-synth.c
index e95a856..840e4eb 100644
--- a/hw/9pfs/virtio-9p-synth.c
+++ b/hw/9pfs/virtio-9p-synth.c
@@ -12,7 +12,7 @@ 
  *
  */
 
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "virtio-9p.h"
 #include "virtio-9p-xattr.h"
 #include "fsdev/qemu-fsdev.h"
diff --git a/hw/9pfs/virtio-9p-xattr-user.c b/hw/9pfs/virtio-9p-xattr-user.c
index 5bb6020..e0c92eb 100644
--- a/hw/9pfs/virtio-9p-xattr-user.c
+++ b/hw/9pfs/virtio-9p-xattr-user.c
@@ -12,7 +12,7 @@ 
  */
 
 #include <sys/types.h>
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "virtio-9p.h"
 #include "fsdev/file-op-9p.h"
 #include "virtio-9p-xattr.h"
diff --git a/hw/9pfs/virtio-9p-xattr.c b/hw/9pfs/virtio-9p-xattr.c
index a839606..90ae565 100644
--- a/hw/9pfs/virtio-9p-xattr.c
+++ b/hw/9pfs/virtio-9p-xattr.c
@@ -11,7 +11,7 @@ 
  *
  */
 
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "virtio-9p.h"
 #include "fsdev/file-op-9p.h"
 #include "virtio-9p-xattr.h"
diff --git a/hw/9pfs/virtio-9p.c b/hw/9pfs/virtio-9p.c
index a9b82a6..b71e14a 100644
--- a/hw/9pfs/virtio-9p.c
+++ b/hw/9pfs/virtio-9p.c
@@ -11,7 +11,7 @@ 
  *
  */
 
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "hw/pc.h"
 #include "qemu/sockets.h"
 #include "virtio-9p.h"
diff --git a/hw/9pfs/virtio-9p.h b/hw/9pfs/virtio-9p.h
index 52b1c69..95a8ec3 100644
--- a/hw/9pfs/virtio-9p.h
+++ b/hw/9pfs/virtio-9p.h
@@ -6,7 +6,7 @@ 
 #include <sys/time.h>
 #include <utime.h>
 #include <sys/resource.h>
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "fsdev/file-op-9p.h"
 #include "fsdev/virtio-9p-marshal.h"
 #include "qemu/thread.h"
diff --git a/hw/ac97.c b/hw/ac97.c
index c7d601f..ab68ec6 100644
--- a/hw/ac97.c
+++ b/hw/ac97.c
@@ -18,7 +18,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/audiodev.h"
+#include "hw/audio/audio.h"
 #include "audio/audio.h"
 #include "hw/pci/pci.h"
 #include "sysemu/dma.h"
diff --git a/hw/acpi.c b/hw/acpi.c
index 53e47d5..4931929 100644
--- a/hw/acpi.c
+++ b/hw/acpi.c
@@ -21,7 +21,7 @@ 
 #include "sysemu/sysemu.h"
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/acpi.h"
+#include "hw/acpi/acpi.h"
 #include "monitor/monitor.h"
 
 struct acpi_table_header {
diff --git a/hw/acpi_ich9.c b/hw/acpi_ich9.c
index 29f84ff..cec8cce 100644
--- a/hw/acpi_ich9.c
+++ b/hw/acpi_ich9.c
@@ -28,11 +28,11 @@ 
 #include "hw/pci/pci.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
-#include "hw/acpi.h"
+#include "hw/acpi/acpi.h"
 #include "sysemu/kvm.h"
 #include "exec/address-spaces.h"
 
-#include "hw/ich9.h"
+#include "hw/i386/ich9.h"
 
 //#define DEBUG
 
diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c
index 10eac0b..14eb4cf 100644
--- a/hw/acpi_piix4.c
+++ b/hw/acpi_piix4.c
@@ -20,14 +20,14 @@ 
  */
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/apm.h"
-#include "hw/pm_smbus.h"
+#include "hw/isa/apm.h"
+#include "hw/i2c/pm_smbus.h"
 #include "hw/pci/pci.h"
-#include "hw/acpi.h"
+#include "hw/acpi/acpi.h"
 #include "sysemu/sysemu.h"
 #include "qemu/range.h"
 #include "exec/ioport.h"
-#include "hw/fw_cfg.h"
+#include "hw/misc/fw_cfg.h"
 #include "exec/address-spaces.h"
 
 //#define DEBUG
diff --git a/hw/adlib.c b/hw/adlib.c
index e6bce59..133c0ff 100644
--- a/hw/adlib.c
+++ b/hw/adlib.c
@@ -23,9 +23,9 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/audiodev.h"
+#include "hw/audio/audio.h"
 #include "audio/audio.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 
 //#define DEBUG
 
diff --git a/hw/alpha_dp264.c b/hw/alpha_dp264.c
index 13aaa57..b1ea802 100644
--- a/hw/alpha_dp264.c
+++ b/hw/alpha_dp264.c
@@ -10,12 +10,12 @@ 
 #include "elf.h"
 #include "hw/loader.h"
 #include "hw/boards.h"
-#include "hw/alpha_sys.h"
+#include "hw/pci/host-typhoon.h"
 #include "sysemu/sysemu.h"
-#include "hw/mc146818rtc.h"
+#include "hw/timer/mc146818rtc.h"
 #include "hw/ide.h"
-#include "hw/i8254.h"
-#include "hw/serial.h"
+#include "hw/timer/i8254.h"
+#include "hw/char/serial.h"
 
 #define MAX_IDE_BUS 2
 
diff --git a/hw/alpha_pci.c b/hw/alpha_pci.c
index 8462868..0b9ef83 100644
--- a/hw/alpha_pci.c
+++ b/hw/alpha_pci.c
@@ -7,7 +7,7 @@ 
  */
 
 #include "config.h"
-#include "hw/alpha_sys.h"
+#include "hw/pci/host-typhoon.h"
 #include "qemu/log.h"
 #include "sysemu/sysemu.h"
 
diff --git a/hw/alpha_typhoon.c b/hw/alpha_typhoon.c
index 95571ff..3a1dedd 100644
--- a/hw/alpha_typhoon.c
+++ b/hw/alpha_typhoon.c
@@ -9,9 +9,9 @@ 
 #include "cpu.h"
 #include "exec/exec-all.h"
 #include "hw/hw.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "sysemu/sysemu.h"
-#include "hw/alpha_sys.h"
+#include "hw/pci/host-typhoon.h"
 #include "exec/address-spaces.h"
 
 
diff --git a/hw/an5206.c b/hw/an5206.c
index 84e1a84..bac14b6 100644
--- a/hw/an5206.c
+++ b/hw/an5206.c
@@ -7,7 +7,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/mcf.h"
+#include "hw/m68k/mcf.h"
 #include "hw/boards.h"
 #include "hw/loader.h"
 #include "elf.h"
diff --git a/hw/apb_pci.c b/hw/apb_pci.c
index 7992d6f..672a9fc 100644
--- a/hw/apb_pci.c
+++ b/hw/apb_pci.c
@@ -31,7 +31,7 @@ 
 #include "hw/pci/pci_host.h"
 #include "hw/pci/pci_bridge.h"
 #include "hw/pci/pci_bus.h"
-#include "hw/apb_pci.h"
+#include "hw/pci/host-apb.h"
 #include "sysemu/sysemu.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/apic.c b/hw/apic.c
index 8eddba0..9ddfcdf 100644
--- a/hw/apic.c
+++ b/hw/apic.c
@@ -17,14 +17,14 @@ 
  * License along with this library; if not, see <http://www.gnu.org/licenses/>
  */
 #include "qemu/thread.h"
-#include "hw/apic_internal.h"
-#include "hw/apic.h"
-#include "hw/ioapic.h"
+#include "hw/i386/apic_internal.h"
+#include "hw/i386/apic.h"
+#include "hw/i386/ioapic.h"
 #include "hw/pci/msi.h"
 #include "qemu/host-utils.h"
 #include "trace.h"
 #include "hw/pc.h"
-#include "hw/apic-msidef.h"
+#include "hw/i386/apic-msidef.h"
 
 #define MAX_APIC_WORDS 8
 
diff --git a/hw/apic_common.c b/hw/apic_common.c
index b6900da..cf41cd6 100644
--- a/hw/apic_common.c
+++ b/hw/apic_common.c
@@ -17,8 +17,8 @@ 
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>
  */
-#include "hw/apic.h"
-#include "hw/apic_internal.h"
+#include "hw/i386/apic.h"
+#include "hw/i386/apic_internal.h"
 #include "trace.h"
 #include "sysemu/kvm.h"
 
diff --git a/hw/apm.c b/hw/apm.c
index e2846f9..5f21d21 100644
--- a/hw/apm.c
+++ b/hw/apm.c
@@ -20,7 +20,7 @@ 
  * GNU GPL, version 2 or (at your option) any later version.
  */
 
-#include "hw/apm.h"
+#include "hw/isa/apm.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
 
diff --git a/hw/applesmc.c b/hw/applesmc.c
index 44b9bac..c29558b 100644
--- a/hw/applesmc.c
+++ b/hw/applesmc.c
@@ -31,7 +31,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "ui/console.h"
 #include "qemu/timer.h"
 
diff --git a/hw/arm_boot.c b/hw/arm_boot.c
index 43253fd..e9c0945 100644
--- a/hw/arm_boot.c
+++ b/hw/arm_boot.c
@@ -9,7 +9,7 @@ 
 
 #include "config.h"
 #include "hw/hw.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/arm.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
 #include "hw/loader.h"
diff --git a/hw/arm_pic.c b/hw/arm_pic.c
index a7ad893..5755b0b 100644
--- a/hw/arm_pic.c
+++ b/hw/arm_pic.c
@@ -8,7 +8,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/arm.h"
 
 /* Input 0 is IRQ and input 1 is FIQ.  */
 static void arm_pic_cpu_handler(void *opaque, int irq, int level)
diff --git a/hw/armv7m.c b/hw/armv7m.c
index 1d5bb59..2ae3576 100644
--- a/hw/armv7m.c
+++ b/hw/armv7m.c
@@ -8,7 +8,7 @@ 
  */
 
 #include "hw/sysbus.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/arm.h"
 #include "hw/loader.h"
 #include "elf.h"
 
diff --git a/hw/armv7m_nvic.c b/hw/armv7m_nvic.c
index 4d30423..204fa29 100644
--- a/hw/armv7m_nvic.c
+++ b/hw/armv7m_nvic.c
@@ -12,7 +12,7 @@ 
 
 #include "hw/sysbus.h"
 #include "qemu/timer.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/arm.h"
 #include "exec/address-spaces.h"
 #include "hw/arm_gic_internal.h"
 
diff --git a/hw/axis_dev88.c b/hw/axis_dev88.c
index eccd423..00daceb 100644
--- a/hw/axis_dev88.c
+++ b/hw/axis_dev88.c
@@ -24,9 +24,9 @@ 
 
 #include "hw/sysbus.h"
 #include "net/net.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "hw/boards.h"
-#include "hw/etraxfs.h"
+#include "hw/cris/etraxfs.h"
 #include "hw/loader.h"
 #include "elf.h"
 #include "hw/cris-boot.h"
diff --git a/hw/bitbang_i2c.h b/hw/bitbang_i2c.h
index e860627..2866ac3 100644
--- a/hw/bitbang_i2c.h
+++ b/hw/bitbang_i2c.h
@@ -1,7 +1,7 @@ 
 #ifndef BITBANG_I2C_H
 #define BITBANG_I2C_H
 
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 
 typedef struct bitbang_i2c_interface bitbang_i2c_interface;
 
diff --git a/hw/blizzard.c b/hw/blizzard.c
index 805f4d5..876420a 100644
--- a/hw/blizzard.c
+++ b/hw/blizzard.c
@@ -20,7 +20,7 @@ 
 
 #include "qemu-common.h"
 #include "ui/console.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "hw/vga_int.h"
 #include "ui/pixel_ops.h"
 
diff --git a/hw/block-common.c b/hw/block-common.c
index d21ec3a..33dd3f3 100644
--- a/hw/block-common.c
+++ b/hw/block-common.c
@@ -8,7 +8,7 @@ 
  */
 
 #include "sysemu/blockdev.h"
-#include "hw/block-common.h"
+#include "hw/block/block.h"
 #include "qemu/error-report.h"
 
 void blkconf_serial(BlockConf *conf, char **serial)
diff --git a/hw/bonito.c b/hw/bonito.c
index 3456e78..8cc3033 100644
--- a/hw/bonito.c
+++ b/hw/bonito.c
@@ -42,7 +42,7 @@ 
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
 #include "hw/pc.h"
-#include "hw/mips.h"
+#include "hw/mips/mips.h"
 #include "hw/pci/pci_host.h"
 #include "sysemu/sysemu.h"
 #include "exec/address-spaces.h"
diff --git a/hw/bt-hid.c b/hw/bt-hid.c
index 69ccf9b..af494e1 100644
--- a/hw/bt-hid.c
+++ b/hw/bt-hid.c
@@ -21,7 +21,7 @@ 
 #include "qemu-common.h"
 #include "qemu/timer.h"
 #include "ui/console.h"
-#include "hw/hid.h"
+#include "hw/input/hid.h"
 #include "hw/bt.h"
 
 enum hid_transaction_req {
diff --git a/hw/cbus.c b/hw/cbus.c
index 29b467b..3d9027f 100644
--- a/hw/cbus.c
+++ b/hw/cbus.c
@@ -22,7 +22,7 @@ 
 
 #include "qemu-common.h"
 #include "hw/irq.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "sysemu/sysemu.h"
 
 //#define DEBUG
diff --git a/hw/cdrom.c b/hw/cdrom.c
index a018eec..38469fa 100644
--- a/hw/cdrom.c
+++ b/hw/cdrom.c
@@ -26,7 +26,7 @@ 
    here.  */
 
 #include "qemu-common.h"
-#include "hw/scsi.h"
+#include "hw/scsi/scsi.h"
 
 static void lba_to_msf(uint8_t *buf, int lba)
 {
diff --git a/hw/collie.c b/hw/collie.c
index 17fddc8..72d42cc 100644
--- a/hw/collie.c
+++ b/hw/collie.c
@@ -11,10 +11,10 @@ 
 #include "hw/hw.h"
 #include "hw/sysbus.h"
 #include "hw/boards.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "hw/strongarm.h"
-#include "hw/arm-misc.h"
-#include "hw/flash.h"
+#include "hw/arm/arm.h"
+#include "hw/block/flash.h"
 #include "sysemu/blockdev.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/cris_pic_cpu.c b/hw/cris_pic_cpu.c
index 7f50471..aaed741 100644
--- a/hw/cris_pic_cpu.c
+++ b/hw/cris_pic_cpu.c
@@ -24,7 +24,7 @@ 
 
 #include "hw/sysbus.h"
 #include "hw/hw.h"
-#include "hw/etraxfs.h"
+#include "hw/cris/etraxfs.h"
 
 #define D(x)
 
diff --git a/hw/cs4231a.c b/hw/cs4231a.c
index f005f25..5711b62 100644
--- a/hw/cs4231a.c
+++ b/hw/cs4231a.c
@@ -22,9 +22,9 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/audiodev.h"
+#include "hw/audio/audio.h"
 #include "audio/audio.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/qdev.h"
 #include "qemu/timer.h"
 
diff --git a/hw/dataplane/virtio-blk.c b/hw/dataplane/virtio-blk.c
index 3f2da22..b4d0ef6 100644
--- a/hw/dataplane/virtio-blk.c
+++ b/hw/dataplane/virtio-blk.c
@@ -19,7 +19,7 @@ 
 #include "vring.h"
 #include "ioq.h"
 #include "migration/migration.h"
-#include "hw/virtio-blk.h"
+#include "hw/virtio/virtio-blk.h"
 #include "hw/dataplane/virtio-blk.h"
 
 enum {
diff --git a/hw/dataplane/virtio-blk.h b/hw/dataplane/virtio-blk.h
index 1e8fdfe..c90e99f 100644
--- a/hw/dataplane/virtio-blk.h
+++ b/hw/dataplane/virtio-blk.h
@@ -15,7 +15,7 @@ 
 #ifndef HW_DATAPLANE_VIRTIO_BLK_H
 #define HW_DATAPLANE_VIRTIO_BLK_H
 
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 
 typedef struct VirtIOBlockDataPlane VirtIOBlockDataPlane;
 
diff --git a/hw/dataplane/vring.h b/hw/dataplane/vring.h
index 3274f62..a45a90c 100644
--- a/hw/dataplane/vring.h
+++ b/hw/dataplane/vring.h
@@ -20,7 +20,7 @@ 
 #include <linux/virtio_ring.h>
 #include "qemu-common.h"
 #include "hw/dataplane/hostmem.h"
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 
 typedef struct {
     HostMem hostmem;                /* guest memory mapper */
diff --git a/hw/debugcon.c b/hw/debugcon.c
index cab7691..dbfa698 100644
--- a/hw/debugcon.c
+++ b/hw/debugcon.c
@@ -26,7 +26,7 @@ 
 
 #include "hw/hw.h"
 #include "char/char.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/pc.h"
 
 #define TYPE_ISA_DEBUGCON_DEVICE "isa-debugcon"
diff --git a/hw/debugexit.c b/hw/debugexit.c
index ba67a8f..59bed5b 100644
--- a/hw/debugexit.c
+++ b/hw/debugexit.c
@@ -8,7 +8,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 
 #define TYPE_ISA_DEBUG_EXIT_DEVICE "isa-debug-exit"
 #define ISA_DEBUG_EXIT_DEVICE(obj) \
diff --git a/hw/dma.c b/hw/dma.c
index fd1161c..eb60d45 100644
--- a/hw/dma.c
+++ b/hw/dma.c
@@ -22,7 +22,7 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "qemu/main-loop.h"
 
 /* #define DEBUG_DMA */
diff --git a/hw/dp8393x.c b/hw/dp8393x.c
index 8b5ca6a..2289f08 100644
--- a/hw/dp8393x.c
+++ b/hw/dp8393x.c
@@ -20,7 +20,7 @@ 
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "net/net.h"
-#include "hw/mips.h"
+#include "hw/mips/mips.h"
 
 //#define DEBUG_SONIC
 
diff --git a/hw/ds1338.c b/hw/ds1338.c
index 1c4c0b7..26c2c6e 100644
--- a/hw/ds1338.c
+++ b/hw/ds1338.c
@@ -10,7 +10,7 @@ 
  * GNU GPL, version 2 or (at your option) any later version.
  */
 
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 
 /* Size of NVRAM including both the user-accessible area and the
  * secondary register area.
diff --git a/hw/ecc.c b/hw/ecc.c
index 8c97c33..8c888cc 100644
--- a/hw/ecc.c
+++ b/hw/ecc.c
@@ -12,7 +12,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 
 /*
  * Pre-calculated 256-way 1 byte column parity.  Table borrowed from Linux.
diff --git a/hw/eepro100.c b/hw/eepro100.c
index 68d729c..83bbe9d 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -44,7 +44,7 @@ 
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
 #include "net/net.h"
-#include "hw/eeprom93xx.h"
+#include "hw/misc/eeprom93xx.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/dma.h"
 
diff --git a/hw/eeprom93xx.c b/hw/eeprom93xx.c
index 39f5605..8a802d3 100644
--- a/hw/eeprom93xx.c
+++ b/hw/eeprom93xx.c
@@ -36,7 +36,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/eeprom93xx.h"
+#include "hw/misc/eeprom93xx.h"
 
 /* Debug EEPROM emulation. */
 //~ #define DEBUG_EEPROM
diff --git a/hw/es1370.c b/hw/es1370.c
index e64cf23..9fe5708 100644
--- a/hw/es1370.c
+++ b/hw/es1370.c
@@ -27,7 +27,7 @@ 
 #define SILENT_ES1370
 
 #include "hw/hw.h"
-#include "hw/audiodev.h"
+#include "hw/audio/audio.h"
 #include "audio/audio.h"
 #include "hw/pci/pci.h"
 #include "sysemu/dma.h"
diff --git a/hw/escc.c b/hw/escc.c
index baf0219..067b055 100644
--- a/hw/escc.c
+++ b/hw/escc.c
@@ -24,7 +24,7 @@ 
 
 #include "hw/hw.h"
 #include "hw/sysbus.h"
-#include "hw/escc.h"
+#include "hw/char/escc.h"
 #include "char/char.h"
 #include "ui/console.h"
 #include "trace.h"
diff --git a/hw/esp-pci.c b/hw/esp-pci.c
index 7599b39..8491aa1 100644
--- a/hw/esp-pci.c
+++ b/hw/esp-pci.c
@@ -24,8 +24,8 @@ 
  */
 
 #include "hw/pci/pci.h"
-#include "hw/eeprom93xx.h"
-#include "hw/esp.h"
+#include "hw/misc/eeprom93xx.h"
+#include "hw/scsi/esp.h"
 #include "trace.h"
 #include "qemu/log.h"
 
diff --git a/hw/esp.c b/hw/esp.c
index 5365eac..17adbec 100644
--- a/hw/esp.c
+++ b/hw/esp.c
@@ -24,7 +24,7 @@ 
  */
 
 #include "hw/sysbus.h"
-#include "hw/esp.h"
+#include "hw/scsi/esp.h"
 #include "trace.h"
 #include "qemu/log.h"
 
diff --git a/hw/etraxfs_dma.c b/hw/etraxfs_dma.c
index a84ec1f..6a8c222 100644
--- a/hw/etraxfs_dma.c
+++ b/hw/etraxfs_dma.c
@@ -28,7 +28,7 @@ 
 #include "qemu-common.h"
 #include "sysemu/sysemu.h"
 
-#include "hw/etraxfs_dma.h"
+#include "hw/cris/etraxfs_dma.h"
 
 #define D(x)
 
diff --git a/hw/etraxfs_eth.c b/hw/etraxfs_eth.c
index 591bee2..1039913 100644
--- a/hw/etraxfs_eth.c
+++ b/hw/etraxfs_eth.c
@@ -25,7 +25,7 @@ 
 #include <stdio.h>
 #include "hw/sysbus.h"
 #include "net/net.h"
-#include "hw/etraxfs.h"
+#include "hw/cris/etraxfs.h"
 
 #define D(x)
 
diff --git a/hw/exynos4210.c b/hw/exynos4210.c
index 4592514..c8101d3 100644
--- a/hw/exynos4210.c
+++ b/hw/exynos4210.c
@@ -24,9 +24,9 @@ 
 #include "hw/boards.h"
 #include "sysemu/sysemu.h"
 #include "hw/sysbus.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/arm.h"
 #include "hw/loader.h"
-#include "hw/exynos4210.h"
+#include "hw/arm/exynos4210.h"
 #include "hw/usb/hcd-ehci.h"
 
 #define EXYNOS4210_CHIPID_ADDR         0x10000000
diff --git a/hw/exynos4210_combiner.c b/hw/exynos4210_combiner.c
index 5818f10..6874287 100644
--- a/hw/exynos4210_combiner.c
+++ b/hw/exynos4210_combiner.c
@@ -29,7 +29,7 @@ 
 
 #include "hw/sysbus.h"
 
-#include "hw/exynos4210.h"
+#include "hw/arm/exynos4210.h"
 
 //#define DEBUG_COMBINER
 
diff --git a/hw/exynos4210_gic.c b/hw/exynos4210_gic.c
index 807849c..bad6dde 100644
--- a/hw/exynos4210_gic.c
+++ b/hw/exynos4210_gic.c
@@ -23,7 +23,7 @@ 
 #include "hw/sysbus.h"
 #include "qemu-common.h"
 #include "hw/irq.h"
-#include "hw/exynos4210.h"
+#include "hw/arm/exynos4210.h"
 
 enum ExtGicId {
     EXT_GIC_ID_MDMA_LCD0 = 66,
diff --git a/hw/exynos4210_i2c.c b/hw/exynos4210_i2c.c
index 9e42875..196f889 100644
--- a/hw/exynos4210_i2c.c
+++ b/hw/exynos4210_i2c.c
@@ -22,7 +22,7 @@ 
 
 #include "qemu/timer.h"
 #include "hw/sysbus.h"
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 
 #ifndef EXYNOS4_I2C_DEBUG
 #define EXYNOS4_I2C_DEBUG                 0
diff --git a/hw/exynos4210_mct.c b/hw/exynos4210_mct.c
index 862c962..87ce75b 100644
--- a/hw/exynos4210_mct.c
+++ b/hw/exynos4210_mct.c
@@ -57,7 +57,7 @@ 
 #include "qemu-common.h"
 #include "hw/ptimer.h"
 
-#include "hw/exynos4210.h"
+#include "hw/arm/exynos4210.h"
 
 //#define DEBUG_MCT
 
diff --git a/hw/exynos4210_pwm.c b/hw/exynos4210_pwm.c
index 6d74cd4..185ccb9 100644
--- a/hw/exynos4210_pwm.c
+++ b/hw/exynos4210_pwm.c
@@ -25,7 +25,7 @@ 
 #include "qemu-common.h"
 #include "hw/ptimer.h"
 
-#include "hw/exynos4210.h"
+#include "hw/arm/exynos4210.h"
 
 //#define DEBUG_PWM
 
diff --git a/hw/exynos4210_rtc.c b/hw/exynos4210_rtc.c
index d170ca7..bceee44 100644
--- a/hw/exynos4210_rtc.c
+++ b/hw/exynos4210_rtc.c
@@ -34,7 +34,7 @@ 
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
 
-#include "hw/exynos4210.h"
+#include "hw/arm/exynos4210.h"
 
 #define DEBUG_RTC 0
 
diff --git a/hw/exynos4210_uart.c b/hw/exynos4210_uart.c
index 006f3d4..8b4e72c 100644
--- a/hw/exynos4210_uart.c
+++ b/hw/exynos4210_uart.c
@@ -23,7 +23,7 @@ 
 #include "sysemu/sysemu.h"
 #include "char/char.h"
 
-#include "hw/exynos4210.h"
+#include "hw/arm/exynos4210.h"
 
 #undef DEBUG_UART
 #undef DEBUG_UART_EXTEND
diff --git a/hw/exynos4_boards.c b/hw/exynos4_boards.c
index 473da34..74f110b 100644
--- a/hw/exynos4_boards.c
+++ b/hw/exynos4_boards.c
@@ -24,9 +24,9 @@ 
 #include "sysemu/sysemu.h"
 #include "hw/sysbus.h"
 #include "net/net.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/arm.h"
 #include "exec/address-spaces.h"
-#include "hw/exynos4210.h"
+#include "hw/arm/exynos4210.h"
 #include "hw/boards.h"
 
 #undef DEBUG
diff --git a/hw/fdc.c b/hw/fdc.c
index a4bb129..1ed874f 100644
--- a/hw/fdc.c
+++ b/hw/fdc.c
@@ -28,10 +28,10 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/fdc.h"
+#include "hw/block/fdc.h"
 #include "qemu/error-report.h"
 #include "qemu/timer.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/sysbus.h"
 #include "hw/qdev-addr.h"
 #include "sysemu/blockdev.h"
diff --git a/hw/fw_cfg.c b/hw/fw_cfg.c
index 63a1998..b830fd6 100644
--- a/hw/fw_cfg.c
+++ b/hw/fw_cfg.c
@@ -23,8 +23,8 @@ 
  */
 #include "hw/hw.h"
 #include "sysemu/sysemu.h"
-#include "hw/isa.h"
-#include "hw/fw_cfg.h"
+#include "hw/isa/isa.h"
+#include "hw/misc/fw_cfg.h"
 #include "hw/sysbus.h"
 #include "trace.h"
 #include "qemu/error-report.h"
diff --git a/hw/gt64xxx.c b/hw/gt64xxx.c
index c73a58a..bf088c0 100644
--- a/hw/gt64xxx.c
+++ b/hw/gt64xxx.c
@@ -23,7 +23,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/mips.h"
+#include "hw/mips/mips.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
 #include "hw/pc.h"
diff --git a/hw/gumstix.c b/hw/gumstix.c
index 8859b73..4d800c9 100644
--- a/hw/gumstix.c
+++ b/hw/gumstix.c
@@ -35,10 +35,10 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/pxa.h"
+#include "hw/arm/pxa.h"
 #include "net/net.h"
-#include "hw/flash.h"
-#include "hw/devices.h"
+#include "hw/block/flash.h"
+#include "hw/arm/devices.h"
 #include "hw/boards.h"
 #include "sysemu/blockdev.h"
 #include "exec/address-spaces.h"
diff --git a/hw/gus.c b/hw/gus.c
index d268224..e44704b 100644
--- a/hw/gus.c
+++ b/hw/gus.c
@@ -22,9 +22,9 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/audiodev.h"
+#include "hw/audio/audio.h"
 #include "audio/audio.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/gusemu.h"
 #include "hw/gustate.h"
 
diff --git a/hw/hd-geometry.c b/hw/hd-geometry.c
index c305143..6feb4f8 100644
--- a/hw/hd-geometry.c
+++ b/hw/hd-geometry.c
@@ -31,7 +31,7 @@ 
  */
 
 #include "block/block.h"
-#include "hw/block-common.h"
+#include "hw/block/block.h"
 #include "trace.h"
 
 struct partition {
diff --git a/hw/hid.c b/hw/hid.c
index 28b3474..5fbde98 100644
--- a/hw/hid.c
+++ b/hw/hid.c
@@ -25,7 +25,7 @@ 
 #include "hw/hw.h"
 #include "ui/console.h"
 #include "qemu/timer.h"
-#include "hw/hid.h"
+#include "hw/input/hid.h"
 
 #define HID_USAGE_ERROR_ROLLOVER        0x01
 #define HID_USAGE_POSTFAIL              0x02
diff --git a/hw/highbank.c b/hw/highbank.c
index a622224..f8183b7 100644
--- a/hw/highbank.c
+++ b/hw/highbank.c
@@ -18,8 +18,8 @@ 
  */
 
 #include "hw/sysbus.h"
-#include "hw/arm-misc.h"
-#include "hw/devices.h"
+#include "hw/arm/arm.h"
+#include "hw/arm/devices.h"
 #include "hw/loader.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/hpet.c b/hw/hpet.c
index 6bfbf3a..154a818 100644
--- a/hw/hpet.c
+++ b/hw/hpet.c
@@ -28,10 +28,10 @@ 
 #include "hw/pc.h"
 #include "ui/console.h"
 #include "qemu/timer.h"
-#include "hw/hpet_emul.h"
+#include "hw/timer/hpet.h"
 #include "hw/sysbus.h"
-#include "hw/mc146818rtc.h"
-#include "hw/i8254.h"
+#include "hw/timer/mc146818rtc.h"
+#include "hw/timer/i8254.h"
 
 //#define HPET_DEBUG
 #ifdef HPET_DEBUG
diff --git a/hw/i2c.c b/hw/i2c.c
index ad361cc..0c4fc1d 100644
--- a/hw/i2c.c
+++ b/hw/i2c.c
@@ -7,7 +7,7 @@ 
  * This code is licensed under the LGPL.
  */
 
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 
 struct i2c_bus
 {
diff --git a/hw/i82374.c b/hw/i82374.c
index 22115e4..835639d 100644
--- a/hw/i82374.c
+++ b/hw/i82374.c
@@ -22,7 +22,7 @@ 
  * THE SOFTWARE.
  */
 
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 
 //#define DEBUG_I82374
 
diff --git a/hw/i82378.c b/hw/i82378.c
index 6f8c48b..756ec63 100644
--- a/hw/i82378.c
+++ b/hw/i82378.c
@@ -19,8 +19,8 @@ 
 
 #include "hw/pci/pci.h"
 #include "hw/pc.h"
-#include "hw/i8254.h"
-#include "hw/pcspk.h"
+#include "hw/timer/i8254.h"
+#include "hw/audio/pcspk.h"
 
 //#define DEBUG_I82378
 
diff --git a/hw/i8254.c b/hw/i8254.c
index 67bfc6a..a4ce9ef 100644
--- a/hw/i8254.c
+++ b/hw/i8254.c
@@ -23,10 +23,10 @@ 
  */
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "qemu/timer.h"
-#include "hw/i8254.h"
-#include "hw/i8254_internal.h"
+#include "hw/timer/i8254.h"
+#include "hw/timer/i8254_internal.h"
 
 //#define DEBUG_PIT
 
diff --git a/hw/i8254_common.c b/hw/i8254_common.c
index c6c0c80..1e8b46d 100644
--- a/hw/i8254_common.c
+++ b/hw/i8254_common.c
@@ -24,10 +24,10 @@ 
  */
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "qemu/timer.h"
-#include "hw/i8254.h"
-#include "hw/i8254_internal.h"
+#include "hw/timer/i8254.h"
+#include "hw/timer/i8254_internal.h"
 
 /* val must be 0 or 1 */
 void pit_set_gate(ISADevice *dev, int channel, int val)
diff --git a/hw/i8259.c b/hw/i8259.c
index 1d82752..53126d4 100644
--- a/hw/i8259.c
+++ b/hw/i8259.c
@@ -23,10 +23,10 @@ 
  */
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "monitor/monitor.h"
 #include "qemu/timer.h"
-#include "hw/i8259_internal.h"
+#include "hw/isa/i8259_internal.h"
 
 /* debug PIC */
 //#define DEBUG_PIC
diff --git a/hw/i8259_common.c b/hw/i8259_common.c
index 98052db..ea99ea5 100644
--- a/hw/i8259_common.c
+++ b/hw/i8259_common.c
@@ -23,7 +23,7 @@ 
  * THE SOFTWARE.
  */
 #include "hw/pc.h"
-#include "hw/i8259_internal.h"
+#include "hw/isa/i8259_internal.h"
 
 void pic_reset_common(PICCommonState *s)
 {
diff --git a/hw/i82801b11.c b/hw/i82801b11.c
index 992095c..9d1b981 100644
--- a/hw/i82801b11.c
+++ b/hw/i82801b11.c
@@ -42,7 +42,7 @@ 
  */
 
 #include "hw/pci/pci.h"
-#include "hw/ich9.h"
+#include "hw/i386/ich9.h"
 
 
 /*****************************************************************************/
diff --git a/hw/ide/atapi.c b/hw/ide/atapi.c
index 861fd2b..05e60b1 100644
--- a/hw/ide/atapi.c
+++ b/hw/ide/atapi.c
@@ -24,7 +24,7 @@ 
  */
 
 #include "hw/ide/internal.h"
-#include "hw/scsi.h"
+#include "hw/scsi/scsi.h"
 
 static void ide_atapi_cmd_read_dma_cb(void *opaque, int ret);
 
diff --git a/hw/ide/cmd646.c b/hw/ide/cmd646.c
index 745ef94..f510b62 100644
--- a/hw/ide/cmd646.c
+++ b/hw/ide/cmd646.c
@@ -25,7 +25,7 @@ 
 #include <hw/hw.h>
 #include <hw/pc.h>
 #include <hw/pci/pci.h>
-#include <hw/isa.h>
+#include <hw/isa/isa.h>
 #include "block/block.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/dma.h"
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 3743dc3..11678a5 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -25,12 +25,12 @@ 
 #include <hw/hw.h>
 #include <hw/pc.h>
 #include <hw/pci/pci.h>
-#include <hw/isa.h>
+#include <hw/isa/isa.h>
 #include "qemu/error-report.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/dma.h"
-#include "hw/block-common.h"
+#include "hw/block/block.h"
 #include "sysemu/blockdev.h"
 
 #include <hw/ide/internal.h>
diff --git a/hw/ide/ich.c b/hw/ide/ich.c
index cc30adc..321b389 100644
--- a/hw/ide/ich.c
+++ b/hw/ide/ich.c
@@ -64,7 +64,7 @@ 
 #include <hw/pci/msi.h>
 #include <hw/pc.h>
 #include <hw/pci/pci.h>
-#include <hw/isa.h>
+#include <hw/isa/isa.h>
 #include "block/block.h"
 #include "sysemu/dma.h"
 
diff --git a/hw/ide/internal.h b/hw/ide/internal.h
index d80360e..9a6773d 100644
--- a/hw/ide/internal.h
+++ b/hw/ide/internal.h
@@ -7,12 +7,12 @@ 
  * non-internal declarations are in hw/ide.h
  */
 #include <hw/ide.h>
-#include <hw/isa.h>
+#include <hw/isa/isa.h>
 #include "exec/iorange.h"
 #include "sysemu/dma.h"
 #include "sysemu/sysemu.h"
-#include "hw/block-common.h"
-#include "hw/scsi-defs.h"
+#include "hw/block/block.h"
+#include "hw/scsi/scsi-defs.h"
 
 /* debug IDE devices */
 //#define DEBUG_IDE
diff --git a/hw/ide/isa.c b/hw/ide/isa.c
index fb7bb82..ba7f81c 100644
--- a/hw/ide/isa.c
+++ b/hw/ide/isa.c
@@ -24,7 +24,7 @@ 
  */
 #include <hw/hw.h>
 #include <hw/pc.h>
-#include <hw/isa.h>
+#include <hw/isa/isa.h>
 #include "block/block.h"
 #include "sysemu/dma.h"
 
diff --git a/hw/ide/macio.c b/hw/ide/macio.c
index 375c46f..64b2406 100644
--- a/hw/ide/macio.c
+++ b/hw/ide/macio.c
@@ -24,7 +24,7 @@ 
  */
 #include "hw/hw.h"
 #include "hw/ppc/mac.h"
-#include "hw/mac_dbdma.h"
+#include "hw/ppc/mac_dbdma.h"
 #include "block/block.h"
 #include "sysemu/dma.h"
 
diff --git a/hw/ide/microdrive.c b/hw/ide/microdrive.c
index 642774e..bb5c864 100644
--- a/hw/ide/microdrive.c
+++ b/hw/ide/microdrive.c
@@ -24,7 +24,7 @@ 
  */
 #include <hw/hw.h>
 #include <hw/pc.h>
-#include <hw/pcmcia.h>
+#include <hw/misc/pcmcia.h>
 #include "block/block.h"
 #include "sysemu/dma.h"
 
diff --git a/hw/ide/pci.c b/hw/ide/pci.c
index 59fd539..b15d261 100644
--- a/hw/ide/pci.c
+++ b/hw/ide/pci.c
@@ -25,7 +25,7 @@ 
 #include <hw/hw.h>
 #include <hw/pc.h>
 #include <hw/pci/pci.h>
-#include <hw/isa.h>
+#include <hw/isa/isa.h>
 #include "block/block.h"
 #include "sysemu/dma.h"
 
diff --git a/hw/ide/piix.c b/hw/ide/piix.c
index 4d3e822..33171a0 100644
--- a/hw/ide/piix.c
+++ b/hw/ide/piix.c
@@ -26,7 +26,7 @@ 
 #include <hw/hw.h>
 #include <hw/pc.h>
 #include <hw/pci/pci.h>
-#include <hw/isa.h>
+#include <hw/isa/isa.h>
 #include "sysemu/blockdev.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/dma.h"
diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
index c436b38..6b63d2d 100644
--- a/hw/ide/qdev.c
+++ b/hw/ide/qdev.c
@@ -21,7 +21,7 @@ 
 #include "qemu/error-report.h"
 #include <hw/ide/internal.h>
 #include "sysemu/blockdev.h"
-#include "hw/block-common.h"
+#include "hw/block/block.h"
 #include "sysemu/sysemu.h"
 
 /* --------------------------------- */
diff --git a/hw/ide/via.c b/hw/ide/via.c
index f40c1ad..df9c716 100644
--- a/hw/ide/via.c
+++ b/hw/ide/via.c
@@ -26,7 +26,7 @@ 
 #include <hw/hw.h>
 #include <hw/pc.h>
 #include <hw/pci/pci.h>
-#include <hw/isa.h>
+#include <hw/isa/isa.h>
 #include "block/block.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/dma.h"
diff --git a/hw/imx_ccm.c b/hw/imx_ccm.c
index ad7aad3..c153a24 100644
--- a/hw/imx_ccm.c
+++ b/hw/imx_ccm.c
@@ -13,7 +13,7 @@ 
 #include "hw/hw.h"
 #include "hw/sysbus.h"
 #include "sysemu/sysemu.h"
-#include "hw/imx.h"
+#include "hw/arm/imx.h"
 
 #define CKIH_FREQ 26000000 /* 26MHz crystal input */
 #define CKIL_FREQ    32768 /* nominal 32khz clock */
diff --git a/hw/imx_serial.c b/hw/imx_serial.c
index 746723c..d7ec209 100644
--- a/hw/imx_serial.c
+++ b/hw/imx_serial.c
@@ -21,7 +21,7 @@ 
 #include "hw/sysbus.h"
 #include "sysemu/sysemu.h"
 #include "char/char.h"
-#include "hw/imx.h"
+#include "hw/arm/imx.h"
 
 //#define DEBUG_SERIAL 1
 #ifdef DEBUG_SERIAL
diff --git a/hw/imx_timer.c b/hw/imx_timer.c
index a8c31114..03197e3 100644
--- a/hw/imx_timer.c
+++ b/hw/imx_timer.c
@@ -15,7 +15,7 @@ 
 #include "qemu/timer.h"
 #include "hw/ptimer.h"
 #include "hw/sysbus.h"
-#include "hw/imx.h"
+#include "hw/arm/imx.h"
 
 //#define DEBUG_TIMER 1
 #ifdef DEBUG_TIMER
diff --git a/hw/integratorcp.c b/hw/integratorcp.c
index e0ba327..007ae1d 100644
--- a/hw/integratorcp.c
+++ b/hw/integratorcp.c
@@ -8,9 +8,9 @@ 
  */
 
 #include "hw/sysbus.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "hw/boards.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/arm.h"
 #include "net/net.h"
 #include "exec/address-spaces.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/intel-hda.c b/hw/intel-hda.c
index 728b60f..68201cd 100644
--- a/hw/intel-hda.c
+++ b/hw/intel-hda.c
@@ -21,7 +21,7 @@ 
 #include "hw/pci/pci.h"
 #include "hw/pci/msi.h"
 #include "qemu/timer.h"
-#include "hw/audiodev.h"
+#include "hw/audio/audio.h"
 #include "hw/intel-hda.h"
 #include "hw/intel-hda-defs.h"
 #include "sysemu/dma.h"
diff --git a/hw/ioapic.c b/hw/ioapic.c
index 78629fa..6da2416 100644
--- a/hw/ioapic.c
+++ b/hw/ioapic.c
@@ -22,9 +22,9 @@ 
 
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/apic.h"
-#include "hw/ioapic.h"
-#include "hw/ioapic_internal.h"
+#include "hw/i386/apic.h"
+#include "hw/i386/ioapic.h"
+#include "hw/i386/ioapic_internal.h"
 
 //#define DEBUG_IOAPIC
 
diff --git a/hw/ioapic_common.c b/hw/ioapic_common.c
index d4aff29..42c7adc 100644
--- a/hw/ioapic_common.c
+++ b/hw/ioapic_common.c
@@ -19,8 +19,8 @@ 
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "hw/ioapic.h"
-#include "hw/ioapic_internal.h"
+#include "hw/i386/ioapic.h"
+#include "hw/i386/ioapic_internal.h"
 #include "hw/sysbus.h"
 
 void ioapic_reset_common(DeviceState *dev)
diff --git a/hw/isa-bus.c b/hw/isa-bus.c
index a636ec6..b4bdedc 100644
--- a/hw/isa-bus.c
+++ b/hw/isa-bus.c
@@ -20,7 +20,7 @@ 
 #include "monitor/monitor.h"
 #include "hw/sysbus.h"
 #include "sysemu/sysemu.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "exec/address-spaces.h"
 
 static ISABus *isabus;
diff --git a/hw/isa_mmio.c b/hw/isa_mmio.c
index a7860e7..d4dbf13 100644
--- a/hw/isa_mmio.c
+++ b/hw/isa_mmio.c
@@ -23,7 +23,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "exec/address-spaces.h"
 
 static void isa_mmio_writeb (void *opaque, hwaddr addr,
diff --git a/hw/kvm/apic.c b/hw/kvm/apic.c
index d994ea7..c6ff982 100644
--- a/hw/kvm/apic.c
+++ b/hw/kvm/apic.c
@@ -9,7 +9,7 @@ 
  * This work is licensed under the terms of the GNU GPL version 2.
  * See the COPYING file in the top-level directory.
  */
-#include "hw/apic_internal.h"
+#include "hw/i386/apic_internal.h"
 #include "hw/pci/msi.h"
 #include "sysemu/kvm.h"
 
diff --git a/hw/kvm/i8254.c b/hw/kvm/i8254.c
index 04ad649..da90711 100644
--- a/hw/kvm/i8254.c
+++ b/hw/kvm/i8254.c
@@ -24,8 +24,8 @@ 
  */
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
-#include "hw/i8254.h"
-#include "hw/i8254_internal.h"
+#include "hw/timer/i8254.h"
+#include "hw/timer/i8254_internal.h"
 #include "sysemu/kvm.h"
 
 #define KVM_PIT_REINJECT_BIT 0
diff --git a/hw/kvm/i8259.c b/hw/kvm/i8259.c
index 5ae8b68..ea77be8 100644
--- a/hw/kvm/i8259.c
+++ b/hw/kvm/i8259.c
@@ -9,8 +9,8 @@ 
  * This work is licensed under the terms of the GNU GPL version 2.
  * See the COPYING file in the top-level directory.
  */
-#include "hw/i8259_internal.h"
-#include "hw/apic_internal.h"
+#include "hw/isa/i8259_internal.h"
+#include "hw/i386/apic_internal.h"
 #include "sysemu/kvm.h"
 
 static void kvm_pic_get(PICCommonState *s)
diff --git a/hw/kvm/ioapic.c b/hw/kvm/ioapic.c
index 23877d4..2016c6c 100644
--- a/hw/kvm/ioapic.c
+++ b/hw/kvm/ioapic.c
@@ -11,8 +11,8 @@ 
  */
 
 #include "hw/pc.h"
-#include "hw/ioapic_internal.h"
-#include "hw/apic_internal.h"
+#include "hw/i386/ioapic_internal.h"
+#include "hw/i386/apic_internal.h"
 #include "sysemu/kvm.h"
 
 /* PC Utility function */
diff --git a/hw/kvmvapic.c b/hw/kvmvapic.c
index 64baab1..8b82064 100644
--- a/hw/kvmvapic.c
+++ b/hw/kvmvapic.c
@@ -11,7 +11,7 @@ 
 #include "sysemu/sysemu.h"
 #include "sysemu/cpus.h"
 #include "sysemu/kvm.h"
-#include "hw/apic_internal.h"
+#include "hw/i386/apic_internal.h"
 
 #define APIC_DEFAULT_ADDRESS    0xfee00000
 
diff --git a/hw/kzm.c b/hw/kzm.c
index ec50a31..eb9362e 100644
--- a/hw/kzm.c
+++ b/hw/kzm.c
@@ -16,13 +16,13 @@ 
 #include "hw/sysbus.h"
 #include "exec/address-spaces.h"
 #include "hw/hw.h"
-#include "hw/arm-misc.h"
-#include "hw/devices.h"
+#include "hw/arm/arm.h"
+#include "hw/arm/devices.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
-#include "hw/serial.h"
-#include "hw/imx.h"
+#include "hw/char/serial.h"
+#include "hw/arm/imx.h"
 
     /* Memory map for Kzm Emulation Baseboard:
      * 0x00000000-0x00003fff 16k secure ROM       IGNORED
diff --git a/hw/lan9118.c b/hw/lan9118.c
index 403fb86..04cf267 100644
--- a/hw/lan9118.c
+++ b/hw/lan9118.c
@@ -12,7 +12,7 @@ 
 
 #include "hw/sysbus.h"
 #include "net/net.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "sysemu/sysemu.h"
 #include "hw/ptimer.h"
 /* For crc32 */
diff --git a/hw/lance.c b/hw/lance.c
index acfffae..0f4e808 100644
--- a/hw/lance.c
+++ b/hw/lance.c
@@ -39,7 +39,7 @@ 
 #include "net/net.h"
 #include "qemu/timer.h"
 #include "qemu/sockets.h"
-#include "hw/sun4m.h"
+#include "hw/sparc/sun4m.h"
 #include "hw/pcnet.h"
 #include "trace.h"
 
diff --git a/hw/lm32_boards.c b/hw/lm32_boards.c
index 1ce466a..bafc0dd 100644
--- a/hw/lm32_boards.c
+++ b/hw/lm32_boards.c
@@ -19,8 +19,8 @@ 
 
 #include "hw/sysbus.h"
 #include "hw/hw.h"
-#include "hw/flash.h"
-#include "hw/devices.h"
+#include "hw/block/flash.h"
+#include "hw/arm/devices.h"
 #include "hw/boards.h"
 #include "hw/loader.h"
 #include "sysemu/blockdev.h"
diff --git a/hw/lm32_juart.c b/hw/lm32_juart.c
index 472e9c2..e0eee7f 100644
--- a/hw/lm32_juart.c
+++ b/hw/lm32_juart.c
@@ -22,7 +22,7 @@ 
 #include "trace.h"
 #include "char/char.h"
 
-#include "hw/lm32_juart.h"
+#include "hw/char/lm32_juart.h"
 
 enum {
     LM32_JUART_MIN_SAVE_VERSION = 0,
diff --git a/hw/lm32_pic.c b/hw/lm32_pic.c
index d17c310..25ce9bc 100644
--- a/hw/lm32_pic.c
+++ b/hw/lm32_pic.c
@@ -24,7 +24,7 @@ 
 #include "monitor/monitor.h"
 #include "hw/sysbus.h"
 #include "trace.h"
-#include "hw/lm32_pic.h"
+#include "hw/lm32/lm32_pic.h"
 
 struct LM32PicState {
     SysBusDevice busdev;
diff --git a/hw/lm832x.c b/hw/lm832x.c
index a064dfd..bacbeb2 100644
--- a/hw/lm832x.c
+++ b/hw/lm832x.c
@@ -19,7 +19,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 #include "qemu/timer.h"
 #include "ui/console.h"
 
diff --git a/hw/loader.c b/hw/loader.c
index d2a974b..3174d39 100644
--- a/hw/loader.c
+++ b/hw/loader.c
@@ -48,7 +48,7 @@ 
 #include "sysemu/sysemu.h"
 #include "hw/uboot_image.h"
 #include "hw/loader.h"
-#include "hw/fw_cfg.h"
+#include "hw/misc/fw_cfg.h"
 #include "exec/memory.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/lpc_ich9.c b/hw/lpc_ich9.c
index e55d66a..bb4ba61 100644
--- a/hw/lpc_ich9.c
+++ b/hw/lpc_ich9.c
@@ -30,18 +30,18 @@ 
 #include "qemu-common.h"
 #include "hw/hw.h"
 #include "qemu/range.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/sysbus.h"
 #include "hw/pc.h"
-#include "hw/apm.h"
-#include "hw/ioapic.h"
+#include "hw/isa/apm.h"
+#include "hw/i386/ioapic.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pcie_host.h"
 #include "hw/pci/pci_bridge.h"
-#include "hw/ich9.h"
-#include "hw/acpi.h"
-#include "hw/acpi_ich9.h"
-#include "hw/pam.h"
+#include "hw/i386/ich9.h"
+#include "hw/acpi/acpi.h"
+#include "hw/acpi/ich9.h"
+#include "hw/pci/pam.h"
 #include "hw/pci/pci_bus.h"
 #include "exec/address-spaces.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/lsi53c895a.c b/hw/lsi53c895a.c
index 5a8bf4d..c601b29 100644
--- a/hw/lsi53c895a.c
+++ b/hw/lsi53c895a.c
@@ -14,7 +14,7 @@ 
 
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
-#include "hw/scsi.h"
+#include "hw/scsi/scsi.h"
 #include "sysemu/dma.h"
 
 //#define DEBUG_LSI
diff --git a/hw/m25p80.c b/hw/m25p80.c
index 574cae9..b4dd886 100644
--- a/hw/m25p80.c
+++ b/hw/m25p80.c
@@ -24,7 +24,7 @@ 
 #include "hw/hw.h"
 #include "sysemu/blockdev.h"
 #include "hw/ssi.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 
 #ifdef M25P80_ERR_DEBUG
 #define DB_PRINT(...) do { \
diff --git a/hw/m48t59.c b/hw/m48t59.c
index 39a9d80..5019e06 100644
--- a/hw/m48t59.c
+++ b/hw/m48t59.c
@@ -22,11 +22,11 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/nvram.h"
+#include "hw/timer/m48t59.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
 #include "hw/sysbus.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "exec/address-spaces.h"
 
 //#define DEBUG_NVRAM
diff --git a/hw/mac_dbdma.c b/hw/mac_dbdma.c
index a151470..1443711 100644
--- a/hw/mac_dbdma.c
+++ b/hw/mac_dbdma.c
@@ -37,8 +37,8 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/isa.h"
-#include "hw/mac_dbdma.h"
+#include "hw/isa/isa.h"
+#include "hw/ppc/mac_dbdma.h"
 #include "qemu/main-loop.h"
 
 /* debug DBDMA */
diff --git a/hw/mac_nvram.c b/hw/mac_nvram.c
index ed32bde..5223330 100644
--- a/hw/mac_nvram.c
+++ b/hw/mac_nvram.c
@@ -23,7 +23,7 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/firmware_abi.h"
+#include "hw/sparc/firmware_abi.h"
 #include "sysemu/sysemu.h"
 #include "hw/ppc/mac.h"
 
diff --git a/hw/macio.c b/hw/macio.c
index 792fa39..1cc89eb 100644
--- a/hw/macio.c
+++ b/hw/macio.c
@@ -25,8 +25,8 @@ 
 #include "hw/hw.h"
 #include "hw/ppc/mac.h"
 #include "hw/pci/pci.h"
-#include "hw/mac_dbdma.h"
-#include "hw/escc.h"
+#include "hw/ppc/mac_dbdma.h"
+#include "hw/char/escc.h"
 
 #define TYPE_MACIO "macio"
 #define MACIO(obj) OBJECT_CHECK(MacIOState, (obj), TYPE_MACIO)
diff --git a/hw/mainstone.c b/hw/mainstone.c
index aea908f..7452f94 100644
--- a/hw/mainstone.c
+++ b/hw/mainstone.c
@@ -12,12 +12,12 @@ 
  * GNU GPL, version 2 or (at your option) any later version.
  */
 #include "hw/hw.h"
-#include "hw/pxa.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/pxa.h"
+#include "hw/arm/arm.h"
 #include "net/net.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "hw/boards.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "sysemu/blockdev.h"
 #include "hw/sysbus.h"
 #include "exec/address-spaces.h"
diff --git a/hw/marvell_88w8618_audio.c b/hw/marvell_88w8618_audio.c
index e042046..f9b68fd 100644
--- a/hw/marvell_88w8618_audio.c
+++ b/hw/marvell_88w8618_audio.c
@@ -11,7 +11,7 @@ 
  */
 #include "hw/sysbus.h"
 #include "hw/hw.h"
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 #include "hw/sysbus.h"
 #include "audio/audio.h"
 
diff --git a/hw/max7310.c b/hw/max7310.c
index e5cb810..59b2877 100644
--- a/hw/max7310.c
+++ b/hw/max7310.c
@@ -7,7 +7,7 @@ 
  * This file is licensed under GNU GPL.
  */
 
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 
 typedef struct {
     I2CSlave i2c;
diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
index a2119ad..69e6844 100644
--- a/hw/mc146818rtc.c
+++ b/hw/mc146818rtc.c
@@ -24,11 +24,11 @@ 
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
-#include "hw/mc146818rtc.h"
+#include "hw/timer/mc146818rtc.h"
 #include "qapi/visitor.h"
 
 #ifdef TARGET_I386
-#include "hw/apic.h"
+#include "hw/i386/apic.h"
 #endif
 
 //#define DEBUG_CMOS
diff --git a/hw/mcf5206.c b/hw/mcf5206.c
index 5bf9ae0..b29ad3c 100644
--- a/hw/mcf5206.c
+++ b/hw/mcf5206.c
@@ -6,7 +6,7 @@ 
  * This code is licensed under the GPL
  */
 #include "hw/hw.h"
-#include "hw/mcf.h"
+#include "hw/m68k/mcf.h"
 #include "qemu/timer.h"
 #include "hw/ptimer.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/mcf5208.c b/hw/mcf5208.c
index f7d0102..ed4c4b0 100644
--- a/hw/mcf5208.c
+++ b/hw/mcf5208.c
@@ -6,7 +6,7 @@ 
  * This code is licensed under the GPL
  */
 #include "hw/hw.h"
-#include "hw/mcf.h"
+#include "hw/m68k/mcf.h"
 #include "qemu/timer.h"
 #include "hw/ptimer.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/mcf_fec.c b/hw/mcf_fec.c
index 0227bd8..9b68052 100644
--- a/hw/mcf_fec.c
+++ b/hw/mcf_fec.c
@@ -7,7 +7,7 @@ 
  */
 #include "hw/hw.h"
 #include "net/net.h"
-#include "hw/mcf.h"
+#include "hw/m68k/mcf.h"
 /* For crc32 */
 #include <zlib.h>
 #include "exec/address-spaces.h"
diff --git a/hw/mcf_intc.c b/hw/mcf_intc.c
index 83e9590..6259445 100644
--- a/hw/mcf_intc.c
+++ b/hw/mcf_intc.c
@@ -6,7 +6,7 @@ 
  * This code is licensed under the GPL
  */
 #include "hw/hw.h"
-#include "hw/mcf.h"
+#include "hw/m68k/mcf.h"
 #include "exec/address-spaces.h"
 
 typedef struct {
diff --git a/hw/mcf_uart.c b/hw/mcf_uart.c
index aacf0f0..86045eb 100644
--- a/hw/mcf_uart.c
+++ b/hw/mcf_uart.c
@@ -6,7 +6,7 @@ 
  * This code is licensed under the GPL
  */
 #include "hw/hw.h"
-#include "hw/mcf.h"
+#include "hw/m68k/mcf.h"
 #include "char/char.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/megasas.c b/hw/megasas.c
index 9b815d4..cfa36c6 100644
--- a/hw/megasas.c
+++ b/hw/megasas.c
@@ -23,8 +23,8 @@ 
 #include "sysemu/dma.h"
 #include "hw/pci/msix.h"
 #include "qemu/iov.h"
-#include "hw/scsi.h"
-#include "hw/scsi-defs.h"
+#include "hw/scsi/scsi.h"
+#include "hw/scsi/scsi-defs.h"
 #include "trace.h"
 
 #include "hw/mfi.h"
diff --git a/hw/milkymist-softusb.c b/hw/milkymist-softusb.c
index d911686..b46b8ef 100644
--- a/hw/milkymist-softusb.c
+++ b/hw/milkymist-softusb.c
@@ -25,7 +25,7 @@ 
 #include "hw/sysbus.h"
 #include "trace.h"
 #include "ui/console.h"
-#include "hw/hid.h"
+#include "hw/input/hid.h"
 #include "qemu/error-report.h"
 
 enum {
diff --git a/hw/milkymist.c b/hw/milkymist.c
index fd36de5..4cd2251 100644
--- a/hw/milkymist.c
+++ b/hw/milkymist.c
@@ -19,9 +19,9 @@ 
 
 #include "hw/sysbus.h"
 #include "hw/hw.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "sysemu/sysemu.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "hw/boards.h"
 #include "hw/loader.h"
 #include "elf.h"
diff --git a/hw/mips_addr.c b/hw/mips_addr.c
index cddc25c..99488f1 100644
--- a/hw/mips_addr.c
+++ b/hw/mips_addr.c
@@ -21,7 +21,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/mips_cpudevs.h"
+#include "hw/mips/cpudevs.h"
 
 uint64_t cpu_mips_kseg0_to_phys(void *opaque, uint64_t addr)
 {
diff --git a/hw/mips_fulong2e.c b/hw/mips_fulong2e.c
index 766aa9d..2973de8 100644
--- a/hw/mips_fulong2e.c
+++ b/hw/mips_fulong2e.c
@@ -20,27 +20,27 @@ 
 
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/serial.h"
-#include "hw/fdc.h"
+#include "hw/char/serial.h"
+#include "hw/block/fdc.h"
 #include "net/net.h"
 #include "hw/boards.h"
-#include "hw/smbus.h"
+#include "hw/i2c/smbus.h"
 #include "block/block.h"
-#include "hw/flash.h"
-#include "hw/mips.h"
-#include "hw/mips_cpudevs.h"
+#include "hw/block/flash.h"
+#include "hw/mips/mips.h"
+#include "hw/mips/cpudevs.h"
 #include "hw/pci/pci.h"
 #include "char/char.h"
 #include "sysemu/sysemu.h"
 #include "audio/audio.h"
 #include "qemu/log.h"
 #include "hw/loader.h"
-#include "hw/mips-bios.h"
+#include "hw/mips/bios.h"
 #include "hw/ide.h"
 #include "elf.h"
-#include "hw/vt82c686.h"
-#include "hw/mc146818rtc.h"
-#include "hw/i8254.h"
+#include "hw/isa/vt82c686.h"
+#include "hw/timer/mc146818rtc.h"
+#include "hw/timer/i8254.h"
 #include "sysemu/blockdev.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/mips_int.c b/hw/mips_int.c
index ddd3b1b..a03f32a 100644
--- a/hw/mips_int.c
+++ b/hw/mips_int.c
@@ -21,7 +21,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/mips_cpudevs.h"
+#include "hw/mips/cpudevs.h"
 #include "cpu.h"
 
 static void cpu_mips_irq_request(void *opaque, int irq, int level)
diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c
index daeb985..6c76243 100644
--- a/hw/mips_jazz.c
+++ b/hw/mips_jazz.c
@@ -23,22 +23,22 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/mips.h"
-#include "hw/mips_cpudevs.h"
+#include "hw/mips/mips.h"
+#include "hw/mips/cpudevs.h"
 #include "hw/pc.h"
-#include "hw/serial.h"
-#include "hw/isa.h"
-#include "hw/fdc.h"
+#include "hw/char/serial.h"
+#include "hw/isa/isa.h"
+#include "hw/block/fdc.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/arch_init.h"
 #include "hw/boards.h"
 #include "net/net.h"
-#include "hw/esp.h"
-#include "hw/mips-bios.h"
+#include "hw/scsi/esp.h"
+#include "hw/mips/bios.h"
 #include "hw/loader.h"
-#include "hw/mc146818rtc.h"
-#include "hw/i8254.h"
-#include "hw/pcspk.h"
+#include "hw/timer/mc146818rtc.h"
+#include "hw/timer/i8254.h"
+#include "hw/audio/pcspk.h"
 #include "sysemu/blockdev.h"
 #include "hw/sysbus.h"
 #include "exec/address-spaces.h"
diff --git a/hw/mips_malta.c b/hw/mips_malta.c
index 9a67dce..34c2a9b 100644
--- a/hw/mips_malta.c
+++ b/hw/mips_malta.c
@@ -24,27 +24,27 @@ 
 
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/serial.h"
-#include "hw/fdc.h"
+#include "hw/char/serial.h"
+#include "hw/block/fdc.h"
 #include "net/net.h"
 #include "hw/boards.h"
-#include "hw/smbus.h"
+#include "hw/i2c/smbus.h"
 #include "block/block.h"
-#include "hw/flash.h"
-#include "hw/mips.h"
-#include "hw/mips_cpudevs.h"
+#include "hw/block/flash.h"
+#include "hw/mips/mips.h"
+#include "hw/mips/cpudevs.h"
 #include "hw/pci/pci.h"
 #include "char/char.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/arch_init.h"
 #include "hw/boards.h"
 #include "qemu/log.h"
-#include "hw/mips-bios.h"
+#include "hw/mips/bios.h"
 #include "hw/ide.h"
 #include "hw/loader.h"
 #include "elf.h"
-#include "hw/mc146818rtc.h"
-#include "hw/i8254.h"
+#include "hw/timer/mc146818rtc.h"
+#include "hw/timer/i8254.h"
 #include "sysemu/blockdev.h"
 #include "exec/address-spaces.h"
 #include "hw/sysbus.h"             /* SysBusDevice */
diff --git a/hw/mips_mipssim.c b/hw/mips_mipssim.c
index 4935c78..d1681ec 100644
--- a/hw/mips_mipssim.c
+++ b/hw/mips_mipssim.c
@@ -25,14 +25,14 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/mips.h"
-#include "hw/mips_cpudevs.h"
-#include "hw/serial.h"
-#include "hw/isa.h"
+#include "hw/mips/mips.h"
+#include "hw/mips/cpudevs.h"
+#include "hw/char/serial.h"
+#include "hw/isa/isa.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
-#include "hw/mips-bios.h"
+#include "hw/mips/bios.h"
 #include "hw/loader.h"
 #include "elf.h"
 #include "hw/sysbus.h"
diff --git a/hw/mips_r4k.c b/hw/mips_r4k.c
index 539a562..27c78dd 100644
--- a/hw/mips_r4k.c
+++ b/hw/mips_r4k.c
@@ -8,22 +8,22 @@ 
  * the standard PC ISA addresses.
 */
 #include "hw/hw.h"
-#include "hw/mips.h"
-#include "hw/mips_cpudevs.h"
+#include "hw/mips/mips.h"
+#include "hw/mips/cpudevs.h"
 #include "hw/pc.h"
-#include "hw/serial.h"
-#include "hw/isa.h"
+#include "hw/char/serial.h"
+#include "hw/isa/isa.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "qemu/log.h"
-#include "hw/mips-bios.h"
+#include "hw/mips/bios.h"
 #include "hw/ide.h"
 #include "hw/loader.h"
 #include "elf.h"
-#include "hw/mc146818rtc.h"
-#include "hw/i8254.h"
+#include "hw/timer/mc146818rtc.h"
+#include "hw/timer/i8254.h"
 #include "sysemu/blockdev.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/mips_timer.c b/hw/mips_timer.c
index 9ad13f3..e0266bf 100644
--- a/hw/mips_timer.c
+++ b/hw/mips_timer.c
@@ -21,7 +21,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/mips_cpudevs.h"
+#include "hw/mips/cpudevs.h"
 #include "qemu/timer.h"
 
 #define TIMER_FREQ	100 * 1000 * 1000
diff --git a/hw/multiboot.c b/hw/multiboot.c
index 3cb228f..2e75cb8 100644
--- a/hw/multiboot.c
+++ b/hw/multiboot.c
@@ -23,7 +23,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/fw_cfg.h"
+#include "hw/misc/fw_cfg.h"
 #include "hw/multiboot.h"
 #include "hw/loader.h"
 #include "elf.h"
diff --git a/hw/musicpal.c b/hw/musicpal.c
index a37dbd7..1338804 100644
--- a/hw/musicpal.c
+++ b/hw/musicpal.c
@@ -10,18 +10,18 @@ 
  */
 
 #include "hw/sysbus.h"
-#include "hw/arm-misc.h"
-#include "hw/devices.h"
+#include "hw/arm/arm.h"
+#include "hw/arm/devices.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
-#include "hw/serial.h"
+#include "hw/char/serial.h"
 #include "qemu/timer.h"
 #include "hw/ptimer.h"
 #include "block/block.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "ui/console.h"
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 #include "sysemu/blockdev.h"
 #include "exec/address-spaces.h"
 #include "ui/pixel_ops.h"
diff --git a/hw/nand.c b/hw/nand.c
index 4176272..5307a0b 100644
--- a/hw/nand.c
+++ b/hw/nand.c
@@ -19,7 +19,7 @@ 
 #ifndef NAND_IO
 
 # include "hw/hw.h"
-# include "hw/flash.h"
+# include "hw/block/flash.h"
 # include "sysemu/blockdev.h"
 # include "hw/sysbus.h"
 #include "qemu/error-report.h"
diff --git a/hw/ne2000-isa.c b/hw/ne2000-isa.c
index 47c00c3..d15978d 100644
--- a/hw/ne2000-isa.c
+++ b/hw/ne2000-isa.c
@@ -23,7 +23,7 @@ 
  */
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/qdev.h"
 #include "net/net.h"
 #include "hw/ne2000.h"
diff --git a/hw/nseries.c b/hw/nseries.c
index c5bf9f9..3b6943a 100644
--- a/hw/nseries.c
+++ b/hw/nseries.c
@@ -20,14 +20,14 @@ 
 
 #include "qemu-common.h"
 #include "sysemu/sysemu.h"
-#include "hw/omap.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/omap.h"
+#include "hw/arm/arm.h"
 #include "hw/irq.h"
 #include "ui/console.h"
 #include "hw/boards.h"
-#include "hw/i2c.h"
-#include "hw/devices.h"
-#include "hw/flash.h"
+#include "hw/i2c/i2c.h"
+#include "hw/arm/devices.h"
+#include "hw/block/flash.h"
 #include "hw/hw.h"
 #include "hw/bt.h"
 #include "hw/loader.h"
diff --git a/hw/omap1.c b/hw/omap1.c
index 6f0a8ca..bfade2e 100644
--- a/hw/omap1.c
+++ b/hw/omap1.c
@@ -17,8 +17,8 @@ 
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "hw/hw.h"
-#include "hw/arm-misc.h"
-#include "hw/omap.h"
+#include "hw/arm/arm.h"
+#include "hw/arm/omap.h"
 #include "sysemu/sysemu.h"
 #include "hw/soc_dma.h"
 #include "sysemu/blockdev.h"
diff --git a/hw/omap2.c b/hw/omap2.c
index 0a2cd7b..4a6d71f 100644
--- a/hw/omap2.c
+++ b/hw/omap2.c
@@ -20,12 +20,12 @@ 
 
 #include "sysemu/blockdev.h"
 #include "hw/hw.h"
-#include "hw/arm-misc.h"
-#include "hw/omap.h"
+#include "hw/arm/arm.h"
+#include "hw/arm/omap.h"
 #include "sysemu/sysemu.h"
 #include "qemu/timer.h"
 #include "char/char.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "hw/soc_dma.h"
 #include "hw/sysbus.h"
 #include "audio/audio.h"
diff --git a/hw/omap_clk.c b/hw/omap_clk.c
index c7b5c11..80a3c50 100644
--- a/hw/omap_clk.c
+++ b/hw/omap_clk.c
@@ -19,7 +19,7 @@ 
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "hw/hw.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 
 struct clk {
     const char *name;
diff --git a/hw/omap_dma.c b/hw/omap_dma.c
index 0c5902f..95044f9 100644
--- a/hw/omap_dma.c
+++ b/hw/omap_dma.c
@@ -19,7 +19,7 @@ 
  */
 #include "qemu-common.h"
 #include "qemu/timer.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 #include "hw/irq.h"
 #include "hw/soc_dma.h"
 
diff --git a/hw/omap_dss.c b/hw/omap_dss.c
index 948ad8f..ea3afce 100644
--- a/hw/omap_dss.c
+++ b/hw/omap_dss.c
@@ -19,7 +19,7 @@ 
  */
 #include "hw/hw.h"
 #include "ui/console.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 
 struct omap_dss_s {
     qemu_irq irq;
diff --git a/hw/omap_gpio.c b/hw/omap_gpio.c
index c79f61c..f5eeaea 100644
--- a/hw/omap_gpio.c
+++ b/hw/omap_gpio.c
@@ -19,7 +19,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 #include "hw/sysbus.h"
 
 struct omap_gpio_s {
diff --git a/hw/omap_gpmc.c b/hw/omap_gpmc.c
index ebb259c..91adb66 100644
--- a/hw/omap_gpmc.c
+++ b/hw/omap_gpmc.c
@@ -19,8 +19,8 @@ 
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "hw/hw.h"
-#include "hw/flash.h"
-#include "hw/omap.h"
+#include "hw/block/flash.h"
+#include "hw/arm/omap.h"
 #include "exec/memory.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/omap_gptimer.c b/hw/omap_gptimer.c
index 8485ee8..9b0e9dd 100644
--- a/hw/omap_gptimer.c
+++ b/hw/omap_gptimer.c
@@ -19,7 +19,7 @@ 
  */
 #include "hw/hw.h"
 #include "qemu/timer.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 
 /* GP timers */
 struct omap_gp_timer_s {
diff --git a/hw/omap_i2c.c b/hw/omap_i2c.c
index 92f7b37..efb2254 100644
--- a/hw/omap_i2c.c
+++ b/hw/omap_i2c.c
@@ -17,8 +17,8 @@ 
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "hw/hw.h"
-#include "hw/i2c.h"
-#include "hw/omap.h"
+#include "hw/i2c/i2c.h"
+#include "hw/arm/omap.h"
 #include "hw/sysbus.h"
 
 
diff --git a/hw/omap_intc.c b/hw/omap_intc.c
index 7da9c35..875eba4 100644
--- a/hw/omap_intc.c
+++ b/hw/omap_intc.c
@@ -18,7 +18,7 @@ 
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "hw/hw.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 #include "hw/sysbus.h"
 
 /* Interrupt Handlers */
diff --git a/hw/omap_l4.c b/hw/omap_l4.c
index cbe8a06..ac8251f 100644
--- a/hw/omap_l4.c
+++ b/hw/omap_l4.c
@@ -18,7 +18,7 @@ 
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "hw/hw.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 
 struct omap_l4_s {
     MemoryRegion *address_space;
diff --git a/hw/omap_lcdc.c b/hw/omap_lcdc.c
index c426f3a..8555f58 100644
--- a/hw/omap_lcdc.c
+++ b/hw/omap_lcdc.c
@@ -18,7 +18,7 @@ 
  */
 #include "hw/hw.h"
 #include "ui/console.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 #include "hw/framebuffer.h"
 #include "ui/pixel_ops.h"
 
diff --git a/hw/omap_mmc.c b/hw/omap_mmc.c
index 6e48110..d4079cd 100644
--- a/hw/omap_mmc.c
+++ b/hw/omap_mmc.c
@@ -17,7 +17,7 @@ 
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "hw/hw.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 #include "hw/sd.h"
 
 struct omap_mmc_s {
diff --git a/hw/omap_sdrc.c b/hw/omap_sdrc.c
index 510e6cc..e38b571 100644
--- a/hw/omap_sdrc.c
+++ b/hw/omap_sdrc.c
@@ -18,7 +18,7 @@ 
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "hw/hw.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 
 /* SDRAM Controller Subsystem */
 struct omap_sdrc_s {
diff --git a/hw/omap_spi.c b/hw/omap_spi.c
index 1cbd98d..11403c4 100644
--- a/hw/omap_spi.c
+++ b/hw/omap_spi.c
@@ -20,7 +20,7 @@ 
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 #include "hw/hw.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 
 /* Multichannel SPI */
 struct omap_mcspi_s {
diff --git a/hw/omap_sx1.c b/hw/omap_sx1.c
index 8598233..e421ece 100644
--- a/hw/omap_sx1.c
+++ b/hw/omap_sx1.c
@@ -27,10 +27,10 @@ 
  */
 #include "hw/hw.h"
 #include "ui/console.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 #include "hw/boards.h"
-#include "hw/arm-misc.h"
-#include "hw/flash.h"
+#include "hw/arm/arm.h"
+#include "hw/block/flash.h"
 #include "sysemu/blockdev.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/omap_synctimer.c b/hw/omap_synctimer.c
index 13e7280..a24f35c 100644
--- a/hw/omap_synctimer.c
+++ b/hw/omap_synctimer.c
@@ -19,7 +19,7 @@ 
  */
 #include "hw/hw.h"
 #include "qemu/timer.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 struct omap_synctimer_s {
     MemoryRegion iomem;
     uint32_t val;
diff --git a/hw/omap_tap.c b/hw/omap_tap.c
index 181ecee..99b70d5 100644
--- a/hw/omap_tap.c
+++ b/hw/omap_tap.c
@@ -19,7 +19,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 
 /* TEST-Chip-level TAP */
 static uint64_t omap_tap_read(void *opaque, hwaddr addr,
diff --git a/hw/omap_uart.c b/hw/omap_uart.c
index af51ce7..26c1426 100644
--- a/hw/omap_uart.c
+++ b/hw/omap_uart.c
@@ -19,8 +19,8 @@ 
  */
 #include "char/char.h"
 #include "hw/hw.h"
-#include "hw/omap.h"
-#include "hw/serial.h"
+#include "hw/arm/omap.h"
+#include "hw/char/serial.h"
 #include "exec/address-spaces.h"
 
 /* UARTs */
diff --git a/hw/onenand.c b/hw/onenand.c
index ddba366..2dae0f5 100644
--- a/hw/onenand.c
+++ b/hw/onenand.c
@@ -20,7 +20,7 @@ 
 
 #include "qemu-common.h"
 #include "hw/hw.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "hw/irq.h"
 #include "sysemu/blockdev.h"
 #include "exec/memory.h"
diff --git a/hw/openpic.c b/hw/openpic.c
index 03a7075..e9ee1f5 100644
--- a/hw/openpic.c
+++ b/hw/openpic.c
@@ -40,7 +40,7 @@ 
 #include "hw/sysbus.h"
 #include "hw/pci/msi.h"
 #include "qemu/bitops.h"
-#include "hw/ppc.h"
+#include "hw/ppc/ppc.h"
 
 //#define DEBUG_OPENPIC
 
diff --git a/hw/openrisc_sim.c b/hw/openrisc_sim.c
index db2aac8..49bab1f 100644
--- a/hw/openrisc_sim.c
+++ b/hw/openrisc_sim.c
@@ -21,7 +21,7 @@ 
 #include "hw/hw.h"
 #include "hw/boards.h"
 #include "elf.h"
-#include "hw/serial.h"
+#include "hw/char/serial.h"
 #include "net/net.h"
 #include "hw/loader.h"
 #include "exec/address-spaces.h"
diff --git a/hw/palm.c b/hw/palm.c
index 91bc74a..c847d1f 100644
--- a/hw/palm.c
+++ b/hw/palm.c
@@ -20,10 +20,10 @@ 
 #include "audio/audio.h"
 #include "sysemu/sysemu.h"
 #include "ui/console.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 #include "hw/boards.h"
-#include "hw/arm-misc.h"
-#include "hw/devices.h"
+#include "hw/arm/arm.h"
+#include "hw/arm/devices.h"
 #include "hw/loader.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/pam.c b/hw/pam.c
index 6c0061e..d8524c1 100644
--- a/hw/pam.c
+++ b/hw/pam.c
@@ -27,7 +27,7 @@ 
  * THE SOFTWARE.
  */
 #include "sysemu/sysemu.h"
-#include "hw/pam.h"
+#include "hw/pci/pam.h"
 
 void smram_update(MemoryRegion *smram_region, uint8_t smram,
                   uint8_t smm_enabled)
diff --git a/hw/parallel.c b/hw/parallel.c
index 0b9af43..710a125 100644
--- a/hw/parallel.c
+++ b/hw/parallel.c
@@ -24,7 +24,7 @@ 
  */
 #include "hw/hw.h"
 #include "char/char.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/pc.h"
 #include "sysemu/sysemu.h"
 
diff --git a/hw/pc-testdev.c b/hw/pc-testdev.c
index 8236bce..32df175 100644
--- a/hw/pc-testdev.c
+++ b/hw/pc-testdev.c
@@ -41,7 +41,7 @@ 
 #endif
 #include "hw/hw.h"
 #include "hw/qdev.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 
 #define IOMEM_LEN    0x10000
 
diff --git a/hw/pc.c b/hw/pc.c
index 23d10c7..96cc612 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -23,29 +23,29 @@ 
  */
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/serial.h"
-#include "hw/apic.h"
-#include "hw/fdc.h"
+#include "hw/char/serial.h"
+#include "hw/i386/apic.h"
+#include "hw/block/fdc.h"
 #include "hw/ide.h"
 #include "hw/pci/pci.h"
 #include "monitor/monitor.h"
-#include "hw/fw_cfg.h"
-#include "hw/hpet_emul.h"
-#include "hw/smbios.h"
+#include "hw/misc/fw_cfg.h"
+#include "hw/timer/hpet.h"
+#include "hw/i386/smbios.h"
 #include "hw/loader.h"
 #include "elf.h"
 #include "hw/multiboot.h"
-#include "hw/mc146818rtc.h"
-#include "hw/i8254.h"
-#include "hw/pcspk.h"
+#include "hw/timer/mc146818rtc.h"
+#include "hw/timer/i8254.h"
+#include "hw/audio/pcspk.h"
 #include "hw/pci/msi.h"
 #include "hw/sysbus.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/kvm.h"
 #include "kvm_i386.h"
-#include "hw/xen.h"
+#include "sysemu/xen.h"
 #include "sysemu/blockdev.h"
-#include "hw/block-common.h"
+#include "hw/block/block.h"
 #include "ui/qemu-spice.h"
 #include "exec/memory.h"
 #include "exec/address-spaces.h"
diff --git a/hw/pc87312.c b/hw/pc87312.c
index c4e4c62..9f5e185 100644
--- a/hw/pc87312.c
+++ b/hw/pc87312.c
@@ -23,7 +23,7 @@ 
  * THE SOFTWARE.
  */
 
-#include "hw/pc87312.h"
+#include "hw/isa/pc87312.h"
 #include "qemu/error-report.h"
 #include "sysemu/blockdev.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/pc_piix.c b/hw/pc_piix.c
index 3838ab9..5840242 100644
--- a/hw/pc_piix.c
+++ b/hw/pc_piix.c
@@ -26,7 +26,7 @@ 
 
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/apic.h"
+#include "hw/i386/apic.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_ids.h"
 #include "hw/usb.h"
@@ -39,8 +39,8 @@ 
 #include "hw/sysbus.h"
 #include "sysemu/arch_init.h"
 #include "sysemu/blockdev.h"
-#include "hw/smbus.h"
-#include "hw/xen.h"
+#include "hw/i2c/smbus.h"
+#include "sysemu/xen.h"
 #include "exec/memory.h"
 #include "exec/address-spaces.h"
 #include "cpu.h"
diff --git a/hw/pc_q35.c b/hw/pc_q35.c
index c0b3fda..38b2c88 100644
--- a/hw/pc_q35.c
+++ b/hw/pc_q35.c
@@ -29,15 +29,15 @@ 
  */
 #include "hw/hw.h"
 #include "sysemu/arch_init.h"
-#include "hw/smbus.h"
+#include "hw/i2c/smbus.h"
 #include "hw/boards.h"
-#include "hw/mc146818rtc.h"
-#include "hw/xen.h"
+#include "hw/timer/mc146818rtc.h"
+#include "sysemu/xen.h"
 #include "sysemu/kvm.h"
 #include "hw/kvm/clock.h"
-#include "hw/q35.h"
+#include "hw/pci/q35.h"
 #include "exec/address-spaces.h"
-#include "hw/ich9.h"
+#include "hw/i386/ich9.h"
 #include "hw/ide/pci.h"
 #include "hw/ide/ahci.h"
 #include "hw/usb.h"
diff --git a/hw/pc_sysfw.c b/hw/pc_sysfw.c
index 3e01528..c4ed736 100644
--- a/hw/pc_sysfw.c
+++ b/hw/pc_sysfw.c
@@ -31,7 +31,7 @@ 
 #include "hw/boards.h"
 #include "hw/loader.h"
 #include "sysemu/sysemu.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "sysemu/kvm.h"
 
 #define BIOS_FILENAME "bios.bin"
diff --git a/hw/pci/pci-hotplug.c b/hw/pci/pci-hotplug.c
index f38df30..67f52c0 100644
--- a/hw/pci/pci-hotplug.c
+++ b/hw/pci/pci-hotplug.c
@@ -28,8 +28,8 @@ 
 #include "net/net.h"
 #include "hw/pc.h"
 #include "monitor/monitor.h"
-#include "hw/scsi.h"
-#include "hw/virtio-blk.h"
+#include "hw/scsi/scsi.h"
+#include "hw/virtio/virtio-blk.h"
 #include "qemu/config-file.h"
 #include "sysemu/blockdev.h"
 #include "qapi/error.h"
diff --git a/hw/pci/pci.h b/hw/pci/pci.h
index f340fe5..2c7a498 100644
--- a/hw/pci/pci.h
+++ b/hw/pci/pci.h
@@ -8,7 +8,7 @@ 
 #include "sysemu/dma.h"
 
 /* PCI includes legacy ISA access.  */
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 
 #include "hw/pci/pcie.h"
 
diff --git a/hw/pckbd.c b/hw/pckbd.c
index cc63df0..b7a2aa7 100644
--- a/hw/pckbd.c
+++ b/hw/pckbd.c
@@ -22,9 +22,9 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/pc.h"
-#include "hw/ps2.h"
+#include "hw/input/ps2.h"
 #include "sysemu/sysemu.h"
 
 /* debug PC keyboard */
diff --git a/hw/pcspk.c b/hw/pcspk.c
index d533415..420ed87 100644
--- a/hw/pcspk.c
+++ b/hw/pcspk.c
@@ -24,11 +24,11 @@ 
 
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "audio/audio.h"
 #include "qemu/timer.h"
-#include "hw/i8254.h"
-#include "hw/pcspk.h"
+#include "hw/timer/i8254.h"
+#include "hw/audio/pcspk.h"
 
 #define PCSPK_BUF_LEN 1792
 #define PCSPK_SAMPLE_RATE 32000
diff --git a/hw/petalogix_ml605_mmu.c b/hw/petalogix_ml605_mmu.c
index 37affac..6fd1d27 100644
--- a/hw/petalogix_ml605_mmu.c
+++ b/hw/petalogix_ml605_mmu.c
@@ -28,13 +28,13 @@ 
 #include "hw/sysbus.h"
 #include "hw/hw.h"
 #include "net/net.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "sysemu/sysemu.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "hw/boards.h"
 #include "hw/xilinx.h"
 #include "sysemu/blockdev.h"
-#include "hw/serial.h"
+#include "hw/char/serial.h"
 #include "exec/address-spaces.h"
 #include "hw/ssi.h"
 
diff --git a/hw/petalogix_s3adsp1800_mmu.c b/hw/petalogix_s3adsp1800_mmu.c
index 2498362..b386403 100644
--- a/hw/petalogix_s3adsp1800_mmu.c
+++ b/hw/petalogix_s3adsp1800_mmu.c
@@ -26,9 +26,9 @@ 
 #include "hw/sysbus.h"
 #include "hw/hw.h"
 #include "net/net.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "sysemu/sysemu.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "hw/boards.h"
 #include "hw/xilinx.h"
 #include "sysemu/blockdev.h"
diff --git a/hw/pflash_cfi01.c b/hw/pflash_cfi01.c
index 5e323a4..a526cac 100644
--- a/hw/pflash_cfi01.c
+++ b/hw/pflash_cfi01.c
@@ -37,7 +37,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "block/block.h"
 #include "qemu/timer.h"
 #include "exec/address-spaces.h"
diff --git a/hw/pflash_cfi02.c b/hw/pflash_cfi02.c
index 37b4fcc..9a7fa70 100644
--- a/hw/pflash_cfi02.c
+++ b/hw/pflash_cfi02.c
@@ -36,7 +36,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "qemu/timer.h"
 #include "block/block.h"
 #include "exec/address-spaces.h"
diff --git a/hw/piix4.c b/hw/piix4.c
index 0f5cd01..04d8664 100644
--- a/hw/piix4.c
+++ b/hw/piix4.c
@@ -25,7 +25,7 @@ 
 #include "hw/hw.h"
 #include "hw/pc.h"
 #include "hw/pci/pci.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/sysbus.h"
 
 PCIDevice *piix4_dev;
diff --git a/hw/piix_pci.c b/hw/piix_pci.c
index ac33db5..9d9ae00 100644
--- a/hw/piix_pci.c
+++ b/hw/piix_pci.c
@@ -26,11 +26,11 @@ 
 #include "hw/pc.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/sysbus.h"
 #include "qemu/range.h"
-#include "hw/xen.h"
-#include "hw/pam.h"
+#include "sysemu/xen.h"
+#include "hw/pci/pam.h"
 #include "sysemu/sysemu.h"
 
 /*
diff --git a/hw/pl050.c b/hw/pl050.c
index bc31ab6..d9ef95d 100644
--- a/hw/pl050.c
+++ b/hw/pl050.c
@@ -8,7 +8,7 @@ 
  */
 
 #include "hw/sysbus.h"
-#include "hw/ps2.h"
+#include "hw/input/ps2.h"
 
 typedef struct {
     SysBusDevice busdev;
diff --git a/hw/pm_smbus.c b/hw/pm_smbus.c
index 7900610..8bae8c5 100644
--- a/hw/pm_smbus.c
+++ b/hw/pm_smbus.c
@@ -19,8 +19,8 @@ 
  */
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/pm_smbus.h"
-#include "hw/smbus.h"
+#include "hw/i2c/pm_smbus.h"
+#include "hw/i2c/smbus.h"
 
 /* no save/load? */
 
diff --git a/hw/ppc.c b/hw/ppc.c
index 79ff97a..ea2978f 100644
--- a/hw/ppc.c
+++ b/hw/ppc.c
@@ -22,10 +22,10 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/ppc.h"
+#include "hw/ppc/ppc.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
-#include "hw/nvram.h"
+#include "hw/timer/m48t59.h"
 #include "qemu/log.h"
 #include "hw/loader.h"
 #include "sysemu/kvm.h"
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index b7474c0..f3300fd 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -21,7 +21,7 @@ 
 #include "net/net.h"
 #include "qemu/config-file.h"
 #include "hw/hw.h"
-#include "hw/serial.h"
+#include "hw/char/serial.h"
 #include "hw/pci/pci.h"
 #include "hw/boards.h"
 #include "sysemu/sysemu.h"
@@ -29,7 +29,7 @@ 
 #include "kvm_ppc.h"
 #include "sysemu/device_tree.h"
 #include "hw/openpic.h"
-#include "hw/ppc.h"
+#include "hw/ppc/ppc.h"
 #include "hw/loader.h"
 #include "elf.h"
 #include "hw/sysbus.h"
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 065ea87..c81243a 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -47,17 +47,17 @@ 
  *
  */
 #include "hw/hw.h"
-#include "hw/ppc.h"
+#include "hw/ppc/ppc.h"
 #include "hw/ppc/mac.h"
 #include "hw/adb.h"
-#include "hw/mac_dbdma.h"
-#include "hw/nvram.h"
+#include "hw/ppc/mac_dbdma.h"
+#include "hw/timer/m48t59.h"
 #include "hw/pci/pci.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
-#include "hw/fw_cfg.h"
-#include "hw/escc.h"
+#include "hw/misc/fw_cfg.h"
+#include "hw/char/escc.h"
 #include "hw/openpic.h"
 #include "hw/ide.h"
 #include "hw/loader.h"
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index 2778e45..06a944f 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -24,17 +24,17 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/ppc.h"
+#include "hw/ppc/ppc.h"
 #include "mac.h"
 #include "hw/adb.h"
-#include "hw/nvram.h"
+#include "hw/timer/m48t59.h"
 #include "sysemu/sysemu.h"
 #include "net/net.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/pci/pci.h"
 #include "hw/boards.h"
-#include "hw/fw_cfg.h"
-#include "hw/escc.h"
+#include "hw/misc/fw_cfg.h"
+#include "hw/char/escc.h"
 #include "hw/ide.h"
 #include "hw/loader.h"
 #include "elf.h"
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index e06dded..dd0e153 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -22,22 +22,22 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/nvram.h"
+#include "hw/timer/m48t59.h"
 #include "hw/pc.h"
-#include "hw/serial.h"
-#include "hw/fdc.h"
+#include "hw/char/serial.h"
+#include "hw/block/fdc.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
-#include "hw/ppc.h"
+#include "hw/ppc/ppc.h"
 #include "hw/boards.h"
 #include "qemu/log.h"
 #include "hw/ide.h"
 #include "hw/loader.h"
-#include "hw/mc146818rtc.h"
-#include "hw/pc87312.h"
+#include "hw/timer/mc146818rtc.h"
+#include "hw/isa/pc87312.h"
 #include "sysemu/blockdev.h"
 #include "sysemu/arch_init.h"
 #include "exec/address-spaces.h"
diff --git a/hw/ppc405.h b/hw/ppc405.h
index 45c2159..1c5f04f 100644
--- a/hw/ppc405.h
+++ b/hw/ppc405.h
@@ -25,7 +25,7 @@ 
 #if !defined(PPC_405_H)
 #define PPC_405_H
 
-#include "hw/ppc4xx.h"
+#include "hw/ppc/ppc4xx.h"
 
 /* Bootinfo as set-up by u-boot */
 typedef struct ppc4xx_bd_info_t ppc4xx_bd_info_t;
diff --git a/hw/ppc405_boards.c b/hw/ppc405_boards.c
index ba443cf..18a29db 100644
--- a/hw/ppc405_boards.c
+++ b/hw/ppc405_boards.c
@@ -22,10 +22,10 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/ppc.h"
+#include "hw/ppc/ppc.h"
 #include "hw/ppc405.h"
-#include "hw/nvram.h"
-#include "hw/flash.h"
+#include "hw/timer/m48t59.h"
+#include "hw/block/flash.h"
 #include "sysemu/sysemu.h"
 #include "block/block.h"
 #include "hw/boards.h"
diff --git a/hw/ppc405_uc.c b/hw/ppc405_uc.c
index a197a37..433f856 100644
--- a/hw/ppc405_uc.c
+++ b/hw/ppc405_uc.c
@@ -22,9 +22,9 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/ppc.h"
+#include "hw/ppc/ppc.h"
 #include "hw/ppc405.h"
-#include "hw/serial.h"
+#include "hw/char/serial.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
 #include "qemu/log.h"
diff --git a/hw/ppc440_bamboo.c b/hw/ppc440_bamboo.c
index 66911b5..48a0218 100644
--- a/hw/ppc440_bamboo.c
+++ b/hw/ppc440_bamboo.c
@@ -23,8 +23,8 @@ 
 #include "hw/loader.h"
 #include "elf.h"
 #include "exec/address-spaces.h"
-#include "hw/serial.h"
-#include "hw/ppc.h"
+#include "hw/char/serial.h"
+#include "hw/ppc/ppc.h"
 #include "hw/ppc405.h"
 #include "sysemu/sysemu.h"
 #include "hw/sysbus.h"
diff --git a/hw/ppc4xx_devs.c b/hw/ppc4xx_devs.c
index a9000e4..8fd4f6c 100644
--- a/hw/ppc4xx_devs.c
+++ b/hw/ppc4xx_devs.c
@@ -22,8 +22,8 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/ppc.h"
-#include "hw/ppc4xx.h"
+#include "hw/ppc/ppc.h"
+#include "hw/ppc/ppc4xx.h"
 #include "qemu/log.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/ppc4xx_pci.c b/hw/ppc4xx_pci.c
index f3bbe88..a70f103 100644
--- a/hw/ppc4xx_pci.c
+++ b/hw/ppc4xx_pci.c
@@ -20,8 +20,8 @@ 
  * 4xx SoCs, such as the 440EP. */
 
 #include "hw/hw.h"
-#include "hw/ppc.h"
-#include "hw/ppc4xx.h"
+#include "hw/ppc/ppc.h"
+#include "hw/ppc/ppc4xx.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
 #include "exec/address-spaces.h"
diff --git a/hw/ppc_booke.c b/hw/ppc_booke.c
index 30375c0..585f53b 100644
--- a/hw/ppc_booke.c
+++ b/hw/ppc_booke.c
@@ -22,10 +22,10 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/ppc.h"
+#include "hw/ppc/ppc.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
-#include "hw/nvram.h"
+#include "hw/timer/m48t59.h"
 #include "qemu/log.h"
 #include "hw/loader.h"
 
diff --git a/hw/ps2.c b/hw/ps2.c
index 233a087..3412079 100644
--- a/hw/ps2.c
+++ b/hw/ps2.c
@@ -22,7 +22,7 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/ps2.h"
+#include "hw/input/ps2.h"
 #include "ui/console.h"
 #include "sysemu/sysemu.h"
 
diff --git a/hw/puv3.c b/hw/puv3.c
index f9d0c2b..cc5b23e 100644
--- a/hw/puv3.c
+++ b/hw/puv3.c
@@ -19,7 +19,7 @@ 
 #include "hw/pc.h"
 
 #undef DEBUG_PUV3
-#include "hw/puv3.h"
+#include "hw/unicore32/puv3.h"
 
 #define KERNEL_LOAD_ADDR        0x03000000
 #define KERNEL_MAX_SIZE         0x00800000 /* Just a guess */
diff --git a/hw/puv3_dma.c b/hw/puv3_dma.c
index c05a14e..32844b5 100644
--- a/hw/puv3_dma.c
+++ b/hw/puv3_dma.c
@@ -12,7 +12,7 @@ 
 #include "hw/sysbus.h"
 
 #undef DEBUG_PUV3
-#include "hw/puv3.h"
+#include "hw/unicore32/puv3.h"
 
 #define PUV3_DMA_CH_NR          (6)
 #define PUV3_DMA_CH_MASK        (0xff)
diff --git a/hw/puv3_gpio.c b/hw/puv3_gpio.c
index b2a790b..5bab97e 100644
--- a/hw/puv3_gpio.c
+++ b/hw/puv3_gpio.c
@@ -12,7 +12,7 @@ 
 #include "hw/sysbus.h"
 
 #undef DEBUG_PUV3
-#include "hw/puv3.h"
+#include "hw/unicore32/puv3.h"
 
 typedef struct {
     SysBusDevice busdev;
diff --git a/hw/puv3_intc.c b/hw/puv3_intc.c
index 6bc9e1a..0cd5e9e 100644
--- a/hw/puv3_intc.c
+++ b/hw/puv3_intc.c
@@ -11,7 +11,7 @@ 
 #include "hw/sysbus.h"
 
 #undef DEBUG_PUV3
-#include "hw/puv3.h"
+#include "hw/unicore32/puv3.h"
 
 typedef struct {
     SysBusDevice busdev;
diff --git a/hw/puv3_ost.c b/hw/puv3_ost.c
index 10a522a..0c3d827 100644
--- a/hw/puv3_ost.c
+++ b/hw/puv3_ost.c
@@ -12,7 +12,7 @@ 
 #include "hw/ptimer.h"
 
 #undef DEBUG_PUV3
-#include "hw/puv3.h"
+#include "hw/unicore32/puv3.h"
 
 /* puv3 ostimer implementation. */
 typedef struct {
diff --git a/hw/puv3_pm.c b/hw/puv3_pm.c
index 6b8d94d..0aacdc2 100644
--- a/hw/puv3_pm.c
+++ b/hw/puv3_pm.c
@@ -12,7 +12,7 @@ 
 #include "hw/sysbus.h"
 
 #undef DEBUG_PUV3
-#include "hw/puv3.h"
+#include "hw/unicore32/puv3.h"
 
 typedef struct {
     SysBusDevice busdev;
diff --git a/hw/pxa2xx.c b/hw/pxa2xx.c
index 2294c05..4476c4b 100644
--- a/hw/pxa2xx.c
+++ b/hw/pxa2xx.c
@@ -8,10 +8,10 @@ 
  */
 
 #include "hw/sysbus.h"
-#include "hw/pxa.h"
+#include "hw/arm/pxa.h"
 #include "sysemu/sysemu.h"
-#include "hw/serial.h"
-#include "hw/i2c.h"
+#include "hw/char/serial.h"
+#include "hw/i2c/i2c.h"
 #include "hw/ssi.h"
 #include "char/char.h"
 #include "sysemu/blockdev.h"
diff --git a/hw/pxa2xx_dma.c b/hw/pxa2xx_dma.c
index 1db21c9..6e4c1f6 100644
--- a/hw/pxa2xx_dma.c
+++ b/hw/pxa2xx_dma.c
@@ -9,7 +9,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/pxa.h"
+#include "hw/arm/pxa.h"
 #include "hw/sysbus.h"
 
 #define PXA255_DMA_NUM_CHANNELS 16
diff --git a/hw/pxa2xx_gpio.c b/hw/pxa2xx_gpio.c
index eef8411..18ac887 100644
--- a/hw/pxa2xx_gpio.c
+++ b/hw/pxa2xx_gpio.c
@@ -9,7 +9,7 @@ 
 
 #include "hw/hw.h"
 #include "hw/sysbus.h"
-#include "hw/pxa.h"
+#include "hw/arm/pxa.h"
 
 #define PXA2XX_GPIO_BANKS	4
 
diff --git a/hw/pxa2xx_keypad.c b/hw/pxa2xx_keypad.c
index 32ea7a5..1fd5f20 100644
--- a/hw/pxa2xx_keypad.c
+++ b/hw/pxa2xx_keypad.c
@@ -12,7 +12,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/pxa.h"
+#include "hw/arm/pxa.h"
 #include "ui/console.h"
 
 /*
diff --git a/hw/pxa2xx_lcd.c b/hw/pxa2xx_lcd.c
index 6484d27..24f8485 100644
--- a/hw/pxa2xx_lcd.c
+++ b/hw/pxa2xx_lcd.c
@@ -12,7 +12,7 @@ 
 
 #include "hw/hw.h"
 #include "ui/console.h"
-#include "hw/pxa.h"
+#include "hw/arm/pxa.h"
 #include "ui/pixel_ops.h"
 /* FIXME: For graphic_rotate. Should probably be done in common code.  */
 #include "sysemu/sysemu.h"
diff --git a/hw/pxa2xx_mmci.c b/hw/pxa2xx_mmci.c
index 0df83cc..2db1cab 100644
--- a/hw/pxa2xx_mmci.c
+++ b/hw/pxa2xx_mmci.c
@@ -11,7 +11,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/pxa.h"
+#include "hw/arm/pxa.h"
 #include "hw/sd.h"
 #include "hw/qdev.h"
 
diff --git a/hw/pxa2xx_pcmcia.c b/hw/pxa2xx_pcmcia.c
index 66fefba..eb2f5f7 100644
--- a/hw/pxa2xx_pcmcia.c
+++ b/hw/pxa2xx_pcmcia.c
@@ -11,8 +11,8 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/pcmcia.h"
-#include "hw/pxa.h"
+#include "hw/misc/pcmcia.h"
+#include "hw/arm/pxa.h"
 
 
 struct PXA2xxPCMCIAState {
diff --git a/hw/pxa2xx_pic.c b/hw/pxa2xx_pic.c
index 145fc78..281730b 100644
--- a/hw/pxa2xx_pic.c
+++ b/hw/pxa2xx_pic.c
@@ -9,7 +9,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/pxa.h"
+#include "hw/arm/pxa.h"
 #include "hw/sysbus.h"
 
 #define ICIP	0x00	/* Interrupt Controller IRQ Pending register */
diff --git a/hw/pxa2xx_timer.c b/hw/pxa2xx_timer.c
index c173fe4..8ea2416 100644
--- a/hw/pxa2xx_timer.c
+++ b/hw/pxa2xx_timer.c
@@ -10,7 +10,7 @@ 
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
-#include "hw/pxa.h"
+#include "hw/arm/pxa.h"
 #include "hw/sysbus.h"
 
 #define OSMR0	0x00
diff --git a/hw/q35.c b/hw/q35.c
index 0a25b8b..ab46c8c 100644
--- a/hw/q35.c
+++ b/hw/q35.c
@@ -28,7 +28,7 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/q35.h"
+#include "hw/pci/q35.h"
 
 /****************************************************************************
  * Q35 host
diff --git a/hw/qdev-properties-system.c b/hw/qdev-properties-system.c
index 8795144..d466bbd 100644
--- a/hw/qdev-properties-system.c
+++ b/hw/qdev-properties-system.c
@@ -14,7 +14,7 @@ 
 #include "hw/qdev.h"
 #include "qapi/qmp/qerror.h"
 #include "sysemu/blockdev.h"
-#include "hw/block-common.h"
+#include "hw/block/block.h"
 #include "net/hub.h"
 #include "qapi/visitor.h"
 #include "char/char.h"
diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
index 0307a78..9b0d8a5 100644
--- a/hw/qdev-properties.c
+++ b/hw/qdev-properties.c
@@ -2,7 +2,7 @@ 
 #include "hw/qdev.h"
 #include "qapi/qmp/qerror.h"
 #include "sysemu/blockdev.h"
-#include "hw/block-common.h"
+#include "hw/block/block.h"
 #include "net/hub.h"
 #include "qapi/visitor.h"
 #include "char/char.h"
diff --git a/hw/r2d.c b/hw/r2d.c
index faa03d2..bcc326a 100644
--- a/hw/r2d.c
+++ b/hw/r2d.c
@@ -25,8 +25,8 @@ 
 
 #include "hw/sysbus.h"
 #include "hw/hw.h"
-#include "hw/sh.h"
-#include "hw/devices.h"
+#include "hw/sh4/sh.h"
+#include "hw/arm/devices.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
 #include "hw/pci/pci.h"
@@ -35,7 +35,7 @@ 
 #include "hw/ide.h"
 #include "hw/loader.h"
 #include "hw/usb.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "sysemu/blockdev.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/rc4030.c b/hw/rc4030.c
index b065515..03f92f1 100644
--- a/hw/rc4030.c
+++ b/hw/rc4030.c
@@ -23,7 +23,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/mips.h"
+#include "hw/mips/mips.h"
 #include "qemu/timer.h"
 
 /********************************************************/
diff --git a/hw/realview.c b/hw/realview.c
index 5fb490c..00d8fd4 100644
--- a/hw/realview.c
+++ b/hw/realview.c
@@ -8,14 +8,14 @@ 
  */
 
 #include "hw/sysbus.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/arm.h"
 #include "hw/primecell.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "hw/pci/pci.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 #include "sysemu/blockdev.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/s390x/s390-virtio-bus.c b/hw/s390x/s390-virtio-bus.c
index d467781..988c915 100644
--- a/hw/s390x/s390-virtio-bus.c
+++ b/hw/s390x/s390-virtio-bus.c
@@ -24,15 +24,15 @@ 
 #include "monitor/monitor.h"
 #include "hw/loader.h"
 #include "elf.h"
-#include "hw/virtio.h"
-#include "hw/virtio-rng.h"
-#include "hw/virtio-serial.h"
-#include "hw/virtio-net.h"
+#include "hw/virtio/virtio.h"
+#include "hw/virtio/virtio-rng.h"
+#include "hw/virtio/virtio-serial.h"
+#include "hw/virtio/virtio-net.h"
 #include "hw/sysbus.h"
 #include "sysemu/kvm.h"
 
 #include "hw/s390x/s390-virtio-bus.h"
-#include "hw/virtio-bus.h"
+#include "hw/virtio/virtio-bus.h"
 
 /* #define DEBUG_S390 */
 
diff --git a/hw/s390x/s390-virtio-bus.h b/hw/s390x/s390-virtio-bus.h
index 4aacf83..f5a4fd1 100644
--- a/hw/s390x/s390-virtio-bus.h
+++ b/hw/s390x/s390-virtio-bus.h
@@ -19,12 +19,12 @@ 
 #ifndef HW_S390_VIRTIO_BUS_H
 #define HW_S390_VIRTIO_BUS_H 1
 
-#include "hw/virtio-blk.h"
-#include "hw/virtio-net.h"
-#include "hw/virtio-rng.h"
-#include "hw/virtio-serial.h"
-#include "hw/virtio-scsi.h"
-#include "hw/virtio-bus.h"
+#include "hw/virtio/virtio-blk.h"
+#include "hw/virtio/virtio-net.h"
+#include "hw/virtio/virtio-rng.h"
+#include "hw/virtio/virtio-serial.h"
+#include "hw/virtio/virtio-scsi.h"
+#include "hw/virtio/virtio-bus.h"
 
 #define VIRTIO_DEV_OFFS_TYPE		0	/* 8 bits */
 #define VIRTIO_DEV_OFFS_NUM_VQ		1	/* 8 bits */
diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c
index e25c330..457cbbc 100644
--- a/hw/s390x/s390-virtio.c
+++ b/hw/s390x/s390-virtio.c
@@ -29,7 +29,7 @@ 
 #include "hw/boards.h"
 #include "monitor/monitor.h"
 #include "hw/loader.h"
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "hw/sysbus.h"
 #include "sysemu/kvm.h"
 #include "exec/address-spaces.h"
diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index 231f81e..4c87aa6 100644
--- a/hw/s390x/virtio-ccw.c
+++ b/hw/s390x/virtio-ccw.c
@@ -15,12 +15,12 @@ 
 #include "sysemu/sysemu.h"
 #include "net/net.h"
 #include "monitor/monitor.h"
-#include "hw/virtio.h"
-#include "hw/virtio-serial.h"
-#include "hw/virtio-net.h"
+#include "hw/virtio/virtio.h"
+#include "hw/virtio/virtio-serial.h"
+#include "hw/virtio/virtio-net.h"
 #include "hw/sysbus.h"
 #include "qemu/bitops.h"
-#include "hw/virtio-bus.h"
+#include "hw/virtio/virtio-bus.h"
 
 #include "ioinst.h"
 #include "css.h"
diff --git a/hw/s390x/virtio-ccw.h b/hw/s390x/virtio-ccw.h
index 48474b3..5a89fbc 100644
--- a/hw/s390x/virtio-ccw.h
+++ b/hw/s390x/virtio-ccw.h
@@ -12,11 +12,11 @@ 
 #ifndef HW_S390X_VIRTIO_CCW_H
 #define HW_S390X_VIRTIO_CCW_H
 
-#include <hw/virtio-blk.h>
-#include <hw/virtio-net.h>
-#include <hw/virtio-serial.h>
-#include <hw/virtio-scsi.h>
-#include <hw/virtio-bus.h>
+#include <hw/virtio/virtio-blk.h>
+#include <hw/virtio/virtio-net.h>
+#include <hw/virtio/virtio-serial.h>
+#include <hw/virtio/virtio-scsi.h>
+#include <hw/virtio/virtio-bus.h>
 
 #define VIRTUAL_CSSID 0xfe
 
diff --git a/hw/sb16.c b/hw/sb16.c
index bd51ceb..783b6b4 100644
--- a/hw/sb16.c
+++ b/hw/sb16.c
@@ -22,9 +22,9 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/audiodev.h"
+#include "hw/audio/audio.h"
 #include "audio/audio.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/qdev.h"
 #include "qemu/timer.h"
 #include "qemu/host-utils.h"
diff --git a/hw/scsi-bus.c b/hw/scsi-bus.c
index 163d7a1..ca5d049 100644
--- a/hw/scsi-bus.c
+++ b/hw/scsi-bus.c
@@ -1,7 +1,7 @@ 
 #include "hw/hw.h"
 #include "qemu/error-report.h"
-#include "hw/scsi.h"
-#include "hw/scsi-defs.h"
+#include "hw/scsi/scsi.h"
+#include "hw/scsi/scsi-defs.h"
 #include "hw/qdev.h"
 #include "sysemu/blockdev.h"
 #include "trace.h"
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index 06e1961..f0e55a7 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -30,11 +30,11 @@  do { printf("scsi-disk: " fmt , ## __VA_ARGS__); } while (0)
 
 #include "qemu-common.h"
 #include "qemu/error-report.h"
-#include "hw/scsi.h"
-#include "hw/scsi-defs.h"
+#include "hw/scsi/scsi.h"
+#include "hw/scsi/scsi-defs.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/blockdev.h"
-#include "hw/block-common.h"
+#include "hw/block/block.h"
 #include "sysemu/dma.h"
 
 #ifdef __linux
diff --git a/hw/scsi-generic.c b/hw/scsi-generic.c
index 4d04cac..a86229e 100644
--- a/hw/scsi-generic.c
+++ b/hw/scsi-generic.c
@@ -13,7 +13,7 @@ 
 
 #include "qemu-common.h"
 #include "qemu/error-report.h"
-#include "hw/scsi.h"
+#include "hw/scsi/scsi.h"
 #include "sysemu/blockdev.h"
 
 #ifdef __linux__
@@ -35,7 +35,7 @@  do { fprintf(stderr, "scsi-generic: " fmt , ## __VA_ARGS__); } while (0)
 #include <sys/stat.h>
 #include <unistd.h>
 #include <scsi/sg.h>
-#include "hw/scsi-defs.h"
+#include "hw/scsi/scsi-defs.h"
 
 #define SCSI_SENSE_BUF_SIZE 96
 
diff --git a/hw/serial-isa.c b/hw/serial-isa.c
index a630a7d..ed140d0 100644
--- a/hw/serial-isa.c
+++ b/hw/serial-isa.c
@@ -23,8 +23,8 @@ 
  * THE SOFTWARE.
  */
 
-#include "hw/serial.h"
-#include "hw/isa.h"
+#include "hw/char/serial.h"
+#include "hw/isa/isa.h"
 
 typedef struct ISASerialState {
     ISADevice dev;
diff --git a/hw/serial-pci.c b/hw/serial-pci.c
index 954657b..2138e35 100644
--- a/hw/serial-pci.c
+++ b/hw/serial-pci.c
@@ -25,7 +25,7 @@ 
 
 /* see docs/specs/pci-serial.txt */
 
-#include "hw/serial.h"
+#include "hw/char/serial.h"
 #include "hw/pci/pci.h"
 
 #define PCI_SERIAL_MAX_PORTS 4
diff --git a/hw/serial.c b/hw/serial.c
index 6a83543..d6255a3 100644
--- a/hw/serial.c
+++ b/hw/serial.c
@@ -23,7 +23,7 @@ 
  * THE SOFTWARE.
  */
 
-#include "hw/serial.h"
+#include "hw/char/serial.h"
 #include "char/char.h"
 #include "qemu/timer.h"
 #include "exec/address-spaces.h"
diff --git a/hw/sh7750.c b/hw/sh7750.c
index 6778c94..f49e88e 100644
--- a/hw/sh7750.c
+++ b/hw/sh7750.c
@@ -24,11 +24,11 @@ 
  */
 #include <stdio.h>
 #include "hw/hw.h"
-#include "hw/sh.h"
+#include "hw/sh4/sh.h"
 #include "sysemu/sysemu.h"
 #include "hw/sh7750_regs.h"
 #include "hw/sh7750_regnames.h"
-#include "hw/sh_intc.h"
+#include "hw/sh4/sh_intc.h"
 #include "cpu.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/sh7750_regnames.c b/hw/sh7750_regnames.c
index 389698d..7a3cdf3 100644
--- a/hw/sh7750_regnames.c
+++ b/hw/sh7750_regnames.c
@@ -1,5 +1,5 @@ 
 #include "hw/hw.h"
-#include "hw/sh.h"
+#include "hw/sh4/sh.h"
 #include "hw/sh7750_regs.h"
 #include "hw/sh7750_regnames.h"
 
diff --git a/hw/sh_intc.c b/hw/sh_intc.c
index 9e64e4d..07d71dc 100644
--- a/hw/sh_intc.c
+++ b/hw/sh_intc.c
@@ -8,9 +8,9 @@ 
  * This code is licensed under the GPL.
  */
 
-#include "hw/sh_intc.h"
+#include "hw/sh4/sh_intc.h"
 #include "hw/hw.h"
-#include "hw/sh.h"
+#include "hw/sh4/sh.h"
 
 //#define DEBUG_INTC
 //#define DEBUG_INTC_SOURCES
diff --git a/hw/sh_pci.c b/hw/sh_pci.c
index 96535db..eade0d0 100644
--- a/hw/sh_pci.c
+++ b/hw/sh_pci.c
@@ -22,7 +22,7 @@ 
  * THE SOFTWARE.
  */
 #include "hw/sysbus.h"
-#include "hw/sh.h"
+#include "hw/sh4/sh.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
 #include "qemu/bswap.h"
diff --git a/hw/sh_serial.c b/hw/sh_serial.c
index 40e797c..a7bb8ed 100644
--- a/hw/sh_serial.c
+++ b/hw/sh_serial.c
@@ -25,7 +25,7 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/sh.h"
+#include "hw/sh4/sh.h"
 #include "char/char.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/sh_timer.c b/hw/sh_timer.c
index b450323..f92ff4f 100644
--- a/hw/sh_timer.c
+++ b/hw/sh_timer.c
@@ -9,7 +9,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/sh.h"
+#include "hw/sh4/sh.h"
 #include "qemu/timer.h"
 #include "exec/address-spaces.h"
 #include "hw/ptimer.h"
diff --git a/hw/shix.c b/hw/shix.c
index 192579d..c23d4af 100644
--- a/hw/shix.c
+++ b/hw/shix.c
@@ -28,7 +28,7 @@ 
    More information in target-sh4/README.sh4
 */
 #include "hw/hw.h"
-#include "hw/sh.h"
+#include "hw/sh4/sh.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
 #include "hw/loader.h"
diff --git a/hw/slavio_intctl.c b/hw/slavio_intctl.c
index b60592b..b367752 100644
--- a/hw/slavio_intctl.c
+++ b/hw/slavio_intctl.c
@@ -22,7 +22,7 @@ 
  * THE SOFTWARE.
  */
 
-#include "hw/sun4m.h"
+#include "hw/sparc/sun4m.h"
 #include "monitor/monitor.h"
 #include "hw/sysbus.h"
 #include "trace.h"
diff --git a/hw/slavio_timer.c b/hw/slavio_timer.c
index 83f22a0..1145a87 100644
--- a/hw/slavio_timer.c
+++ b/hw/slavio_timer.c
@@ -22,7 +22,7 @@ 
  * THE SOFTWARE.
  */
 
-#include "hw/sun4m.h"
+#include "hw/sparc/sun4m.h"
 #include "qemu/timer.h"
 #include "hw/ptimer.h"
 #include "hw/sysbus.h"
diff --git a/hw/sm501.c b/hw/sm501.c
index 0e01911..1dd2ef5 100644
--- a/hw/sm501.c
+++ b/hw/sm501.c
@@ -24,9 +24,9 @@ 
 
 #include <stdio.h>
 #include "hw/hw.h"
-#include "hw/serial.h"
+#include "hw/char/serial.h"
 #include "ui/console.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "hw/sysbus.h"
 #include "hw/qdev-addr.h"
 #include "qemu/range.h"
diff --git a/hw/smbios.c b/hw/smbios.c
index 672ee9b..c00bb2f 100644
--- a/hw/smbios.c
+++ b/hw/smbios.c
@@ -14,7 +14,7 @@ 
  */
 
 #include "sysemu/sysemu.h"
-#include "hw/smbios.h"
+#include "hw/i386/smbios.h"
 #include "hw/loader.h"
 
 /*
diff --git a/hw/smbus.c b/hw/smbus.c
index 9626415..25d2d04 100644
--- a/hw/smbus.c
+++ b/hw/smbus.c
@@ -10,8 +10,8 @@ 
 /* TODO: Implement PEC.  */
 
 #include "hw/hw.h"
-#include "hw/i2c.h"
-#include "hw/smbus.h"
+#include "hw/i2c/i2c.h"
+#include "hw/i2c/smbus.h"
 
 //#define DEBUG_SMBUS 1
 
diff --git a/hw/smbus_eeprom.c b/hw/smbus_eeprom.c
index dff8403d..0154283 100644
--- a/hw/smbus_eeprom.c
+++ b/hw/smbus_eeprom.c
@@ -23,8 +23,8 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/i2c.h"
-#include "hw/smbus.h"
+#include "hw/i2c/i2c.h"
+#include "hw/i2c/smbus.h"
 
 //#define DEBUG
 
diff --git a/hw/smbus_ich9.c b/hw/smbus_ich9.c
index 732ebd3..8d0416e 100644
--- a/hw/smbus_ich9.c
+++ b/hw/smbus_ich9.c
@@ -26,13 +26,13 @@ 
  */
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/pm_smbus.h"
+#include "hw/i2c/pm_smbus.h"
 #include "hw/pci/pci.h"
 #include "sysemu/sysemu.h"
-#include "hw/i2c.h"
-#include "hw/smbus.h"
+#include "hw/i2c/i2c.h"
+#include "hw/i2c/smbus.h"
 
-#include "hw/ich9.h"
+#include "hw/i386/ich9.h"
 
 #define TYPE_ICH9_SMB_DEVICE "ICH9 SMB"
 #define ICH9_SMB_DEVICE(obj) \
diff --git a/hw/smc91c111.c b/hw/smc91c111.c
index c2feae6..f659256 100644
--- a/hw/smc91c111.c
+++ b/hw/smc91c111.c
@@ -9,7 +9,7 @@ 
 
 #include "hw/sysbus.h"
 #include "net/net.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 /* For crc32 */
 #include <zlib.h>
 
diff --git a/hw/spapr.c b/hw/spapr.c
index 2709c66..ee152a9 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -34,13 +34,13 @@ 
 #include "kvm_ppc.h"
 
 #include "hw/boards.h"
-#include "hw/ppc.h"
+#include "hw/ppc/ppc.h"
 #include "hw/loader.h"
 
-#include "hw/spapr.h"
-#include "hw/spapr_vio.h"
-#include "hw/spapr_pci.h"
-#include "hw/xics.h"
+#include "hw/ppc/spapr.h"
+#include "hw/ppc/spapr_vio.h"
+#include "hw/pci/host-spapr.h"
+#include "hw/ppc/xics.h"
 #include "hw/pci/msi.h"
 
 #include "sysemu/kvm.h"
diff --git a/hw/spapr_events.c b/hw/spapr_events.c
index ce78f09..ff87ac3 100644
--- a/hw/spapr_events.c
+++ b/hw/spapr_events.c
@@ -30,8 +30,8 @@ 
 #include "hw/qdev.h"
 #include "sysemu/device_tree.h"
 
-#include "hw/spapr.h"
-#include "hw/spapr_vio.h"
+#include "hw/ppc/spapr.h"
+#include "hw/ppc/spapr_vio.h"
 
 #include <libfdt.h>
 
diff --git a/hw/spapr_hcall.c b/hw/spapr_hcall.c
index 2889742..2d0298f 100644
--- a/hw/spapr_hcall.c
+++ b/hw/spapr_hcall.c
@@ -2,7 +2,7 @@ 
 #include "cpu.h"
 #include "sysemu/sysemu.h"
 #include "helper_regs.h"
-#include "hw/spapr.h"
+#include "hw/ppc/spapr.h"
 
 #define HPTES_PER_GROUP 8
 
diff --git a/hw/spapr_iommu.c b/hw/spapr_iommu.c
index 8d500bf..d2782cf 100644
--- a/hw/spapr_iommu.c
+++ b/hw/spapr_iommu.c
@@ -23,7 +23,7 @@ 
 #include "sysemu/dma.h"
 #include "exec/address-spaces.h"
 
-#include "hw/spapr.h"
+#include "hw/ppc/spapr.h"
 
 #include <libfdt.h>
 
diff --git a/hw/spapr_llan.c b/hw/spapr_llan.c
index 5d2565b..f0e09df 100644
--- a/hw/spapr_llan.c
+++ b/hw/spapr_llan.c
@@ -27,8 +27,8 @@ 
 #include "hw/hw.h"
 #include "net/net.h"
 #include "hw/qdev.h"
-#include "hw/spapr.h"
-#include "hw/spapr_vio.h"
+#include "hw/ppc/spapr.h"
+#include "hw/ppc/spapr_vio.h"
 
 #include <libfdt.h>
 
diff --git a/hw/spapr_nvram.c b/hw/spapr_nvram.c
index 680cdba..0cc6cba 100644
--- a/hw/spapr_nvram.c
+++ b/hw/spapr_nvram.c
@@ -26,8 +26,8 @@ 
 
 #include "sysemu/device_tree.h"
 #include "hw/sysbus.h"
-#include "hw/spapr.h"
-#include "hw/spapr_vio.h"
+#include "hw/ppc/spapr.h"
+#include "hw/ppc/spapr_vio.h"
 
 typedef struct sPAPRNVRAM {
     VIOsPAPRDevice sdev;
diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
index 36adbc5..a7228ca 100644
--- a/hw/spapr_pci.c
+++ b/hw/spapr_pci.c
@@ -27,8 +27,8 @@ 
 #include "hw/pci/msi.h"
 #include "hw/pci/msix.h"
 #include "hw/pci/pci_host.h"
-#include "hw/spapr.h"
-#include "hw/spapr_pci.h"
+#include "hw/ppc/spapr.h"
+#include "hw/pci/host-spapr.h"
 #include "exec/address-spaces.h"
 #include <libfdt.h>
 #include "trace.h"
diff --git a/hw/spapr_rtas.c b/hw/spapr_rtas.c
index 5ec787f..35efdbf 100644
--- a/hw/spapr_rtas.c
+++ b/hw/spapr_rtas.c
@@ -30,8 +30,8 @@ 
 #include "hw/qdev.h"
 #include "sysemu/device_tree.h"
 
-#include "hw/spapr.h"
-#include "hw/spapr_vio.h"
+#include "hw/ppc/spapr.h"
+#include "hw/ppc/spapr_vio.h"
 
 #include <libfdt.h>
 
diff --git a/hw/spapr_vio.c b/hw/spapr_vio.c
index 6eb3ab5..4dbc315 100644
--- a/hw/spapr_vio.c
+++ b/hw/spapr_vio.c
@@ -30,9 +30,9 @@ 
 #include "sysemu/device_tree.h"
 #include "kvm_ppc.h"
 
-#include "hw/spapr.h"
-#include "hw/spapr_vio.h"
-#include "hw/xics.h"
+#include "hw/ppc/spapr.h"
+#include "hw/ppc/spapr_vio.h"
+#include "hw/ppc/xics.h"
 
 #ifdef CONFIG_FDT
 #include <libfdt.h>
diff --git a/hw/spapr_vscsi.c b/hw/spapr_vscsi.c
index 2794094..317e40e 100644
--- a/hw/spapr_vscsi.c
+++ b/hw/spapr_vscsi.c
@@ -32,12 +32,12 @@ 
  *  - Maybe do autosense (PAPR seems to mandate it, linux doesn't care)
  */
 #include "hw/hw.h"
-#include "hw/scsi.h"
-#include "hw/scsi-defs.h"
+#include "hw/scsi/scsi.h"
+#include "hw/scsi/scsi-defs.h"
 #include "hw/srp.h"
 #include "hw/qdev.h"
-#include "hw/spapr.h"
-#include "hw/spapr_vio.h"
+#include "hw/ppc/spapr.h"
+#include "hw/ppc/spapr_vio.h"
 #include "hw/ppc-viosrp.h"
 
 #include <libfdt.h>
diff --git a/hw/spapr_vty.c b/hw/spapr_vty.c
index be08571..9df018a 100644
--- a/hw/spapr_vty.c
+++ b/hw/spapr_vty.c
@@ -1,7 +1,7 @@ 
 #include "hw/qdev.h"
 #include "char/char.h"
-#include "hw/spapr.h"
-#include "hw/spapr_vio.h"
+#include "hw/ppc/spapr.h"
+#include "hw/ppc/spapr_vio.h"
 
 #define VTERM_BUFSIZE   16
 
diff --git a/hw/sparc32_dma.c b/hw/sparc32_dma.c
index 18e368e..fd21533 100644
--- a/hw/sparc32_dma.c
+++ b/hw/sparc32_dma.c
@@ -26,8 +26,8 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/sparc32_dma.h"
-#include "hw/sun4m.h"
+#include "hw/sparc/sparc32_dma.h"
+#include "hw/sparc/sun4m.h"
 #include "hw/sysbus.h"
 #include "trace.h"
 
diff --git a/hw/spitz.c b/hw/spitz.c
index f5832be..95cca9b 100644
--- a/hw/spitz.c
+++ b/hw/spitz.c
@@ -11,15 +11,15 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/pxa.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/pxa.h"
+#include "hw/arm/arm.h"
 #include "sysemu/sysemu.h"
-#include "hw/pcmcia.h"
-#include "hw/i2c.h"
+#include "hw/misc/pcmcia.h"
+#include "hw/i2c/i2c.h"
 #include "hw/ssi.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "qemu/timer.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "hw/sharpsl.h"
 #include "ui/console.h"
 #include "block/block.h"
diff --git a/hw/ssd0303.c b/hw/ssd0303.c
index db50909..74ef2ca 100644
--- a/hw/ssd0303.c
+++ b/hw/ssd0303.c
@@ -10,7 +10,7 @@ 
 /* The controller can support a variety of different displays, but we only
    implement one.  Most of the commends relating to brightness and geometry
    setup are ignored. */
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 #include "ui/console.h"
 
 //#define DEBUG_SSD0303 1
diff --git a/hw/stellaris.c b/hw/stellaris.c
index f4ce794..733a05c 100644
--- a/hw/stellaris.c
+++ b/hw/stellaris.c
@@ -9,10 +9,10 @@ 
 
 #include "hw/sysbus.h"
 #include "hw/ssi.h"
-#include "hw/arm-misc.h"
-#include "hw/devices.h"
+#include "hw/arm/arm.h"
+#include "hw/arm/devices.h"
 #include "qemu/timer.h"
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 #include "net/net.h"
 #include "hw/boards.h"
 #include "exec/address-spaces.h"
diff --git a/hw/stellaris_input.c b/hw/stellaris_input.c
index 4e40792..f83fc3f 100644
--- a/hw/stellaris_input.c
+++ b/hw/stellaris_input.c
@@ -7,7 +7,7 @@ 
  * This code is licensed under the GPL.
  */
 #include "hw/hw.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "ui/console.h"
 
 typedef struct {
diff --git a/hw/strongarm.c b/hw/strongarm.c
index 49f9577..d76a73b 100644
--- a/hw/strongarm.c
+++ b/hw/strongarm.c
@@ -29,7 +29,7 @@ 
 #include "hw/sysbus.h"
 #include "hw/strongarm.h"
 #include "qemu/error-report.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/arm.h"
 #include "char/char.h"
 #include "sysemu/sysemu.h"
 #include "hw/ssi.h"
diff --git a/hw/sun4c_intctl.c b/hw/sun4c_intctl.c
index 9d443d1..1096375 100644
--- a/hw/sun4c_intctl.c
+++ b/hw/sun4c_intctl.c
@@ -23,7 +23,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/sun4m.h"
+#include "hw/sparc/sun4m.h"
 #include "monitor/monitor.h"
 #include "hw/sysbus.h"
 
diff --git a/hw/sun4m.c b/hw/sun4m.c
index 37bd041..a45cf5a 100644
--- a/hw/sun4m.c
+++ b/hw/sun4m.c
@@ -23,19 +23,19 @@ 
  */
 #include "hw/sysbus.h"
 #include "qemu/timer.h"
-#include "hw/sun4m.h"
-#include "hw/nvram.h"
-#include "hw/sparc32_dma.h"
-#include "hw/fdc.h"
+#include "hw/sparc/sun4m.h"
+#include "hw/timer/m48t59.h"
+#include "hw/sparc/sparc32_dma.h"
+#include "hw/block/fdc.h"
 #include "sysemu/sysemu.h"
 #include "net/net.h"
 #include "hw/boards.h"
-#include "hw/firmware_abi.h"
-#include "hw/esp.h"
+#include "hw/sparc/firmware_abi.h"
+#include "hw/scsi/esp.h"
 #include "hw/pc.h"
-#include "hw/isa.h"
-#include "hw/fw_cfg.h"
-#include "hw/escc.h"
+#include "hw/isa/isa.h"
+#include "hw/misc/fw_cfg.h"
+#include "hw/char/escc.h"
 #include "hw/empty_slot.h"
 #include "hw/qdev-addr.h"
 #include "hw/loader.h"
diff --git a/hw/sun4m_iommu.c b/hw/sun4m_iommu.c
index 33e77b0..744b584 100644
--- a/hw/sun4m_iommu.c
+++ b/hw/sun4m_iommu.c
@@ -22,7 +22,7 @@ 
  * THE SOFTWARE.
  */
 
-#include "hw/sun4m.h"
+#include "hw/sparc/sun4m.h"
 #include "hw/sysbus.h"
 #include "trace.h"
 
diff --git a/hw/sun4u.c b/hw/sun4u.c
index 51ffa1c..059d1d4 100644
--- a/hw/sun4u.c
+++ b/hw/sun4u.c
@@ -23,17 +23,17 @@ 
  */
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
-#include "hw/apb_pci.h"
+#include "hw/pci/host-apb.h"
 #include "hw/pc.h"
-#include "hw/serial.h"
-#include "hw/nvram.h"
-#include "hw/fdc.h"
+#include "hw/char/serial.h"
+#include "hw/timer/m48t59.h"
+#include "hw/block/fdc.h"
 #include "net/net.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
-#include "hw/firmware_abi.h"
-#include "hw/fw_cfg.h"
+#include "hw/sparc/firmware_abi.h"
+#include "hw/misc/fw_cfg.h"
 #include "hw/sysbus.h"
 #include "hw/ide.h"
 #include "hw/loader.h"
diff --git a/hw/tc58128.c b/hw/tc58128.c
index f76f96d..a3929d4 100644
--- a/hw/tc58128.c
+++ b/hw/tc58128.c
@@ -1,5 +1,5 @@ 
 #include "hw/hw.h"
-#include "hw/sh.h"
+#include "hw/sh4/sh.h"
 #include "hw/loader.h"
 
 #define CE1  0x0100
diff --git a/hw/tc6393xb.c b/hw/tc6393xb.c
index 0755463..d905a1f 100644
--- a/hw/tc6393xb.c
+++ b/hw/tc6393xb.c
@@ -11,8 +11,8 @@ 
  * GNU GPL, version 2 or (at your option) any later version.
  */
 #include "hw/hw.h"
-#include "hw/devices.h"
-#include "hw/flash.h"
+#include "hw/arm/devices.h"
+#include "hw/block/flash.h"
 #include "ui/console.h"
 #include "ui/pixel_ops.h"
 #include "sysemu/blockdev.h"
diff --git a/hw/tmp105.c b/hw/tmp105.c
index 47e5437..21a27a6 100644
--- a/hw/tmp105.c
+++ b/hw/tmp105.c
@@ -19,7 +19,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 #include "hw/tmp105.h"
 #include "qapi/visitor.h"
 
diff --git a/hw/tmp105.h b/hw/tmp105.h
index 9a9632c..b76f94f 100644
--- a/hw/tmp105.h
+++ b/hw/tmp105.h
@@ -14,7 +14,7 @@ 
 #ifndef QEMU_TMP105_H
 #define QEMU_TMP105_H
 
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 #include "hw/tmp105_regs.h"
 
 #define TYPE_TMP105 "tmp105"
diff --git a/hw/tosa.c b/hw/tosa.c
index 747888c..d9028ee 100644
--- a/hw/tosa.c
+++ b/hw/tosa.c
@@ -12,14 +12,14 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/pxa.h"
-#include "hw/arm-misc.h"
-#include "hw/devices.h"
+#include "hw/arm/pxa.h"
+#include "hw/arm/arm.h"
+#include "hw/arm/devices.h"
 #include "hw/sharpsl.h"
-#include "hw/pcmcia.h"
+#include "hw/misc/pcmcia.h"
 #include "block/block.h"
 #include "hw/boards.h"
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 #include "hw/ssi.h"
 #include "sysemu/blockdev.h"
 #include "hw/sysbus.h"
diff --git a/hw/tsc2005.c b/hw/tsc2005.c
index a771cd5..34ee1fb 100644
--- a/hw/tsc2005.c
+++ b/hw/tsc2005.c
@@ -21,7 +21,7 @@ 
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "ui/console.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 
 #define TSC_CUT_RESOLUTION(value, p)	((value) >> (16 - (p ? 12 : 10)))
 
diff --git a/hw/tsc210x.c b/hw/tsc210x.c
index b93e502..e6c217c 100644
--- a/hw/tsc210x.c
+++ b/hw/tsc210x.c
@@ -23,8 +23,8 @@ 
 #include "audio/audio.h"
 #include "qemu/timer.h"
 #include "ui/console.h"
-#include "hw/omap.h"	/* For I2SCodec and uWireSlave */
-#include "hw/devices.h"
+#include "hw/arm/omap.h"	/* For I2SCodec and uWireSlave */
+#include "hw/arm/devices.h"
 
 #define TSC_DATA_REGISTERS_PAGE		0x0
 #define TSC_CONTROL_REGISTERS_PAGE	0x1
diff --git a/hw/tusb6010.c b/hw/tusb6010.c
index a5251a3..533938a 100644
--- a/hw/tusb6010.c
+++ b/hw/tusb6010.c
@@ -21,9 +21,9 @@ 
 #include "qemu-common.h"
 #include "qemu/timer.h"
 #include "hw/usb.h"
-#include "hw/omap.h"
+#include "hw/arm/omap.h"
 #include "hw/irq.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "hw/sysbus.h"
 
 typedef struct TUSBState {
diff --git a/hw/twl92230.c b/hw/twl92230.c
index 7d020c4..b730d85 100644
--- a/hw/twl92230.c
+++ b/hw/twl92230.c
@@ -21,7 +21,7 @@ 
 
 #include "hw/hw.h"
 #include "qemu/timer.h"
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 #include "sysemu/sysemu.h"
 #include "ui/console.h"
 
diff --git a/hw/usb/dev-audio.c b/hw/usb/dev-audio.c
index b8c79b8..44fc43f 100644
--- a/hw/usb/dev-audio.c
+++ b/hw/usb/dev-audio.c
@@ -33,7 +33,7 @@ 
 #include "hw/usb.h"
 #include "hw/usb/desc.h"
 #include "hw/hw.h"
-#include "hw/audiodev.h"
+#include "hw/audio/audio.h"
 #include "audio/audio.h"
 
 #define USBAUDIO_VENDOR_NUM     0x46f4 /* CRC16() of "QEMU" */
diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c
index 29b6481..4f6e402 100644
--- a/hw/usb/dev-hid.c
+++ b/hw/usb/dev-hid.c
@@ -27,7 +27,7 @@ 
 #include "hw/usb.h"
 #include "hw/usb/desc.h"
 #include "qemu/timer.h"
-#include "hw/hid.h"
+#include "hw/input/hid.h"
 
 /* HID interface requests */
 #define GET_REPORT   0xa101
diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c
index b89d00f..d3d236a 100644
--- a/hw/usb/dev-storage.c
+++ b/hw/usb/dev-storage.c
@@ -12,7 +12,7 @@ 
 #include "qemu/config-file.h"
 #include "hw/usb.h"
 #include "hw/usb/desc.h"
-#include "hw/scsi.h"
+#include "hw/scsi/scsi.h"
 #include "ui/console.h"
 #include "monitor/monitor.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/usb/dev-uas.c b/hw/usb/dev-uas.c
index d904d1a..9fe51a1 100644
--- a/hw/usb/dev-uas.c
+++ b/hw/usb/dev-uas.c
@@ -16,8 +16,8 @@ 
 
 #include "hw/usb.h"
 #include "hw/usb/desc.h"
-#include "hw/scsi.h"
-#include "hw/scsi-defs.h"
+#include "hw/scsi/scsi.h"
+#include "hw/scsi/scsi-defs.h"
 
 /* --------------------------------------------------------------------- */
 
diff --git a/hw/versatilepb.c b/hw/versatilepb.c
index baaa265..f31735b 100644
--- a/hw/versatilepb.c
+++ b/hw/versatilepb.c
@@ -8,16 +8,16 @@ 
  */
 
 #include "hw/sysbus.h"
-#include "hw/arm-misc.h"
-#include "hw/devices.h"
+#include "hw/arm/arm.h"
+#include "hw/arm/devices.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
 #include "hw/pci/pci.h"
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 #include "hw/boards.h"
 #include "sysemu/blockdev.h"
 #include "exec/address-spaces.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 
 #define VERSATILE_FLASH_ADDR 0x34000000
 #define VERSATILE_FLASH_SIZE (64 * 1024 * 1024)
diff --git a/hw/vexpress.c b/hw/vexpress.c
index 02922c3..f9dd274 100644
--- a/hw/vexpress.c
+++ b/hw/vexpress.c
@@ -22,15 +22,15 @@ 
  */
 
 #include "hw/sysbus.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/arm.h"
 #include "hw/primecell.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
 #include "exec/address-spaces.h"
 #include "sysemu/blockdev.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 
 #define VEXPRESS_BOARD_ID 0x8e0
 #define VEXPRESS_FLASH_SIZE (64 * 1024 * 1024)
diff --git a/hw/vga.c b/hw/vga.c
index 8f2c08c..54151e6 100644
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -29,7 +29,7 @@ 
 #include "hw/vga_int.h"
 #include "ui/pixel_ops.h"
 #include "qemu/timer.h"
-#include "hw/xen.h"
+#include "sysemu/xen.h"
 #include "trace.h"
 
 //#define DEBUG_VGA
diff --git a/hw/vhost.c b/hw/vhost.c
index 2d25d7e..f756eb5 100644
--- a/hw/vhost.c
+++ b/hw/vhost.c
@@ -14,7 +14,7 @@ 
  */
 
 #include <sys/ioctl.h>
-#include "hw/vhost.h"
+#include "hw/virtio/vhost.h"
 #include "hw/hw.h"
 #include "qemu/range.h"
 #include <linux/vhost.h>
diff --git a/hw/vhost_net.c b/hw/vhost_net.c
index 24940f5..8988e33 100644
--- a/hw/vhost_net.c
+++ b/hw/vhost_net.c
@@ -16,8 +16,8 @@ 
 #include "net/net.h"
 #include "net/tap.h"
 
-#include "hw/virtio-net.h"
-#include "hw/vhost_net.h"
+#include "hw/virtio/virtio-net.h"
+#include "hw/virtio/vhost_net.h"
 #include "qemu/error-report.h"
 
 #include "config.h"
@@ -36,7 +36,7 @@ 
 
 #include <stdio.h>
 
-#include "hw/vhost.h"
+#include "hw/virtio/vhost.h"
 
 struct vhost_net {
     struct vhost_dev dev;
diff --git a/hw/virtex_ml507.c b/hw/virtex_ml507.c
index 41eab16..db52649 100644
--- a/hw/virtex_ml507.c
+++ b/hw/virtex_ml507.c
@@ -24,10 +24,10 @@ 
 
 #include "hw/sysbus.h"
 #include "hw/hw.h"
-#include "hw/serial.h"
-#include "hw/flash.h"
+#include "hw/char/serial.h"
+#include "hw/block/flash.h"
 #include "sysemu/sysemu.h"
-#include "hw/devices.h"
+#include "hw/arm/devices.h"
 #include "hw/boards.h"
 #include "sysemu/device_tree.h"
 #include "hw/loader.h"
@@ -35,8 +35,8 @@ 
 #include "qemu/log.h"
 #include "exec/address-spaces.h"
 
-#include "hw/ppc.h"
-#include "hw/ppc4xx.h"
+#include "hw/ppc/ppc.h"
+#include "hw/ppc/ppc4xx.h"
 #include "hw/ppc405.h"
 
 #include "sysemu/blockdev.h"
diff --git a/hw/virtio-balloon.c b/hw/virtio-balloon.c
index 6bfcddc..3ade0dd 100644
--- a/hw/virtio-balloon.c
+++ b/hw/virtio-balloon.c
@@ -16,11 +16,11 @@ 
 #include "qemu/iov.h"
 #include "qemu/timer.h"
 #include "qemu-common.h"
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "hw/pc.h"
 #include "cpu.h"
 #include "sysemu/balloon.h"
-#include "hw/virtio-balloon.h"
+#include "hw/virtio/virtio-balloon.h"
 #include "sysemu/kvm.h"
 #include "exec/address-spaces.h"
 #include "qapi/visitor.h"
diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c
index 6c1e6e3..ea9c1b0 100644
--- a/hw/virtio-blk.c
+++ b/hw/virtio-blk.c
@@ -14,13 +14,13 @@ 
 #include "qemu-common.h"
 #include "qemu/error-report.h"
 #include "trace.h"
-#include "hw/block-common.h"
+#include "hw/block/block.h"
 #include "sysemu/blockdev.h"
-#include "hw/virtio-blk.h"
+#include "hw/virtio/virtio-blk.h"
 #ifdef CONFIG_VIRTIO_BLK_DATA_PLANE
 #include "hw/dataplane/virtio-blk.h"
 #endif
-#include "hw/scsi-defs.h"
+#include "hw/scsi/scsi-defs.h"
 #ifdef __linux__
 # include <scsi/sg.h>
 #endif
diff --git a/hw/virtio-bus.c b/hw/virtio-bus.c
index 6c2aab0..1596a1c 100644
--- a/hw/virtio-bus.c
+++ b/hw/virtio-bus.c
@@ -25,8 +25,8 @@ 
 #include "hw/hw.h"
 #include "qemu/error-report.h"
 #include "hw/qdev.h"
-#include "hw/virtio-bus.h"
-#include "hw/virtio.h"
+#include "hw/virtio/virtio-bus.h"
+#include "hw/virtio/virtio.h"
 
 /* #define DEBUG_VIRTIO_BUS */
 
diff --git a/hw/virtio-console.c b/hw/virtio-console.c
index b10f5f0..c074e97 100644
--- a/hw/virtio-console.c
+++ b/hw/virtio-console.c
@@ -13,7 +13,7 @@ 
 #include "char/char.h"
 #include "qemu/error-report.h"
 #include "trace.h"
-#include "hw/virtio-serial.h"
+#include "hw/virtio/virtio-serial.h"
 
 typedef struct VirtConsole {
     VirtIOSerialPort port;
diff --git a/hw/virtio-net.c b/hw/virtio-net.c
index b1525a8..daf84f2 100644
--- a/hw/virtio-net.c
+++ b/hw/virtio-net.c
@@ -12,14 +12,14 @@ 
  */
 
 #include "qemu/iov.h"
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "net/net.h"
 #include "net/checksum.h"
 #include "net/tap.h"
 #include "qemu/error-report.h"
 #include "qemu/timer.h"
-#include "hw/virtio-net.h"
-#include "hw/vhost_net.h"
+#include "hw/virtio/virtio-net.h"
+#include "hw/virtio/vhost_net.h"
 
 #define VIRTIO_NET_VM_VERSION    11
 
diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
index 489c2c3..603e64b 100644
--- a/hw/virtio-pci.c
+++ b/hw/virtio-pci.c
@@ -17,11 +17,11 @@ 
 
 #include <inttypes.h>
 
-#include "hw/virtio.h"
-#include "hw/virtio-blk.h"
-#include "hw/virtio-net.h"
-#include "hw/virtio-serial.h"
-#include "hw/virtio-scsi.h"
+#include "hw/virtio/virtio.h"
+#include "hw/virtio/virtio-blk.h"
+#include "hw/virtio/virtio-net.h"
+#include "hw/virtio/virtio-serial.h"
+#include "hw/virtio/virtio-scsi.h"
 #include "hw/pci/pci.h"
 #include "qemu/error-report.h"
 #include "hw/pci/msi.h"
@@ -31,7 +31,7 @@ 
 #include "sysemu/blockdev.h"
 #include "hw/virtio-pci.h"
 #include "qemu/range.h"
-#include "hw/virtio-bus.h"
+#include "hw/virtio/virtio-bus.h"
 
 /* from Linux's linux/virtio_pci.h */
 
diff --git a/hw/virtio-pci.h b/hw/virtio-pci.h
index 2ae96f8..623933e 100644
--- a/hw/virtio-pci.h
+++ b/hw/virtio-pci.h
@@ -16,13 +16,13 @@ 
 #define QEMU_VIRTIO_PCI_H
 
 #include "hw/pci/msi.h"
-#include "hw/virtio-blk.h"
-#include "hw/virtio-net.h"
-#include "hw/virtio-rng.h"
-#include "hw/virtio-serial.h"
-#include "hw/virtio-scsi.h"
-#include "hw/virtio-bus.h"
-#include "hw/9pfs/virtio-9p-device.h"
+#include "hw/virtio/virtio-blk.h"
+#include "hw/virtio/virtio-net.h"
+#include "hw/virtio/virtio-rng.h"
+#include "hw/virtio/virtio-serial.h"
+#include "hw/virtio/virtio-scsi.h"
+#include "hw/virtio/virtio-9p.h"
+#include "hw/virtio/virtio-bus.h"
 
 typedef struct VirtIOPCIProxy VirtIOPCIProxy;
 
diff --git a/hw/virtio-rng.c b/hw/virtio-rng.c
index 54c1421..9983ff2 100644
--- a/hw/virtio-rng.c
+++ b/hw/virtio-rng.c
@@ -12,8 +12,8 @@ 
 #include "qemu/iov.h"
 #include "hw/qdev.h"
 #include "qapi/qmp/qerror.h"
-#include "hw/virtio.h"
-#include "hw/virtio-rng.h"
+#include "hw/virtio/virtio.h"
+#include "hw/virtio/virtio-rng.h"
 #include "qemu/rng.h"
 
 typedef struct VirtIORNG {
diff --git a/hw/virtio-scsi.c b/hw/virtio-scsi.c
index 72cc519..cd5aaf6 100644
--- a/hw/virtio-scsi.c
+++ b/hw/virtio-scsi.c
@@ -13,10 +13,10 @@ 
  *
  */
 
-#include "hw/virtio-scsi.h"
+#include "hw/virtio/virtio-scsi.h"
 #include "qemu/error-report.h"
-#include <hw/scsi.h>
-#include <hw/scsi-defs.h>
+#include <hw/scsi/scsi.h>
+#include <hw/scsi/scsi-defs.h>
 
 #define VIRTIO_SCSI_VQ_SIZE     128
 #define VIRTIO_SCSI_CDB_SIZE    32
diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c
index ada1d01..e3beb4d 100644
--- a/hw/virtio-serial-bus.c
+++ b/hw/virtio-serial-bus.c
@@ -23,7 +23,7 @@ 
 #include "qemu/queue.h"
 #include "hw/sysbus.h"
 #include "trace.h"
-#include "hw/virtio-serial.h"
+#include "hw/virtio/virtio-serial.h"
 
 /* The virtio-serial bus on top of which the ports will ride as devices */
 struct VirtIOSerialBus {
diff --git a/hw/virtio.c b/hw/virtio.c
index 26fbc79..1c2282c 100644
--- a/hw/virtio.c
+++ b/hw/virtio.c
@@ -15,9 +15,9 @@ 
 
 #include "trace.h"
 #include "qemu/error-report.h"
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "qemu/atomic.h"
-#include "hw/virtio-bus.h"
+#include "hw/virtio/virtio-bus.h"
 
 /* The alignment to use between consumer and producer parts of vring.
  * x86 pagesize again. */
diff --git a/hw/vmmouse.c b/hw/vmmouse.c
index a9d227e..8d3b12f 100644
--- a/hw/vmmouse.c
+++ b/hw/vmmouse.c
@@ -23,7 +23,7 @@ 
  */
 #include "hw/hw.h"
 #include "ui/console.h"
-#include "hw/ps2.h"
+#include "hw/input/ps2.h"
 #include "hw/pc.h"
 #include "hw/qdev.h"
 
diff --git a/hw/vmport.c b/hw/vmport.c
index cc1466a..60db782 100644
--- a/hw/vmport.c
+++ b/hw/vmport.c
@@ -22,7 +22,7 @@ 
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/pc.h"
 #include "sysemu/kvm.h"
 #include "hw/qdev.h"
diff --git a/hw/vt82c686.c b/hw/vt82c686.c
index 4529508..3089514 100644
--- a/hw/vt82c686.c
+++ b/hw/vt82c686.c
@@ -12,16 +12,16 @@ 
 
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/vt82c686.h"
-#include "hw/i2c.h"
-#include "hw/smbus.h"
+#include "hw/isa/vt82c686.h"
+#include "hw/i2c/i2c.h"
+#include "hw/i2c/smbus.h"
 #include "hw/pci/pci.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/sysbus.h"
-#include "hw/mips.h"
-#include "hw/apm.h"
-#include "hw/acpi.h"
-#include "hw/pm_smbus.h"
+#include "hw/mips/mips.h"
+#include "hw/isa/apm.h"
+#include "hw/acpi/acpi.h"
+#include "hw/i2c/pm_smbus.h"
 #include "sysemu/sysemu.h"
 #include "qemu/timer.h"
 #include "exec/address-spaces.h"
diff --git a/hw/wdt_ib700.c b/hw/wdt_ib700.c
index 6c52808..312d270 100644
--- a/hw/wdt_ib700.c
+++ b/hw/wdt_ib700.c
@@ -23,7 +23,7 @@ 
 #include "qemu/timer.h"
 #include "hw/watchdog.h"
 #include "hw/hw.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/pc.h"
 
 /*#define IB700_DEBUG 1*/
diff --git a/hw/wm8750.c b/hw/wm8750.c
index 0904cf4..6b5a349 100644
--- a/hw/wm8750.c
+++ b/hw/wm8750.c
@@ -8,7 +8,7 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 #include "audio/audio.h"
 
 #define IN_PORT_N	3
diff --git a/hw/xen_apic.c b/hw/xen_apic.c
index 8f387b6..3e3ec19 100644
--- a/hw/xen_apic.c
+++ b/hw/xen_apic.c
@@ -9,9 +9,9 @@ 
  * This work is licensed under the terms of the GNU GPL version 2 or
  * later. See the COPYING file in the top-level directory.
  */
-#include "hw/apic_internal.h"
+#include "hw/i386/apic_internal.h"
 #include "hw/pci/msi.h"
-#include "hw/xen.h"
+#include "sysemu/xen.h"
 
 static uint64_t xen_apic_mem_read(void *opaque, hwaddr addr,
                                   unsigned size)
diff --git a/hw/xen_backend.c b/hw/xen_backend.c
index 24381b5..f2eddfa 100644
--- a/hw/xen_backend.c
+++ b/hw/xen_backend.c
@@ -37,7 +37,7 @@ 
 #include "hw/hw.h"
 #include "char/char.h"
 #include "qemu/log.h"
-#include "hw/xen_backend.h"
+#include "hw/xen/xen_backend.h"
 
 #include <xen/grant_table.h>
 
diff --git a/hw/xen_console.c b/hw/xen_console.c
index a8db6f8..24b5ca5 100644
--- a/hw/xen_console.c
+++ b/hw/xen_console.c
@@ -31,7 +31,7 @@ 
 
 #include "hw/hw.h"
 #include "char/char.h"
-#include "hw/xen_backend.h"
+#include "hw/xen/xen_backend.h"
 
 #include <xen/io/console.h>
 
diff --git a/hw/xen_devconfig.c b/hw/xen_devconfig.c
index cdcaf62..fa998ef 100644
--- a/hw/xen_devconfig.c
+++ b/hw/xen_devconfig.c
@@ -1,4 +1,4 @@ 
-#include "hw/xen_backend.h"
+#include "hw/xen/xen_backend.h"
 #include "sysemu/blockdev.h"
 
 /* ------------------------------------------------------------- */
diff --git a/hw/xen_disk.c b/hw/xen_disk.c
index cc09a2f..e0dc196 100644
--- a/hw/xen_disk.c
+++ b/hw/xen_disk.c
@@ -36,7 +36,7 @@ 
 #include <sys/uio.h>
 
 #include "hw/hw.h"
-#include "hw/xen_backend.h"
+#include "hw/xen/xen_backend.h"
 #include "hw/xen_blkif.h"
 #include "sysemu/blockdev.h"
 
diff --git a/hw/xen_domainbuild.c b/hw/xen_domainbuild.c
index d477061..ed90b4b 100644
--- a/hw/xen_domainbuild.c
+++ b/hw/xen_domainbuild.c
@@ -1,5 +1,5 @@ 
 #include <signal.h>
-#include "hw/xen_backend.h"
+#include "hw/xen/xen_backend.h"
 #include "hw/xen_domainbuild.h"
 #include "qemu/timer.h"
 #include "qemu/log.h"
diff --git a/hw/xen_domainbuild.h b/hw/xen_domainbuild.h
index 681cbe5..29a91ea 100644
--- a/hw/xen_domainbuild.h
+++ b/hw/xen_domainbuild.h
@@ -1,7 +1,7 @@ 
 #ifndef QEMU_HW_XEN_DOMAINBUILD_H
 #define QEMU_HW_XEN_DOMAINBUILD_H 1
 
-#include "hw/xen_common.h"
+#include "hw/xen/xen_common.h"
 
 int xenstore_domain_init1(const char *kernel, const char *ramdisk,
                           const char *cmdline);
diff --git a/hw/xen_machine_pv.c b/hw/xen_machine_pv.c
index a8177b6..20ffef4 100644
--- a/hw/xen_machine_pv.c
+++ b/hw/xen_machine_pv.c
@@ -25,7 +25,7 @@ 
 #include "hw/hw.h"
 #include "hw/pc.h"
 #include "hw/boards.h"
-#include "hw/xen_backend.h"
+#include "hw/xen/xen_backend.h"
 #include "hw/xen_domainbuild.h"
 #include "sysemu/blockdev.h"
 
diff --git a/hw/xen_nic.c b/hw/xen_nic.c
index b6d3679..63918ae 100644
--- a/hw/xen_nic.c
+++ b/hw/xen_nic.c
@@ -39,7 +39,7 @@ 
 #include "net/net.h"
 #include "net/checksum.h"
 #include "net/util.h"
-#include "hw/xen_backend.h"
+#include "hw/xen/xen_backend.h"
 
 #include <xen/io/netif.h>
 
diff --git a/hw/xen_platform.c b/hw/xen_platform.c
index 5e11c95..79c3a69 100644
--- a/hw/xen_platform.c
+++ b/hw/xen_platform.c
@@ -29,8 +29,8 @@ 
 #include "hw/pc.h"
 #include "hw/pci/pci.h"
 #include "hw/irq.h"
-#include "hw/xen_common.h"
-#include "hw/xen_backend.h"
+#include "hw/xen/xen_common.h"
+#include "hw/xen/xen_backend.h"
 #include "trace.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/xen_pt.c b/hw/xen_pt.c
index ce695d0..2fac523 100644
--- a/hw/xen_pt.c
+++ b/hw/xen_pt.c
@@ -55,8 +55,8 @@ 
 #include <sys/ioctl.h>
 
 #include "hw/pci/pci.h"
-#include "hw/xen.h"
-#include "hw/xen_backend.h"
+#include "sysemu/xen.h"
+#include "hw/xen/xen_backend.h"
 #include "hw/xen_pt.h"
 #include "qemu/range.h"
 #include "exec/address-spaces.h"
diff --git a/hw/xen_pt.h b/hw/xen_pt.h
index 1cd9f44..d2cac18 100644
--- a/hw/xen_pt.h
+++ b/hw/xen_pt.h
@@ -2,7 +2,7 @@ 
 #define XEN_PT_H
 
 #include "qemu-common.h"
-#include "hw/xen_common.h"
+#include "hw/xen/xen_common.h"
 #include "hw/pci/pci.h"
 #include "hw/xen-host-pci-device.h"
 
diff --git a/hw/xen_pt_config_init.c b/hw/xen_pt_config_init.c
index 5583821..3ee2adf 100644
--- a/hw/xen_pt_config_init.c
+++ b/hw/xen_pt_config_init.c
@@ -13,7 +13,7 @@ 
  */
 
 #include "qemu/timer.h"
-#include "hw/xen_backend.h"
+#include "hw/xen/xen_backend.h"
 #include "hw/xen_pt.h"
 
 #define XEN_PT_MERGE_VALUE(value, data, val_mask) \
diff --git a/hw/xen_pt_msi.c b/hw/xen_pt_msi.c
index a54ee2b..dcdfc5c 100644
--- a/hw/xen_pt_msi.c
+++ b/hw/xen_pt_msi.c
@@ -11,9 +11,9 @@ 
 
 #include <sys/mman.h>
 
-#include "hw/xen_backend.h"
+#include "hw/xen/xen_backend.h"
 #include "hw/xen_pt.h"
-#include "hw/apic-msidef.h"
+#include "hw/i386/apic-msidef.h"
 
 
 #define XEN_PT_AUTO_ASSIGN -1
diff --git a/hw/xenfb.c b/hw/xenfb.c
index f5d0ae8..c5d9bbf 100644
--- a/hw/xenfb.c
+++ b/hw/xenfb.c
@@ -38,7 +38,7 @@ 
 #include "hw/hw.h"
 #include "ui/console.h"
 #include "char/char.h"
-#include "hw/xen_backend.h"
+#include "hw/xen/xen_backend.h"
 
 #include <xen/event_channel.h>
 #include <xen/io/fbif.h>
diff --git a/hw/xics.c b/hw/xics.c
index c3ef12f..ed475f5 100644
--- a/hw/xics.c
+++ b/hw/xics.c
@@ -27,8 +27,8 @@ 
 
 #include "hw/hw.h"
 #include "trace.h"
-#include "hw/spapr.h"
-#include "hw/xics.h"
+#include "hw/ppc/spapr.h"
+#include "hw/ppc/xics.h"
 
 /*
  * ICP: Presentation layer
diff --git a/hw/xilinx_zynq.c b/hw/xilinx_zynq.c
index 5948cc6..bc091a8 100644
--- a/hw/xilinx_zynq.c
+++ b/hw/xilinx_zynq.c
@@ -16,12 +16,12 @@ 
  */
 
 #include "hw/sysbus.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/arm.h"
 #include "net/net.h"
 #include "exec/address-spaces.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "sysemu/blockdev.h"
 #include "hw/loader.h"
 #include "hw/ssi.h"
diff --git a/hw/xtensa_lx60.c b/hw/xtensa_lx60.c
index f2a63d8..5695897 100644
--- a/hw/xtensa_lx60.c
+++ b/hw/xtensa_lx60.c
@@ -31,10 +31,10 @@ 
 #include "elf.h"
 #include "exec/memory.h"
 #include "exec/address-spaces.h"
-#include "hw/serial.h"
+#include "hw/char/serial.h"
 #include "net/net.h"
 #include "hw/sysbus.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "sysemu/blockdev.h"
 #include "char/char.h"
 #include "hw/xtensa_bootparam.h"
diff --git a/hw/z2.c b/hw/z2.c
index cbb6d80..0ee55bc 100644
--- a/hw/z2.c
+++ b/hw/z2.c
@@ -12,14 +12,14 @@ 
  */
 
 #include "hw/hw.h"
-#include "hw/pxa.h"
-#include "hw/arm-misc.h"
-#include "hw/devices.h"
-#include "hw/i2c.h"
+#include "hw/arm/pxa.h"
+#include "hw/arm/arm.h"
+#include "hw/arm/devices.h"
+#include "hw/i2c/i2c.h"
 #include "hw/ssi.h"
 #include "hw/boards.h"
 #include "sysemu/sysemu.h"
-#include "hw/flash.h"
+#include "hw/block/flash.h"
 #include "sysemu/blockdev.h"
 #include "ui/console.h"
 #include "audio/audio.h"
diff --git a/include/exec/memory-internal.h b/include/exec/memory-internal.h
index 1da2400..0d842f1 100644
--- a/include/exec/memory-internal.h
+++ b/include/exec/memory-internal.h
@@ -20,7 +20,7 @@ 
 #define MEMORY_INTERNAL_H
 
 #ifndef CONFIG_USER_ONLY
-#include "hw/xen.h"
+#include "sysemu/xen.h"
 
 typedef struct PhysPageEntry PhysPageEntry;
 
diff --git a/hw/acpi.h b/include/hw/acpi/acpi.h
similarity index 100%
rename from hw/acpi.h
rename to include/hw/acpi/acpi.h
diff --git a/hw/acpi_ich9.h b/include/hw/acpi/ich9.h
similarity index 98%
rename from hw/acpi_ich9.h
rename to include/hw/acpi/ich9.h
index 91c3aeb..85b82ee 100644
--- a/hw/acpi_ich9.h
+++ b/include/hw/acpi/ich9.h
@@ -21,7 +21,7 @@ 
 #ifndef HW_ACPI_ICH9_H
 #define HW_ACPI_ICH9_H
 
-#include "hw/acpi.h"
+#include "hw/acpi/acpi.h"
 
 typedef struct ICH9LPCPMRegs {
     /*
diff --git a/hw/adb.h b/include/hw/adb.h
similarity index 100%
rename from hw/adb.h
rename to include/hw/adb.h
diff --git a/hw/arm-misc.h b/include/hw/arm/arm.h
similarity index 100%
rename from hw/arm-misc.h
rename to include/hw/arm/arm.h
diff --git a/hw/devices.h b/include/hw/arm/devices.h
similarity index 100%
rename from hw/devices.h
rename to include/hw/arm/devices.h
diff --git a/hw/exynos4210.h b/include/hw/arm/exynos4210.h
similarity index 100%
rename from hw/exynos4210.h
rename to include/hw/arm/exynos4210.h
diff --git a/hw/imx.h b/include/hw/arm/imx.h
similarity index 100%
rename from hw/imx.h
rename to include/hw/arm/imx.h
diff --git a/hw/omap.h b/include/hw/arm/omap.h
similarity index 100%
rename from hw/omap.h
rename to include/hw/arm/omap.h
diff --git a/hw/pxa.h b/include/hw/arm/pxa.h
similarity index 100%
rename from hw/pxa.h
rename to include/hw/arm/pxa.h
diff --git a/hw/audiodev.h b/include/hw/audio/audio.h
similarity index 100%
rename from hw/audiodev.h
rename to include/hw/audio/audio.h
diff --git a/hw/pcspk.h b/include/hw/audio/pcspk.h
similarity index 98%
rename from hw/pcspk.h
rename to include/hw/audio/pcspk.h
index f448d22..ce8ef4f 100644
--- a/hw/pcspk.h
+++ b/include/hw/audio/pcspk.h
@@ -26,7 +26,7 @@ 
 #define HW_PCSPK_H
 
 #include "hw/hw.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 
 static inline ISADevice *pcspk_init(ISABus *bus, ISADevice *pit)
 {
diff --git a/hw/block-common.h b/include/hw/block/block.h
similarity index 100%
rename from hw/block-common.h
rename to include/hw/block/block.h
diff --git a/hw/fdc.h b/include/hw/block/fdc.h
similarity index 100%
rename from hw/fdc.h
rename to include/hw/block/fdc.h
diff --git a/hw/flash.h b/include/hw/block/flash.h
similarity index 100%
rename from hw/flash.h
rename to include/hw/block/flash.h
diff --git a/hw/boards.h b/include/hw/boards.h
similarity index 100%
rename from hw/boards.h
rename to include/hw/boards.h
diff --git a/hw/bt.h b/include/hw/bt.h
similarity index 100%
rename from hw/bt.h
rename to include/hw/bt.h
diff --git a/hw/escc.h b/include/hw/char/escc.h
similarity index 100%
rename from hw/escc.h
rename to include/hw/char/escc.h
diff --git a/hw/lm32_juart.h b/include/hw/char/lm32_juart.h
similarity index 100%
rename from hw/lm32_juart.h
rename to include/hw/char/lm32_juart.h
diff --git a/hw/serial.h b/include/hw/char/serial.h
similarity index 100%
rename from hw/serial.h
rename to include/hw/char/serial.h
diff --git a/hw/etraxfs.h b/include/hw/cris/etraxfs.h
similarity index 98%
rename from hw/etraxfs.h
rename to include/hw/cris/etraxfs.h
index 0df4fdd..ab30559 100644
--- a/hw/etraxfs.h
+++ b/include/hw/cris/etraxfs.h
@@ -26,7 +26,7 @@ 
 #define HW_EXTRAXFS_H 1
 
 #include "net/net.h"
-#include "hw/etraxfs_dma.h"
+#include "hw/cris/etraxfs_dma.h"
 
 qemu_irq *cris_pic_init_cpu(CPUCRISState *env);
 
diff --git a/hw/etraxfs_dma.h b/include/hw/cris/etraxfs_dma.h
similarity index 100%
rename from hw/etraxfs_dma.h
rename to include/hw/cris/etraxfs_dma.h
diff --git a/hw/elf_ops.h b/include/hw/elf_ops.h
similarity index 100%
rename from hw/elf_ops.h
rename to include/hw/elf_ops.h
diff --git a/hw/empty_slot.h b/include/hw/empty_slot.h
similarity index 100%
rename from hw/empty_slot.h
rename to include/hw/empty_slot.h
diff --git a/hw/hw.h b/include/hw/hw.h
similarity index 100%
rename from hw/hw.h
rename to include/hw/hw.h
diff --git a/hw/i2c.h b/include/hw/i2c/i2c.h
similarity index 100%
rename from hw/i2c.h
rename to include/hw/i2c/i2c.h
diff --git a/hw/pm_smbus.h b/include/hw/i2c/pm_smbus.h
similarity index 100%
rename from hw/pm_smbus.h
rename to include/hw/i2c/pm_smbus.h
diff --git a/hw/smbus.h b/include/hw/i2c/smbus.h
similarity index 99%
rename from hw/smbus.h
rename to include/hw/i2c/smbus.h
index c3db620..d764d75 100644
--- a/hw/smbus.h
+++ b/include/hw/i2c/smbus.h
@@ -25,7 +25,7 @@ 
  * THE SOFTWARE.
  */
 
-#include "hw/i2c.h"
+#include "hw/i2c/i2c.h"
 
 #define TYPE_SMBUS_DEVICE "smbus-device"
 #define SMBUS_DEVICE(obj) \
diff --git a/hw/apic-msidef.h b/include/hw/i386/apic-msidef.h
similarity index 100%
rename from hw/apic-msidef.h
rename to include/hw/i386/apic-msidef.h
diff --git a/hw/apic.h b/include/hw/i386/apic.h
similarity index 100%
rename from hw/apic.h
rename to include/hw/i386/apic.h
diff --git a/hw/apic_internal.h b/include/hw/i386/apic_internal.h
similarity index 100%
rename from hw/apic_internal.h
rename to include/hw/i386/apic_internal.h
diff --git a/hw/ich9.h b/include/hw/i386/ich9.h
similarity index 98%
rename from hw/ich9.h
rename to include/hw/i386/ich9.h
index 59c25e9..9684e89 100644
--- a/hw/ich9.h
+++ b/include/hw/i386/ich9.h
@@ -3,17 +3,17 @@ 
 
 #include "hw/hw.h"
 #include "qemu/range.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/sysbus.h"
 #include "hw/pc.h"
-#include "hw/apm.h"
-#include "hw/ioapic.h"
+#include "hw/isa/apm.h"
+#include "hw/i386/ioapic.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pcie_host.h"
 #include "hw/pci/pci_bridge.h"
-#include "hw/acpi.h"
-#include "hw/acpi_ich9.h"
-#include "hw/pam.h"
+#include "hw/acpi/acpi.h"
+#include "hw/acpi/ich9.h"
+#include "hw/pci/pam.h"
 #include "hw/pci/pci_bus.h"
 
 void ich9_lpc_set_irq(void *opaque, int irq_num, int level);
diff --git a/hw/ioapic.h b/include/hw/i386/ioapic.h
similarity index 100%
rename from hw/ioapic.h
rename to include/hw/i386/ioapic.h
diff --git a/hw/ioapic_internal.h b/include/hw/i386/ioapic_internal.h
similarity index 100%
rename from hw/ioapic_internal.h
rename to include/hw/i386/ioapic_internal.h
diff --git a/hw/smbios.h b/include/hw/i386/smbios.h
similarity index 100%
rename from hw/smbios.h
rename to include/hw/i386/smbios.h
diff --git a/hw/ide.h b/include/hw/ide.h
similarity index 97%
rename from hw/ide.h
rename to include/hw/ide.h
index 35444a3..507e6d3 100644
--- a/hw/ide.h
+++ b/include/hw/ide.h
@@ -1,7 +1,7 @@ 
 #ifndef HW_IDE_H
 #define HW_IDE_H
 
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/pci/pci.h"
 #include "exec/memory.h"
 
diff --git a/hw/hid.h b/include/hw/input/hid.h
similarity index 100%
rename from hw/hid.h
rename to include/hw/input/hid.h
diff --git a/hw/ps2.h b/include/hw/input/ps2.h
similarity index 100%
rename from hw/ps2.h
rename to include/hw/input/ps2.h
diff --git a/hw/irq.h b/include/hw/irq.h
similarity index 100%
rename from hw/irq.h
rename to include/hw/irq.h
diff --git a/hw/apm.h b/include/hw/isa/apm.h
similarity index 100%
rename from hw/apm.h
rename to include/hw/isa/apm.h
diff --git a/hw/i8259_internal.h b/include/hw/isa/i8259_internal.h
similarity index 99%
rename from hw/i8259_internal.h
rename to include/hw/isa/i8259_internal.h
index 2813ec1..76b40aa 100644
--- a/hw/i8259_internal.h
+++ b/include/hw/isa/i8259_internal.h
@@ -27,7 +27,7 @@ 
 
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 
 typedef struct PICCommonState PICCommonState;
 
diff --git a/hw/isa.h b/include/hw/isa/isa.h
similarity index 100%
rename from hw/isa.h
rename to include/hw/isa/isa.h
diff --git a/hw/pc87312.h b/include/hw/isa/pc87312.h
similarity index 98%
rename from hw/pc87312.h
rename to include/hw/isa/pc87312.h
index ad087c7..befc8bd 100644
--- a/hw/pc87312.h
+++ b/include/hw/isa/pc87312.h
@@ -25,7 +25,7 @@ 
 #ifndef QEMU_PC87312_H
 #define QEMU_PC87312_H
 
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 
 
 #define TYPE_PC87312 "pc87312"
diff --git a/hw/vt82c686.h b/include/hw/isa/vt82c686.h
similarity index 100%
rename from hw/vt82c686.h
rename to include/hw/isa/vt82c686.h
diff --git a/hw/kvm/clock.h b/include/hw/kvm/clock.h
similarity index 100%
rename from hw/kvm/clock.h
rename to include/hw/kvm/clock.h
diff --git a/hw/lm32_pic.h b/include/hw/lm32/lm32_pic.h
similarity index 100%
rename from hw/lm32_pic.h
rename to include/hw/lm32/lm32_pic.h
diff --git a/hw/loader.h b/include/hw/loader.h
similarity index 100%
rename from hw/loader.h
rename to include/hw/loader.h
diff --git a/hw/mcf.h b/include/hw/m68k/mcf.h
similarity index 100%
rename from hw/mcf.h
rename to include/hw/m68k/mcf.h
diff --git a/hw/mips-bios.h b/include/hw/mips/bios.h
similarity index 100%
rename from hw/mips-bios.h
rename to include/hw/mips/bios.h
diff --git a/hw/mips_cpudevs.h b/include/hw/mips/cpudevs.h
similarity index 100%
rename from hw/mips_cpudevs.h
rename to include/hw/mips/cpudevs.h
diff --git a/hw/mips.h b/include/hw/mips/mips.h
similarity index 100%
rename from hw/mips.h
rename to include/hw/mips/mips.h
diff --git a/hw/eeprom93xx.h b/include/hw/misc/eeprom93xx.h
similarity index 100%
rename from hw/eeprom93xx.h
rename to include/hw/misc/eeprom93xx.h
diff --git a/hw/fw_cfg.h b/include/hw/misc/fw_cfg.h
similarity index 100%
rename from hw/fw_cfg.h
rename to include/hw/misc/fw_cfg.h
diff --git a/hw/pcmcia.h b/include/hw/misc/pcmcia.h
similarity index 100%
rename from hw/pcmcia.h
rename to include/hw/misc/pcmcia.h
diff --git a/hw/pc.h b/include/hw/pc.h
similarity index 98%
rename from hw/pc.h
rename to include/hw/pc.h
index e428714..c7389e2 100644
--- a/hw/pc.h
+++ b/include/hw/pc.h
@@ -4,11 +4,11 @@ 
 #include "qemu-common.h"
 #include "exec/memory.h"
 #include "exec/ioport.h"
-#include "hw/isa.h"
-#include "hw/fdc.h"
+#include "hw/isa/isa.h"
+#include "hw/block/fdc.h"
 #include "net/net.h"
 #include "exec/memory.h"
-#include "hw/ioapic.h"
+#include "hw/i386/ioapic.h"
 
 /* PC-style peripherals (also used by other machines).  */
 
diff --git a/hw/apb_pci.h b/include/hw/pci/host-apb.h
similarity index 100%
rename from hw/apb_pci.h
rename to include/hw/pci/host-apb.h
diff --git a/hw/spapr_pci.h b/include/hw/pci/host-spapr.h
similarity index 99%
rename from hw/spapr_pci.h
rename to include/hw/pci/host-spapr.h
index 8bb3c62..f32a04b 100644
--- a/hw/spapr_pci.h
+++ b/include/hw/pci/host-spapr.h
@@ -25,7 +25,7 @@ 
 
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
-#include "hw/xics.h"
+#include "hw/ppc/xics.h"
 
 #define SPAPR_MSIX_MAX_DEVS 32
 
diff --git a/hw/alpha_sys.h b/include/hw/pci/host-typhoon.h
similarity index 100%
rename from hw/alpha_sys.h
rename to include/hw/pci/host-typhoon.h
diff --git a/hw/pam.h b/include/hw/pci/pam.h
similarity index 100%
rename from hw/pam.h
rename to include/hw/pci/pam.h
diff --git a/hw/q35.h b/include/hw/pci/q35.h
similarity index 97%
rename from hw/q35.h
rename to include/hw/pci/q35.h
index d766bb7..5e27e5d 100644
--- a/hw/q35.h
+++ b/include/hw/pci/q35.h
@@ -24,16 +24,16 @@ 
 
 #include "hw/hw.h"
 #include "qemu/range.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "hw/sysbus.h"
 #include "hw/pc.h"
-#include "hw/apm.h"
-#include "hw/apic.h"
+#include "hw/isa/apm.h"
+#include "hw/i386/apic.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pcie_host.h"
-#include "hw/acpi.h"
-#include "hw/acpi_ich9.h"
-#include "hw/pam.h"
+#include "hw/acpi/acpi.h"
+#include "hw/acpi/ich9.h"
+#include "hw/pci/pam.h"
 
 #define TYPE_Q35_HOST_DEVICE "q35-pcihost"
 #define Q35_HOST_DEVICE(obj) \
diff --git a/hw/mac_dbdma.h b/include/hw/ppc/mac_dbdma.h
similarity index 100%
rename from hw/mac_dbdma.h
rename to include/hw/ppc/mac_dbdma.h
diff --git a/hw/ppc.h b/include/hw/ppc/ppc.h
similarity index 100%
rename from hw/ppc.h
rename to include/hw/ppc/ppc.h
diff --git a/hw/ppc4xx.h b/include/hw/ppc/ppc4xx.h
similarity index 100%
rename from hw/ppc4xx.h
rename to include/hw/ppc/ppc4xx.h
diff --git a/hw/spapr.h b/include/hw/ppc/spapr.h
similarity index 99%
rename from hw/spapr.h
rename to include/hw/ppc/spapr.h
index 3a1f69f..864bee9 100644
--- a/hw/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -2,7 +2,7 @@ 
 #define __HW_SPAPR_H__
 
 #include "sysemu/dma.h"
-#include "hw/xics.h"
+#include "hw/ppc/xics.h"
 
 struct VIOsPAPRBus;
 struct sPAPRPHBState;
diff --git a/hw/spapr_vio.h b/include/hw/ppc/spapr_vio.h
similarity index 100%
rename from hw/spapr_vio.h
rename to include/hw/ppc/spapr_vio.h
diff --git a/hw/xics.h b/include/hw/ppc/xics.h
similarity index 100%
rename from hw/xics.h
rename to include/hw/ppc/xics.h
diff --git a/hw/ptimer.h b/include/hw/ptimer.h
similarity index 100%
rename from hw/ptimer.h
rename to include/hw/ptimer.h
diff --git a/hw/qdev-addr.h b/include/hw/qdev-addr.h
similarity index 100%
rename from hw/qdev-addr.h
rename to include/hw/qdev-addr.h
diff --git a/hw/qdev-core.h b/include/hw/qdev-core.h
similarity index 100%
rename from hw/qdev-core.h
rename to include/hw/qdev-core.h
diff --git a/hw/qdev-dma.h b/include/hw/qdev-dma.h
similarity index 100%
rename from hw/qdev-dma.h
rename to include/hw/qdev-dma.h
diff --git a/hw/qdev-properties.h b/include/hw/qdev-properties.h
similarity index 100%
rename from hw/qdev-properties.h
rename to include/hw/qdev-properties.h
diff --git a/hw/qdev.h b/include/hw/qdev.h
similarity index 100%
rename from hw/qdev.h
rename to include/hw/qdev.h
diff --git a/hw/s390x/event-facility.h b/include/hw/s390x/event-facility.h
similarity index 100%
rename from hw/s390x/event-facility.h
rename to include/hw/s390x/event-facility.h
diff --git a/hw/s390x/sclp.h b/include/hw/s390x/sclp.h
similarity index 100%
rename from hw/s390x/sclp.h
rename to include/hw/s390x/sclp.h
diff --git a/hw/esp.h b/include/hw/scsi/esp.h
similarity index 99%
rename from hw/esp.h
rename to include/hw/scsi/esp.h
index 830673b..e079fb8 100644
--- a/hw/esp.h
+++ b/include/hw/scsi/esp.h
@@ -1,7 +1,7 @@ 
 #ifndef QEMU_HW_ESP_H
 #define QEMU_HW_ESP_H
 
-#include "hw/scsi.h"
+#include "hw/scsi/scsi.h"
 
 /* esp.c */
 #define ESP_MAX_DEVS 7
diff --git a/hw/scsi-defs.h b/include/hw/scsi/scsi-defs.h
similarity index 100%
rename from hw/scsi-defs.h
rename to include/hw/scsi/scsi-defs.h
diff --git a/hw/scsi.h b/include/hw/scsi/scsi.h
similarity index 99%
rename from hw/scsi.h
rename to include/hw/scsi/scsi.h
index 33e2e0b..69b2bf5 100644
--- a/hw/scsi.h
+++ b/include/hw/scsi/scsi.h
@@ -3,7 +3,7 @@ 
 
 #include "hw/qdev.h"
 #include "block/block.h"
-#include "hw/block-common.h"
+#include "hw/block/block.h"
 #include "sysemu/sysemu.h"
 
 #define MAX_SCSI_DEVS	255
diff --git a/hw/sd.h b/include/hw/sd.h
similarity index 100%
rename from hw/sd.h
rename to include/hw/sd.h
diff --git a/hw/sh.h b/include/hw/sh4/sh.h
similarity index 98%
rename from hw/sh.h
rename to include/hw/sh4/sh.h
index 6230954..87c378f 100644
--- a/hw/sh.h
+++ b/include/hw/sh4/sh.h
@@ -2,7 +2,7 @@ 
 #define QEMU_SH_H
 /* Definitions for SH board emulation.  */
 
-#include "hw/sh_intc.h"
+#include "hw/sh4/sh_intc.h"
 
 #define A7ADDR(x) ((x) & 0x1fffffff)
 #define P4ADDR(x) ((x) | 0xe0000000)
diff --git a/hw/sh_intc.h b/include/hw/sh4/sh_intc.h
similarity index 100%
rename from hw/sh_intc.h
rename to include/hw/sh4/sh_intc.h
diff --git a/hw/firmware_abi.h b/include/hw/sparc/firmware_abi.h
similarity index 100%
rename from hw/firmware_abi.h
rename to include/hw/sparc/firmware_abi.h
diff --git a/hw/sparc32_dma.h b/include/hw/sparc/sparc32_dma.h
similarity index 100%
rename from hw/sparc32_dma.h
rename to include/hw/sparc/sparc32_dma.h
diff --git a/hw/sun4m.h b/include/hw/sparc/sun4m.h
similarity index 96%
rename from hw/sun4m.h
rename to include/hw/sparc/sun4m.h
index 0d2cfb8..e984671 100644
--- a/hw/sun4m.h
+++ b/include/hw/sparc/sun4m.h
@@ -31,6 +31,6 @@  void sun4m_pic_info(Monitor *mon, const QDict *qdict);
 void sun4m_irq_info(Monitor *mon, const QDict *qdict);
 
 /* sparc32_dma.c */
-#include "hw/sparc32_dma.h"
+#include "hw/sparc/sparc32_dma.h"
 
 #endif
diff --git a/hw/ssi.h b/include/hw/ssi.h
similarity index 100%
rename from hw/ssi.h
rename to include/hw/ssi.h
diff --git a/hw/stream.h b/include/hw/stream.h
similarity index 100%
rename from hw/stream.h
rename to include/hw/stream.h
diff --git a/hw/sysbus.h b/include/hw/sysbus.h
similarity index 100%
rename from hw/sysbus.h
rename to include/hw/sysbus.h
diff --git a/hw/hpet_emul.h b/include/hw/timer/hpet.h
similarity index 100%
rename from hw/hpet_emul.h
rename to include/hw/timer/hpet.h
diff --git a/hw/i8254.h b/include/hw/timer/i8254.h
similarity index 98%
rename from hw/i8254.h
rename to include/hw/timer/i8254.h
index 7d4432e..75bb530 100644
--- a/hw/i8254.h
+++ b/include/hw/timer/i8254.h
@@ -26,7 +26,7 @@ 
 #define HW_I8254_H
 
 #include "hw/hw.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 
 #define PIT_FREQ 1193182
 
diff --git a/hw/i8254_internal.h b/include/hw/timer/i8254_internal.h
similarity index 99%
rename from hw/i8254_internal.h
rename to include/hw/timer/i8254_internal.h
index 30d5b1b..1645f11 100644
--- a/hw/i8254_internal.h
+++ b/include/hw/timer/i8254_internal.h
@@ -27,7 +27,7 @@ 
 
 #include "hw/hw.h"
 #include "hw/pc.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 
 typedef struct PITChannelState {
     int count; /* can be 65536 */
diff --git a/hw/nvram.h b/include/hw/timer/m48t59.h
similarity index 100%
rename from hw/nvram.h
rename to include/hw/timer/m48t59.h
diff --git a/hw/mc146818rtc.h b/include/hw/timer/mc146818rtc.h
similarity index 80%
rename from hw/mc146818rtc.h
rename to include/hw/timer/mc146818rtc.h
index 967403e..854ea3f 100644
--- a/hw/mc146818rtc.h
+++ b/include/hw/timer/mc146818rtc.h
@@ -1,8 +1,8 @@ 
 #ifndef MC146818RTC_H
 #define MC146818RTC_H
 
-#include "hw/isa.h"
-#include "hw/mc146818rtc_regs.h"
+#include "hw/isa/isa.h"
+#include "hw/timer/mc146818rtc_regs.h"
 
 ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq);
 void rtc_set_memory(ISADevice *dev, int addr, int val);
diff --git a/hw/mc146818rtc_regs.h b/include/hw/timer/mc146818rtc_regs.h
similarity index 100%
rename from hw/mc146818rtc_regs.h
rename to include/hw/timer/mc146818rtc_regs.h
diff --git a/hw/puv3.h b/include/hw/unicore32/puv3.h
similarity index 100%
rename from hw/puv3.h
rename to include/hw/unicore32/puv3.h
diff --git a/hw/usb.h b/include/hw/usb.h
similarity index 100%
rename from hw/usb.h
rename to include/hw/usb.h
diff --git a/hw/vhost.h b/include/hw/virtio/vhost.h
similarity index 98%
rename from hw/vhost.h
rename to include/hw/virtio/vhost.h
index f062d48..b373be0 100644
--- a/hw/vhost.h
+++ b/include/hw/virtio/vhost.h
@@ -2,7 +2,7 @@ 
 #define VHOST_H
 
 #include "hw/hw.h"
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "exec/memory.h"
 
 /* Generic structures common for any vhost based device. */
diff --git a/hw/vhost_net.h b/include/hw/virtio/vhost_net.h
similarity index 100%
rename from hw/vhost_net.h
rename to include/hw/virtio/vhost_net.h
diff --git a/hw/9pfs/virtio-9p-device.h b/include/hw/virtio/virtio-9p.h
similarity index 100%
rename from hw/9pfs/virtio-9p-device.h
rename to include/hw/virtio/virtio-9p.h
diff --git a/hw/virtio-balloon.h b/include/hw/virtio/virtio-balloon.h
similarity index 98%
rename from hw/virtio-balloon.h
rename to include/hw/virtio/virtio-balloon.h
index f37f31b..040d44b 100644
--- a/hw/virtio-balloon.h
+++ b/include/hw/virtio/virtio-balloon.h
@@ -15,7 +15,7 @@ 
 #ifndef _QEMU_VIRTIO_BALLOON_H
 #define _QEMU_VIRTIO_BALLOON_H
 
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "hw/pci/pci.h"
 
 /* from Linux's linux/virtio_balloon.h */
diff --git a/hw/virtio-blk.h b/include/hw/virtio/virtio-blk.h
similarity index 98%
rename from hw/virtio-blk.h
rename to include/hw/virtio/virtio-blk.h
index 7ef2f35..11e78d6 100644
--- a/hw/virtio-blk.h
+++ b/include/hw/virtio/virtio-blk.h
@@ -14,8 +14,8 @@ 
 #ifndef _QEMU_VIRTIO_BLK_H
 #define _QEMU_VIRTIO_BLK_H
 
-#include "hw/virtio.h"
-#include "hw/block-common.h"
+#include "hw/virtio/virtio.h"
+#include "hw/block/block.h"
 
 /* from Linux's linux/virtio_blk.h */
 
diff --git a/hw/virtio-bus.h b/include/hw/virtio/virtio-bus.h
similarity index 99%
rename from hw/virtio-bus.h
rename to include/hw/virtio/virtio-bus.h
index ae0f707..311e8c7 100644
--- a/hw/virtio-bus.h
+++ b/include/hw/virtio/virtio-bus.h
@@ -27,7 +27,7 @@ 
 
 #include "hw/qdev.h"
 #include "sysemu/sysemu.h"
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 
 #define TYPE_VIRTIO_BUS "virtio-bus"
 #define VIRTIO_BUS_GET_CLASS(obj) \
diff --git a/hw/virtio-net.h b/include/hw/virtio/virtio-net.h
similarity index 99%
rename from hw/virtio-net.h
rename to include/hw/virtio/virtio-net.h
index 2bfb9fd..cfb0e4a 100644
--- a/hw/virtio-net.h
+++ b/include/hw/virtio/virtio-net.h
@@ -14,7 +14,7 @@ 
 #ifndef _QEMU_VIRTIO_NET_H
 #define _QEMU_VIRTIO_NET_H
 
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "hw/pci/pci.h"
 
 #define ETH_ALEN    6
diff --git a/hw/virtio-rng.h b/include/hw/virtio/virtio-rng.h
similarity index 100%
rename from hw/virtio-rng.h
rename to include/hw/virtio/virtio-rng.h
diff --git a/hw/virtio-scsi.h b/include/hw/virtio/virtio-scsi.h
similarity index 97%
rename from hw/virtio-scsi.h
rename to include/hw/virtio/virtio-scsi.h
index 81b3279..096bd57 100644
--- a/hw/virtio-scsi.h
+++ b/include/hw/virtio/virtio-scsi.h
@@ -14,7 +14,7 @@ 
 #ifndef _QEMU_VIRTIO_SCSI_H
 #define _QEMU_VIRTIO_SCSI_H
 
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 #include "hw/pci/pci.h"
 
 /* The ID for virtio_scsi */
diff --git a/hw/virtio-serial.h b/include/hw/virtio/virtio-serial.h
similarity index 99%
rename from hw/virtio-serial.h
rename to include/hw/virtio/virtio-serial.h
index d2d9fb7..b07e45c 100644
--- a/hw/virtio-serial.h
+++ b/include/hw/virtio/virtio-serial.h
@@ -16,7 +16,7 @@ 
 #define _QEMU_VIRTIO_SERIAL_H
 
 #include "hw/qdev.h"
-#include "hw/virtio.h"
+#include "hw/virtio/virtio.h"
 
 /* == Interface shared between the guest kernel and qemu == */
 
diff --git a/hw/virtio.h b/include/hw/virtio/virtio.h
similarity index 99%
rename from hw/virtio.h
rename to include/hw/virtio/virtio.h
index fdab67e..d8d7dd6 100644
--- a/hw/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -20,7 +20,7 @@ 
 #include "sysemu/sysemu.h"
 #include "qemu/event_notifier.h"
 #ifdef CONFIG_VIRTFS
-#include "hw/9pfs/virtio-9p-device.h"
+#include "hw/virtio/virtio-9p.h"
 #endif
 
 /* from Linux's linux/virtio_config.h */
diff --git a/hw/watchdog.h b/include/hw/watchdog.h
similarity index 100%
rename from hw/watchdog.h
rename to include/hw/watchdog.h
diff --git a/hw/xen_backend.h b/include/hw/xen/xen_backend.h
similarity index 99%
rename from hw/xen_backend.h
rename to include/hw/xen/xen_backend.h
index 6d5c699..16ee197 100644
--- a/hw/xen_backend.h
+++ b/include/hw/xen/xen_backend.h
@@ -1,7 +1,7 @@ 
 #ifndef QEMU_HW_XEN_BACKEND_H
 #define QEMU_HW_XEN_BACKEND_H 1
 
-#include "hw/xen_common.h"
+#include "hw/xen/xen_common.h"
 #include "sysemu/sysemu.h"
 #include "net/net.h"
 
diff --git a/hw/xen_common.h b/include/hw/xen/xen_common.h
similarity index 99%
rename from hw/xen_common.h
rename to include/hw/xen/xen_common.h
index c37bde3..320e021 100644
--- a/hw/xen_common.h
+++ b/include/hw/xen/xen_common.h
@@ -15,7 +15,7 @@ 
 #include <xen/io/xenbus.h>
 
 #include "hw/hw.h"
-#include "hw/xen.h"
+#include "sysemu/xen.h"
 #include "qemu/queue.h"
 
 /*
diff --git a/hw/xilinx.h b/include/hw/xilinx.h
similarity index 100%
rename from hw/xilinx.h
rename to include/hw/xilinx.h
diff --git a/hw/xen.h b/include/sysemu/xen.h
similarity index 100%
rename from hw/xen.h
rename to include/sysemu/xen.h
diff --git a/monitor.c b/monitor.c
index 81c65ed..e508755 100644
--- a/monitor.c
+++ b/monitor.c
@@ -25,7 +25,7 @@ 
 #include "hw/hw.h"
 #include "monitor/qdev.h"
 #include "hw/usb.h"
-#include "hw/pcmcia.h"
+#include "hw/misc/pcmcia.h"
 #include "hw/pc.h"
 #include "hw/pci/pci.h"
 #include "hw/watchdog.h"
@@ -70,9 +70,9 @@ 
 
 /* for pic/irq_info */
 #if defined(TARGET_SPARC)
-#include "hw/sun4m.h"
+#include "hw/sparc/sun4m.h"
 #endif
-#include "hw/lm32_pic.h"
+#include "hw/lm32/lm32_pic.h"
 
 //#define DEBUG
 //#define DEBUG_COMPLETION
diff --git a/net/tap.c b/net/tap.c
index 48c254e..92350db 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -42,7 +42,7 @@ 
 
 #include "net/tap.h"
 
-#include "hw/vhost_net.h"
+#include "hw/virtio/vhost_net.h"
 
 /* Maximum GSO packet size (64k) plus plenty of room for
  * the ethernet and virtio_net headers
diff --git a/target-arm/arm-semi.c b/target-arm/arm-semi.c
index 847318d..f0637a4 100644
--- a/target-arm/arm-semi.c
+++ b/target-arm/arm-semi.c
@@ -34,7 +34,7 @@ 
 #else
 #include "qemu-common.h"
 #include "exec/gdbstub.h"
-#include "hw/arm-misc.h"
+#include "hw/arm/arm.h"
 #endif
 
 #define TARGET_SYS_OPEN        0x01
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 5c108e1..f25a10f 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -42,9 +42,9 @@ 
 
 #include "sysemu/sysemu.h"
 #ifndef CONFIG_USER_ONLY
-#include "hw/xen.h"
+#include "sysemu/xen.h"
 #include "hw/sysbus.h"
-#include "hw/apic_internal.h"
+#include "hw/i386/apic_internal.h"
 #endif
 
 static void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index 9e6e1a6..9729dc8 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -1154,7 +1154,7 @@  static inline void cpu_clone_regs(CPUX86State *env, target_ulong newsp)
 #include "svm.h"
 
 #if !defined(CONFIG_USER_ONLY)
-#include "hw/apic.h"
+#include "hw/i386/apic.h"
 #endif
 
 static inline bool cpu_has_work(CPUState *cpu)
diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index 9ebf181..624d6fd 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -29,7 +29,7 @@ 
 #include "qemu/host-utils.h"
 #include "qemu/config-file.h"
 #include "hw/pc.h"
-#include "hw/apic.h"
+#include "hw/i386/apic.h"
 #include "exec/ioport.h"
 #include "hyperv.h"
 #include "hw/pci/pci.h"
diff --git a/target-i386/machine.c b/target-i386/machine.c
index 8df6a6b..79c55ab 100644
--- a/target-i386/machine.c
+++ b/target-i386/machine.c
@@ -1,7 +1,7 @@ 
 #include "hw/hw.h"
 #include "hw/boards.h"
 #include "hw/pc.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 
 #include "cpu.h"
 #include "sysemu/kvm.h"
diff --git a/target-lm32/op_helper.c b/target-lm32/op_helper.c
index 53410b1..a3a2462 100644
--- a/target-lm32/op_helper.c
+++ b/target-lm32/op_helper.c
@@ -3,8 +3,8 @@ 
 #include "helper.h"
 #include "qemu/host-utils.h"
 
-#include "hw/lm32_pic.h"
-#include "hw/lm32_juart.h"
+#include "hw/lm32/lm32_pic.h"
+#include "hw/char/lm32_juart.h"
 
 #if !defined(CONFIG_USER_ONLY)
 #define MMUSUFFIX _mmu
diff --git a/target-lm32/translate.c b/target-lm32/translate.c
index 6b87340..e78fa02 100644
--- a/target-lm32/translate.c
+++ b/target-lm32/translate.c
@@ -22,7 +22,7 @@ 
 #include "helper.h"
 #include "tcg-op.h"
 
-#include "hw/lm32_pic.h"
+#include "hw/lm32/lm32_pic.h"
 
 #define GEN_HELPER 1
 #include "helper.h"
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index 2c64c63..1656986 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -31,11 +31,11 @@ 
 #include "sysemu/cpus.h"
 #include "sysemu/device_tree.h"
 #include "hw/sysbus.h"
-#include "hw/spapr.h"
+#include "hw/ppc/spapr.h"
 
 #include "hw/sysbus.h"
-#include "hw/spapr.h"
-#include "hw/spapr_vio.h"
+#include "hw/ppc/spapr.h"
+#include "hw/ppc/spapr_vio.h"
 
 //#define DEBUG_KVM
 
diff --git a/target-sh4/helper.c b/target-sh4/helper.c
index ddebc78..0e887d2 100644
--- a/target-sh4/helper.c
+++ b/target-sh4/helper.c
@@ -26,7 +26,7 @@ 
 #include "cpu.h"
 
 #if !defined(CONFIG_USER_ONLY)
-#include "hw/sh_intc.h"
+#include "hw/sh4/sh_intc.h"
 #endif
 
 #if defined(CONFIG_USER_ONLY)
diff --git a/vl.c b/vl.c
index c0bf99f..7808432 100644
--- a/vl.c
+++ b/vl.c
@@ -116,14 +116,14 @@  int main(int argc, char **argv)
 #include "hw/hw.h"
 #include "hw/boards.h"
 #include "hw/usb.h"
-#include "hw/pcmcia.h"
+#include "hw/misc/pcmcia.h"
 #include "hw/pc.h"
-#include "hw/isa.h"
+#include "hw/isa/isa.h"
 #include "char/baum.h"
 #include "hw/bt.h"
 #include "hw/watchdog.h"
-#include "hw/smbios.h"
-#include "hw/xen.h"
+#include "hw/i386/smbios.h"
+#include "sysemu/xen.h"
 #include "hw/qdev.h"
 #include "hw/loader.h"
 #include "monitor/qdev.h"
@@ -138,7 +138,7 @@  int main(int argc, char **argv)
 #include "char/char.h"
 #include "qemu/cache-utils.h"
 #include "sysemu/blockdev.h"
-#include "hw/block-common.h"
+#include "hw/block/block.h"
 #include "migration/block.h"
 #include "sysemu/dma.h"
 #include "audio/audio.h"
diff --git a/xen-stub.c b/xen-stub.c
index 1ee8411..38d9a84 100644
--- a/xen-stub.c
+++ b/xen-stub.c
@@ -9,7 +9,7 @@ 
  */
 
 #include "qemu-common.h"
-#include "hw/xen.h"
+#include "sysemu/xen.h"
 #include "exec/memory.h"
 #include "qmp-commands.h"