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-ayland@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)?
}