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 <chaosdefinit...@hotmail.com> > > Reviewed-by: Peter Maydell <peter.mayd...@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*/ >