Revision 5699301f
b/hw/stellaris.c | ||
---|---|---|
327 | 327 |
/* System controller. */ |
328 | 328 |
|
329 | 329 |
typedef struct { |
330 |
MemoryRegion iomem; |
|
330 | 331 |
uint32_t pborctl; |
331 | 332 |
uint32_t ldopctl; |
332 | 333 |
uint32_t int_status; |
... | ... | |
414 | 415 |
} |
415 | 416 |
} |
416 | 417 |
|
417 |
static uint32_t ssys_read(void *opaque, target_phys_addr_t offset) |
|
418 |
static uint64_t ssys_read(void *opaque, target_phys_addr_t offset, |
|
419 |
unsigned size) |
|
418 | 420 |
{ |
419 | 421 |
ssys_state *s = (ssys_state *)opaque; |
420 | 422 |
|
... | ... | |
518 | 520 |
} |
519 | 521 |
} |
520 | 522 |
|
521 |
static void ssys_write(void *opaque, target_phys_addr_t offset, uint32_t value) |
|
523 |
static void ssys_write(void *opaque, target_phys_addr_t offset, |
|
524 |
uint64_t value, unsigned size) |
|
522 | 525 |
{ |
523 | 526 |
ssys_state *s = (ssys_state *)opaque; |
524 | 527 |
|
... | ... | |
602 | 605 |
ssys_update(s); |
603 | 606 |
} |
604 | 607 |
|
605 |
static CPUReadMemoryFunc * const ssys_readfn[] = { |
|
606 |
ssys_read, |
|
607 |
ssys_read, |
|
608 |
ssys_read |
|
609 |
}; |
|
610 |
|
|
611 |
static CPUWriteMemoryFunc * const ssys_writefn[] = { |
|
612 |
ssys_write, |
|
613 |
ssys_write, |
|
614 |
ssys_write |
|
608 |
static const MemoryRegionOps ssys_ops = { |
|
609 |
.read = ssys_read, |
|
610 |
.write = ssys_write, |
|
611 |
.endianness = DEVICE_NATIVE_ENDIAN, |
|
615 | 612 |
}; |
616 | 613 |
|
617 | 614 |
static void ssys_reset(void *opaque) |
... | ... | |
667 | 664 |
stellaris_board_info * board, |
668 | 665 |
uint8_t *macaddr) |
669 | 666 |
{ |
670 |
int iomemtype; |
|
671 | 667 |
ssys_state *s; |
672 | 668 |
|
673 | 669 |
s = (ssys_state *)g_malloc0(sizeof(ssys_state)); |
... | ... | |
677 | 673 |
s->user0 = macaddr[0] | (macaddr[1] << 8) | (macaddr[2] << 16); |
678 | 674 |
s->user1 = macaddr[3] | (macaddr[4] << 8) | (macaddr[5] << 16); |
679 | 675 |
|
680 |
iomemtype = cpu_register_io_memory(ssys_readfn, |
|
681 |
ssys_writefn, s, |
|
682 |
DEVICE_NATIVE_ENDIAN); |
|
683 |
cpu_register_physical_memory(base, 0x00001000, iomemtype); |
|
676 |
memory_region_init_io(&s->iomem, &ssys_ops, s, "ssys", 0x00001000); |
|
677 |
memory_region_add_subregion(get_system_memory(), base, &s->iomem); |
|
684 | 678 |
ssys_reset(s); |
685 | 679 |
vmstate_register(NULL, -1, &vmstate_stellaris_sys, s); |
686 | 680 |
return 0; |
Also available in: Unified diff