On 9/12/21 9:48 AM, Mark Cave-Ayland wrote: > Convert nubus_device_realize() to use a bitmap to manage available slots to > allow > for future Nubus devices to be plugged into arbitrary slots from the command > line. > > Update mac_nubus_bridge_init() to only allow slots 0x9 to 0xe on a Macintosh > machines as documented in "Desigining Cards and Drivers for the Macintosh > Family". > > Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> > --- > hw/nubus/mac-nubus-bridge.c | 3 +++ > hw/nubus/nubus-bus.c | 2 +- > hw/nubus/nubus-device.c | 33 +++++++++++++++++++++++++++------ > include/hw/nubus/nubus.h | 4 ++-- > 4 files changed, 33 insertions(+), 9 deletions(-) > > diff --git a/hw/nubus/mac-nubus-bridge.c b/hw/nubus/mac-nubus-bridge.c > index 7c329300b8..6e78f4c0b3 100644 > --- a/hw/nubus/mac-nubus-bridge.c > +++ b/hw/nubus/mac-nubus-bridge.c > @@ -18,6 +18,9 @@ static void mac_nubus_bridge_init(Object *obj) > > s->bus = NUBUS_BUS(qbus_create(TYPE_NUBUS_BUS, DEVICE(s), NULL)); > > + /* Macintosh only has slots 0x9 to 0xe available */ > + s->bus->slot_available_mask = 0x7e00;
So MAKE_64BIT_MASK(9, 6), > sysbus_init_mmio(sbd, &s->bus->super_slot_io); > sysbus_init_mmio(sbd, &s->bus->slot_io); > } > diff --git a/hw/nubus/nubus-bus.c b/hw/nubus/nubus-bus.c > index 5c13452308..f6d3655f51 100644 > --- a/hw/nubus/nubus-bus.c > +++ b/hw/nubus/nubus-bus.c > @@ -84,7 +84,7 @@ static void nubus_init(Object *obj) > nubus, "nubus-slots", > NUBUS_SLOT_NB * NUBUS_SLOT_SIZE); > > - nubus->current_slot = NUBUS_FIRST_SLOT; > + nubus->slot_available_mask = 0xffff; and MAKE_64BIT_MASK(0, 16)? > }