I spent the night studying linux-user end figured out the same correct
fix. Just checking morning ML before sending the patch :)

Mine had "Suggested-by: Laurent Vivier <laur...@vivier.eu>" since he
said on IRC "gdb will help" and indeed single stepping before the
syscall the bug was obvious.

On 01/24/2018 07:13 AM, Guido Günther wrote:
> Unbreaks the testcase from
> 
>     http://lists.nongnu.org/archive/html/qemu-arm/2018-01/msg00514.html
> 
> Thanks to Laurent Vivier for spotting the 7th one.
> Signed-off-by: Guido Günther <a...@sigxcpu.org>

Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4...@amsat.org>

> ---
>  linux-user/host/aarch64/safe-syscall.inc.S | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/linux-user/host/aarch64/safe-syscall.inc.S 
> b/linux-user/host/aarch64/safe-syscall.inc.S
> index 58a2329b37..bc1f5a9792 100644
> --- a/linux-user/host/aarch64/safe-syscall.inc.S
> +++ b/linux-user/host/aarch64/safe-syscall.inc.S
> @@ -36,7 +36,7 @@ safe_syscall_base:
>        *               and return the result in x0
>        * and the syscall instruction needs
>        *               x8 == syscall number
> -      *               x0 ... x7 == syscall arguments
> +      *               x0 ... x6 == syscall arguments
>        *               and returns the result in x0
>        * Shuffle everything around appropriately.
>        */
> @@ -47,8 +47,8 @@ safe_syscall_base:
>       mov     x2, x4
>       mov     x3, x5
>       mov     x4, x6
> -     mov     x6, x7
> -     ldr     x7, [sp]
> +     mov     x5, x7
> +     ldr     x6, [sp]
>  
>       /* This next sequence of code works in conjunction with the
>        * rewind_if_safe_syscall_function(). If a signal is taken
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to