Revision 40905a6a hw/armv7m.c
b/hw/armv7m.c | ||
---|---|---|
117 | 117 |
bitband_writel |
118 | 118 |
}; |
119 | 119 |
|
120 |
static void armv7m_bitband_init(void) |
|
120 |
typedef struct { |
|
121 |
SysBusDevice busdev; |
|
122 |
uint32_t base; |
|
123 |
} BitBandState; |
|
124 |
|
|
125 |
static void bitband_init(SysBusDevice *dev) |
|
121 | 126 |
{ |
127 |
BitBandState *s = FROM_SYSBUS(BitBandState, dev); |
|
122 | 128 |
int iomemtype; |
123 |
static uint32_t bitband1_offset = 0x20000000; |
|
124 |
static uint32_t bitband2_offset = 0x40000000; |
|
125 | 129 |
|
130 |
s->base = qdev_get_prop_int(&dev->qdev, "base", 0); |
|
126 | 131 |
iomemtype = cpu_register_io_memory(0, bitband_readfn, bitband_writefn, |
127 |
&bitband1_offset); |
|
128 |
cpu_register_physical_memory(0x22000000, 0x02000000, iomemtype); |
|
129 |
iomemtype = cpu_register_io_memory(0, bitband_readfn, bitband_writefn, |
|
130 |
&bitband2_offset); |
|
131 |
cpu_register_physical_memory(0x42000000, 0x02000000, iomemtype); |
|
132 |
&s->base); |
|
133 |
sysbus_init_mmio(dev, 0x02000000, iomemtype); |
|
134 |
} |
|
135 |
|
|
136 |
static void armv7m_bitband_init(void) |
|
137 |
{ |
|
138 |
DeviceState *dev; |
|
139 |
|
|
140 |
dev = qdev_create(NULL, "ARM,bitband-memory"); |
|
141 |
qdev_set_prop_int(dev, "base", 0x20000000); |
|
142 |
qdev_init(dev); |
|
143 |
sysbus_mmio_map(sysbus_from_qdev(dev), 0, 0x22000000); |
|
144 |
|
|
145 |
dev = qdev_create(NULL, "ARM,bitband-memory"); |
|
146 |
qdev_set_prop_int(dev, "base", 0x40000000); |
|
147 |
qdev_init(dev); |
|
148 |
sysbus_mmio_map(sysbus_from_qdev(dev), 0, 0x42000000); |
|
132 | 149 |
} |
133 | 150 |
|
134 | 151 |
/* Board init. */ |
... | ... | |
220 | 237 |
|
221 | 238 |
return pic; |
222 | 239 |
} |
240 |
|
|
241 |
static void armv7m_register_devices(void) |
|
242 |
{ |
|
243 |
sysbus_register_dev("ARM,bitband-memory", sizeof(BitBandState), |
|
244 |
bitband_init); |
|
245 |
} |
|
246 |
|
|
247 |
device_init(armv7m_register_devices) |
Also available in: Unified diff