qemu-stable
[Top][All Lists]
Advanced

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

Re: [PATCH] target/arm: Fix MTE0_ACTIVE


From: Peter Maydell
Subject: Re: [PATCH] target/arm: Fix MTE0_ACTIVE
Date: Thu, 7 Jan 2021 19:46:42 +0000

On Thu, 7 Jan 2021 at 19:10, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> On 1/7/21 7:54 AM, Peter Maydell wrote:
> >> -            && (sctlr & SCTLR_TCF0)
> >> +            && (sctlr & SCTLR_TCF)
> >>              && allocation_tag_access_enabled(env, 0, sctlr)) {
> >>              flags = FIELD_DP32(flags, TBFLAG_A64, MTE0_ACTIVE, 1);
> >>          }
> >
> >
> > I don't understand this change, could you explain a bit more?
> > In commit 50244cc76abcac we change to looking at the TCF
> > field corresponding to the actual current EL instead of the
> > EL for the memory-access.
>
> Correct.
>
> > But if we're doing that then why
> > should we be looking at exclusively SCTLR_TCF0 in this
> > for-unpriv-access code rather than doing the same thing we do
> > for normal accesses and checking
> >   (sctlr & (el == 0 ? SCTLR_TCF0 : SCTLR_TCF))
>
> Because this is for the UNPRIV instructions which are UNDEF at el == 0.

Ah, right. (It didn't help that I'd read the diff backwards:
the new code looks at SCTLR_TCF, not SCTLR_TCF0.)

Further, the SCTLR_*.ATA/ATA0 checks *are* based on the
privilege of the access, which is why calling
allocation_tag_access_enabled(env, 0, sctlr)
is still correct.

Applied to target-arm.next, thanks.

-- PMM



reply via email to

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