[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 6/7] target/nios2: Special case ipending in rdctl and wrctl
From: |
Peter Maydell |
Subject: |
Re: [PATCH 6/7] target/nios2: Special case ipending in rdctl and wrctl |
Date: |
Wed, 2 Mar 2022 13:00:06 +0000 |
On Sun, 27 Feb 2022 at 18:25, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> It was never correct to be able to write to ipending.
> Until the rest of the irq code is tidied, the read of ipending
> will generate an "unnecessary" mask.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> target/nios2/translate.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/target/nios2/translate.c b/target/nios2/translate.c
> index 52965ba17e..b17ce25a36 100644
> --- a/target/nios2/translate.c
> +++ b/target/nios2/translate.c
> @@ -452,6 +452,15 @@ static void rdctl(DisasContext *dc, uint32_t code,
> uint32_t flags)
> }
>
> switch (instr.imm5 + CR_BASE) {
> + case CR_IPENDING:
> + /*
> + * The value of the ipending register is synthetic.
> + * In hw, this is the AND of a set of hardware irq lines
> + * with the ienable register. In qemu, we re-use the space
> + * of CR_IPENDING to store the set of irq lines.
maybe add
"and so we must perform the AND here, and anywhere else we need
the guest value of CR_IPENDING" ?
> + */
> + tcg_gen_and_tl(cpu_R[instr.c], cpu_R[CR_IPENDING],
> cpu_R[CR_IENABLE]);
> + break;
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
thanks
-- PMM
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH 6/7] target/nios2: Special case ipending in rdctl and wrctl,
Peter Maydell <=