qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 18/22] mac_via: move VIA1 portB write logic into mos6522_q800


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH 18/22] mac_via: move VIA1 portB write logic into mos6522_q800_via1_write()
Date: Sun, 14 Jun 2020 19:03:12 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0

On 6/14/20 4:28 PM, Mark Cave-Ayland wrote:
> Currently the logic is split between the mos6522 portB_write() callback and
> the memory region used to capture the VIA1 MMIO accesses. Move everything
> into the latter mos6522_q800_via1_write() function to keep all the logic in
> one place to make it easier to follow.
> 
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> ---
>  hw/misc/mac_via.c | 24 ++++++++++--------------
>  1 file changed, 10 insertions(+), 14 deletions(-)
> 
> diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c
> index 669fdca4c4..4779236f95 100644
> --- a/hw/misc/mac_via.c
> +++ b/hw/misc/mac_via.c
> @@ -801,11 +801,21 @@ static void mos6522_q800_via1_write(void *opaque, 
> hwaddr addr, uint64_t val,
>                                      unsigned size)
>  {
>      MOS6522Q800VIA1State *v1s = MOS6522_Q800_VIA1(opaque);
> +    MacVIAState *m = container_of(v1s, MacVIAState, mos6522_via1);

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>      MOS6522State *ms = MOS6522(v1s);
>  
>      addr = (addr >> 9) & 0xf;
>      mos6522_write(ms, addr, val, size);
>  
> +    switch (addr) {
> +    case VIA_REG_B:
> +        via1_rtc_update(m);
> +        via1_adb_update(m);
> +
> +        v1s->last_b = ms->b;
> +        break;
> +    }
> +
>      via1_one_second_update(v1s);
>      via1_VBL_update(v1s);
>  }
> @@ -1034,18 +1044,6 @@ static TypeInfo mac_via_info = {
>  };
>  
>  /* VIA 1 */
> -static void mos6522_q800_via1_portB_write(MOS6522State *s)
> -{
> -    MOS6522Q800VIA1State *v1s = container_of(s, MOS6522Q800VIA1State,
> -                                             parent_obj);
> -    MacVIAState *m = container_of(v1s, MacVIAState, mos6522_via1);
> -
> -    via1_rtc_update(m);
> -    via1_adb_update(m);
> -
> -    v1s->last_b = s->b;
> -}
> -
>  static void mos6522_q800_via1_reset(DeviceState *dev)
>  {
>      MOS6522State *ms = MOS6522(dev);
> @@ -1068,10 +1066,8 @@ static void mos6522_q800_via1_init(Object *obj)
>  static void mos6522_q800_via1_class_init(ObjectClass *oc, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(oc);
> -    MOS6522DeviceClass *mdc = MOS6522_DEVICE_CLASS(oc);
>  
>      dc->reset = mos6522_q800_via1_reset;
> -    mdc->portB_write = mos6522_q800_via1_portB_write;
>  }
>  
>  static const TypeInfo mos6522_q800_via1_type_info = {
> 




reply via email to

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