[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 1/2] target/arm: allow DC CVA[D]P in user mode emulation
From: |
Zhuojia Shen |
Subject: |
Re: [PATCH v4 1/2] target/arm: allow DC CVA[D]P in user mode emulation |
Date: |
Fri, 2 Jun 2023 10:11:41 -0700 |
User-agent: |
Mutt/2.2.10 (2023-03-25) |
On 06/02/2023 12:27 PM +0200, Philippe Mathieu-Daudé wrote:
> On 2/6/23 00:11, Zhuojia Shen wrote:
> > DC CVAP and DC CVADP instructions can be executed in EL0 on Linux,
> > either directly when SCTLR_EL1.UCI == 1 or emulated by the kernel (see
> > user_cache_maint_handler() in arch/arm64/kernel/traps.c).
> >
> > This patch enables execution of the two instructions in user mode
> > emulation.
> >
> > Signed-off-by: Zhuojia Shen <chaosdefinition@hotmail.com>
> > Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
> > ---
> > target/arm/helper.c | 6 ++----
> > 1 file changed, 2 insertions(+), 4 deletions(-)
>
>
> > -#ifndef CONFIG_USER_ONLY
> > static void dccvap_writefn(CPUARMState *env, const ARMCPRegInfo *opaque,
> > uint64_t value)
> > {
> > @@ -7420,6 +7419,7 @@ static void dccvap_writefn(CPUARMState *env, const
> > ARMCPRegInfo *opaque,
> > /* This won't be crossing page boundaries */
> > haddr = probe_read(env, vaddr, dline_size, mem_idx, GETPC());
> > if (haddr) {
> > +#ifndef CONFIG_USER_ONLY
>
> This ifdef'ry placement is odd. Is it to silent a
> unused-but-set-variable warning?
Yes, exactly. Since we pass -Werror, ifdef'ing out the if statement
wouldn't even compile.
>
> > ram_addr_t offset;
> > MemoryRegion *mr;
> > @@ -7430,6 +7430,7 @@ static void dccvap_writefn(CPUARMState *env, const
> > ARMCPRegInfo *opaque,
> > if (mr) {
> > memory_region_writeback(mr, offset, dline_size);
> > }
> > +#endif /*CONFIG_USER_ONLY*/
> > }
> > }
> > @@ -7448,7 +7449,6 @@ static const ARMCPRegInfo dcpodp_reg[] = {
> > .fgt = FGT_DCCVADP,
> > .accessfn = aa64_cacheop_poc_access, .writefn = dccvap_writefn },
> > };
> > -#endif /*CONFIG_USER_ONLY*/
>