Revision c3ffa595
b/hw/realview_gic.c | ||
---|---|---|
23 | 23 |
|
24 | 24 |
typedef struct { |
25 | 25 |
gic_state gic; |
26 |
MemoryRegion iomem; |
|
27 | 26 |
MemoryRegion container; |
28 | 27 |
} RealViewGICState; |
29 | 28 |
|
30 |
static uint64_t realview_gic_cpu_read(void *opaque, target_phys_addr_t offset, |
|
31 |
unsigned size) |
|
32 |
{ |
|
33 |
gic_state *s = (gic_state *)opaque; |
|
34 |
return gic_cpu_read(s, gic_get_current_cpu(), offset); |
|
35 |
} |
|
36 |
|
|
37 |
static void realview_gic_cpu_write(void *opaque, target_phys_addr_t offset, |
|
38 |
uint64_t value, unsigned size) |
|
39 |
{ |
|
40 |
gic_state *s = (gic_state *)opaque; |
|
41 |
gic_cpu_write(s, gic_get_current_cpu(), offset, value); |
|
42 |
} |
|
43 |
|
|
44 |
static const MemoryRegionOps realview_gic_cpu_ops = { |
|
45 |
.read = realview_gic_cpu_read, |
|
46 |
.write = realview_gic_cpu_write, |
|
47 |
.endianness = DEVICE_NATIVE_ENDIAN, |
|
48 |
}; |
|
49 |
|
|
50 | 29 |
static void realview_gic_map_setup(RealViewGICState *s) |
51 | 30 |
{ |
52 | 31 |
memory_region_init(&s->container, "realview-gic-container", 0x2000); |
53 |
memory_region_init_io(&s->iomem, &realview_gic_cpu_ops, &s->gic, |
|
54 |
"realview-gic", 0x1000); |
|
55 |
memory_region_add_subregion(&s->container, 0, &s->iomem); |
|
32 |
memory_region_add_subregion(&s->container, 0, &s->gic.cpuiomem[0]); |
|
56 | 33 |
memory_region_add_subregion(&s->container, 0x1000, &s->gic.iomem); |
57 | 34 |
} |
58 | 35 |
|
Also available in: Unified diff