On Fri, 13 Jun 2025 at 17:02, J. Neuschäfer <j.neuschaefer@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.neuschaefer@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.maydell@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