|  | /* | 
|  | * QEMU Nubus | 
|  | * | 
|  | * Copyright (c) 2013-2018 Laurent Vivier <laurent@vivier.eu> | 
|  | * | 
|  | * This work is licensed under the terms of the GNU GPL, version 2 or later. | 
|  | * See the COPYING file in the top-level directory. | 
|  | * | 
|  | */ | 
|  |  | 
|  | #include "qemu/osdep.h" | 
|  | #include "hw/sysbus.h" | 
|  | #include "hw/nubus/nubus.h" | 
|  |  | 
|  |  | 
|  | static void nubus_bridge_init(Object *obj) | 
|  | { | 
|  | NubusBridge *s = NUBUS_BRIDGE(obj); | 
|  | NubusBus *bus = &s->bus; | 
|  |  | 
|  | qbus_init(bus, sizeof(s->bus), TYPE_NUBUS_BUS, DEVICE(s), NULL); | 
|  |  | 
|  | qdev_init_gpio_out(DEVICE(s), bus->irqs, NUBUS_IRQS); | 
|  | } | 
|  |  | 
|  | static Property nubus_bridge_properties[] = { | 
|  | DEFINE_PROP_UINT16("slot-available-mask", NubusBridge, | 
|  | bus.slot_available_mask, 0xffff), | 
|  | DEFINE_PROP_END_OF_LIST() | 
|  | }; | 
|  |  | 
|  | static void nubus_bridge_class_init(ObjectClass *klass, void *data) | 
|  | { | 
|  | DeviceClass *dc = DEVICE_CLASS(klass); | 
|  |  | 
|  | dc->fw_name = "nubus"; | 
|  | device_class_set_props(dc, nubus_bridge_properties); | 
|  | } | 
|  |  | 
|  | static const TypeInfo nubus_bridge_info = { | 
|  | .name          = TYPE_NUBUS_BRIDGE, | 
|  | .parent        = TYPE_SYS_BUS_DEVICE, | 
|  | .instance_init = nubus_bridge_init, | 
|  | .instance_size = sizeof(NubusBridge), | 
|  | .class_init    = nubus_bridge_class_init, | 
|  | }; | 
|  |  | 
|  | static void nubus_register_types(void) | 
|  | { | 
|  | type_register_static(&nubus_bridge_info); | 
|  | } | 
|  |  | 
|  | type_init(nubus_register_types) |