[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] hw/intc/allwinner-a10-pic: Don't use set_bit()/clear_bit()
From: |
Peter Maydell |
Subject: |
Re: [PATCH] hw/intc/allwinner-a10-pic: Don't use set_bit()/clear_bit() |
Date: |
Tue, 2 May 2023 11:28:32 +0100 |
On Mon, 24 Apr 2023 at 16:28, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> The Allwinner PIC model uses set_bit() and clear_bit() to update the
> values in its irq_pending[] array when an interrupt arrives. However
> it is using these functions wrongly: they work on an array of type
> 'long', and it is passing an array of type 'uint32_t'. Because the
> code manually figures out the right array element, this works on
> little-endian hosts and on 32-bit big-endian hosts, where bits 0..31
> in a 'long' are in the same place as they are in a 'uint32_t'.
> However it breaks on 64-bit big-endian hosts.
>
> Remove the use of set_bit() and clear_bit() in favour of using
> deposit32() on the array element. This fixes a bug where on
> big-endian 64-bit hosts the guest kernel would hang early on in
> bootup.
>
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Applied to target-arm.next, thanks.
-- PMM
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH] hw/intc/allwinner-a10-pic: Don't use set_bit()/clear_bit(),
Peter Maydell <=