Revision ee6847d1 hw/sun4m.c
b/hw/sun4m.c | ||
---|---|---|
373 | 373 |
qemu_check_nic_model(&nd_table[0], "lance"); |
374 | 374 |
|
375 | 375 |
dev = qdev_create(NULL, "lance"); |
376 |
qdev_set_netdev(dev, nd); |
|
377 |
qdev_set_prop_ptr(dev, "dma", dma_opaque); |
|
376 |
dev->nd = nd; |
|
378 | 377 |
qdev_init(dev); |
379 | 378 |
s = sysbus_from_qdev(dev); |
380 | 379 |
sysbus_mmio_map(s, 0, leaddr); |
... | ... | |
410 | 409 |
.init = idreg_init1, |
411 | 410 |
.qdev.name = "macio_idreg", |
412 | 411 |
.qdev.size = sizeof(SysBusDevice), |
413 |
.qdev.props = (DevicePropList[]) { |
|
414 |
{.name = NULL} |
|
415 |
} |
|
416 | 412 |
}; |
417 | 413 |
|
418 | 414 |
static void idreg_register_devices(void) |
... | ... | |
468 | 464 |
.init = prom_init1, |
469 | 465 |
.qdev.name = "openprom", |
470 | 466 |
.qdev.size = sizeof(SysBusDevice), |
471 |
.qdev.props = (DevicePropList[]) {
|
|
472 |
{.name = NULL}
|
|
467 |
.qdev.props = (Property[]) {
|
|
468 |
{/* end of property list */}
|
|
473 | 469 |
} |
474 | 470 |
}; |
475 | 471 |
|
... | ... | |
480 | 476 |
|
481 | 477 |
device_init(prom_register_devices); |
482 | 478 |
|
479 |
typedef struct RamDevice |
|
480 |
{ |
|
481 |
SysBusDevice busdev; |
|
482 |
uint32_t size; |
|
483 |
} RamDevice; |
|
484 |
|
|
483 | 485 |
/* System RAM */ |
484 | 486 |
static void ram_init1(SysBusDevice *dev) |
485 | 487 |
{ |
486 | 488 |
ram_addr_t RAM_size, ram_offset; |
489 |
RamDevice *d = FROM_SYSBUS(RamDevice, dev); |
|
487 | 490 |
|
488 |
RAM_size = qdev_get_prop_int(&dev->qdev, "size", 0);
|
|
491 |
RAM_size = d->size;
|
|
489 | 492 |
|
490 | 493 |
ram_offset = qemu_ram_alloc(RAM_size); |
491 | 494 |
sysbus_init_mmio(dev, RAM_size, ram_offset); |
... | ... | |
496 | 499 |
{ |
497 | 500 |
DeviceState *dev; |
498 | 501 |
SysBusDevice *s; |
502 |
RamDevice *d; |
|
499 | 503 |
|
500 | 504 |
/* allocate RAM */ |
501 | 505 |
if ((uint64_t)RAM_size > max_mem) { |
... | ... | |
506 | 510 |
exit(1); |
507 | 511 |
} |
508 | 512 |
dev = qdev_create(NULL, "memory"); |
509 |
qdev_set_prop_int(dev, "size", RAM_size); |
|
510 | 513 |
qdev_init(dev); |
511 | 514 |
s = sysbus_from_qdev(dev); |
512 | 515 |
|
516 |
d = FROM_SYSBUS(RamDevice, s); |
|
517 |
d->size = RAM_size; |
|
518 |
|
|
513 | 519 |
sysbus_mmio_map(s, 0, addr); |
514 | 520 |
} |
515 | 521 |
|
516 | 522 |
static SysBusDeviceInfo ram_info = { |
517 | 523 |
.init = ram_init1, |
518 | 524 |
.qdev.name = "memory", |
519 |
.qdev.size = sizeof(SysBusDevice), |
|
520 |
.qdev.props = (DevicePropList[]) { |
|
521 |
{.name = "size", .type = PROP_TYPE_INT}, |
|
522 |
{.name = NULL} |
|
525 |
.qdev.size = sizeof(RamDevice), |
|
526 |
.qdev.props = (Property[]) { |
|
527 |
{ |
|
528 |
.name = "size", |
|
529 |
.info = &qdev_prop_uint32, |
|
530 |
.offset = offsetof(RamDevice, size), |
|
531 |
}, |
|
532 |
{/* end of property list */} |
|
523 | 533 |
} |
524 | 534 |
}; |
525 | 535 |
|
Also available in: Unified diff