qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 04/20] nubus: use bitmap to manage available slots


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH 04/20] nubus: use bitmap to manage available slots
Date: Sun, 12 Sep 2021 19:48:16 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0

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)?

>  }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]