On Mon, Oct 18, 2021 at 10:40 AM Alistair Francis
<[email protected]> wrote:
>
> From: Alistair Francis <[email protected]>
>
> Signed-off-by: Alistair Francis <[email protected]>
> ---
> hw/intc/sifive_plic.c | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/hw/intc/sifive_plic.c b/hw/intc/sifive_plic.c
> index 877e76877c..5444368ad4 100644
> --- a/hw/intc/sifive_plic.c
> +++ b/hw/intc/sifive_plic.c
> @@ -355,6 +355,18 @@ static const MemoryRegionOps sifive_plic_ops = {
> }
> };
>
> +static void sifive_plic_reset(DeviceState *dev)
> +{
> + SiFivePLICState *s = SIFIVE_PLIC(dev);
> +
> + memset(s->claimed, 0, sizeof(uint32_t) * s->bitfield_words);
This line should be removed.
> + memset(s->source_priority, 0, sizeof(uint32_t) * s->num_sources);
> + memset(s->target_priority, 0, sizeof(uint32_t) * s->num_addrs);
> + memset(s->pending, 0, sizeof(uint32_t) * s->bitfield_words);
> + memset(s->claimed, 0, sizeof(uint32_t) * s->bitfield_words);
> + memset(s->enable, 0, sizeof(uint32_t) * s->num_enables);
> +}
> +
> /*
> * parse PLIC hart/mode address offset config
> *
> @@ -501,6 +513,7 @@ static void sifive_plic_class_init(ObjectClass *klass,
> void *data)
> {
> DeviceClass *dc = DEVICE_CLASS(klass);
>
> + dc->reset = sifive_plic_reset;
> device_class_set_props(dc, sifive_plic_properties);
> dc->realize = sifive_plic_realize;
> dc->vmsd = &vmstate_sifive_plic;
Regards,
Bin