On Fri, 13 Jun 2025 at 17:02, J. Neuschäfer <j.neuschae...@gmx.net> wrote:
>
> Although the emulated cacheflush syscall does nothing, it still needs to
> return zero to indicate success.
>
> Signed-off-by: J. Neuschäfer <j.neuschae...@gmx.net>
> ---
>  linux-user/arm/cpu_loop.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/linux-user/arm/cpu_loop.c b/linux-user/arm/cpu_loop.c
> index 
> e8417d040691a04a3edc0f5508f047571beac8fa..33f63951a958a5a48ced2d1e187264d691e5c940
>  100644
> --- a/linux-user/arm/cpu_loop.c
> +++ b/linux-user/arm/cpu_loop.c
> @@ -363,6 +363,7 @@ void cpu_loop(CPUARMState *env)
>                      switch (n) {
>                      case ARM_NR_cacheflush:
>                          /* nop */
> +                        env->regs[0] = 0;
>                          break;
>                      case ARM_NR_set_tls:
>                          cpu_set_tls(env, env->regs[0]);

Reviewed-by: Peter Maydell <peter.mayd...@linaro.org>
and queued to target-arm.next. Interesting that nobody's
noticed this in all these years...

(If we were really enthusiastic we could make it fail for
the "end < start || flags" condition the kernel tests, but
that seems unnecessary. The kernel also checks for access
permissions, which would be harder.)

thanks
-- PMM

Reply via email to