|
@@ -27,6 +27,7 @@
|
|
#include "sysemu/sysemu.h"
|
|
#include "sysemu/sysemu.h"
|
|
#include "sysemu/dma.h"
|
|
#include "sysemu/dma.h"
|
|
#include "sysemu/reset.h"
|
|
#include "sysemu/reset.h"
|
|
|
|
+#include "exec/address-spaces.h"
|
|
#include "hw/boards.h"
|
|
#include "hw/boards.h"
|
|
#include "hw/nvram/fw_cfg.h"
|
|
#include "hw/nvram/fw_cfg.h"
|
|
#include "hw/qdev-properties.h"
|
|
#include "hw/qdev-properties.h"
|
|
@@ -1142,6 +1143,7 @@ FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, uint32_t dma_iobase,
|
|
SysBusDevice *sbd;
|
|
SysBusDevice *sbd;
|
|
FWCfgIoState *ios;
|
|
FWCfgIoState *ios;
|
|
FWCfgState *s;
|
|
FWCfgState *s;
|
|
|
|
+ MemoryRegion *iomem = get_system_io();
|
|
bool dma_requested = dma_iobase && dma_as;
|
|
bool dma_requested = dma_iobase && dma_as;
|
|
|
|
|
|
dev = qdev_new(TYPE_FW_CFG_IO);
|
|
dev = qdev_new(TYPE_FW_CFG_IO);
|
|
@@ -1155,7 +1157,7 @@ FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, uint32_t dma_iobase,
|
|
sbd = SYS_BUS_DEVICE(dev);
|
|
sbd = SYS_BUS_DEVICE(dev);
|
|
sysbus_realize_and_unref(sbd, &error_fatal);
|
|
sysbus_realize_and_unref(sbd, &error_fatal);
|
|
ios = FW_CFG_IO(dev);
|
|
ios = FW_CFG_IO(dev);
|
|
- sysbus_add_io(sbd, iobase, &ios->comb_iomem);
|
|
|
|
|
|
+ memory_region_add_subregion(iomem, iobase, &ios->comb_iomem);
|
|
|
|
|
|
s = FW_CFG(dev);
|
|
s = FW_CFG(dev);
|
|
|
|
|
|
@@ -1163,7 +1165,7 @@ FWCfgState *fw_cfg_init_io_dma(uint32_t iobase, uint32_t dma_iobase,
|
|
/* 64 bits for the address field */
|
|
/* 64 bits for the address field */
|
|
s->dma_as = dma_as;
|
|
s->dma_as = dma_as;
|
|
s->dma_addr = 0;
|
|
s->dma_addr = 0;
|
|
- sysbus_add_io(sbd, dma_iobase, &s->dma_iomem);
|
|
|
|
|
|
+ memory_region_add_subregion(iomem, dma_iobase, &s->dma_iomem);
|
|
}
|
|
}
|
|
|
|
|
|
return s;
|
|
return s;
|