* [Qemu-devel] [PATCH] linux-user: Fix register used for 6th syscall argument on aarch64
@ 2018-01-24 9:14 Guido Günther
2018-01-24 9:36 ` Laurent Vivier
2018-01-24 9:59 ` Laurent Vivier
0 siblings, 2 replies; 4+ messages in thread
From: Guido Günther @ 2018-01-24 9:14 UTC (permalink / raw)
To: Laurent Vivier
Cc: Philippe Mathieu-Daudé, Riku Voipio, qemu-devel, qemu-arm
Unbreaks the testcase from
http://lists.nongnu.org/archive/html/qemu-arm/2018-01/msg00514.html
Signed-off-by: Guido Günther <agx@sigxcpu.org>
---
linux-user/host/aarch64/safe-syscall.inc.S | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/linux-user/host/aarch64/safe-syscall.inc.S b/linux-user/host/aarch64/safe-syscall.inc.S
index 58a2329b37..e4fbc31454 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 ... x5 == syscall arguments
* and returns the result in x0
* Shuffle everything around appropriately.
*/
@@ -47,7 +47,7 @@ safe_syscall_base:
mov x2, x4
mov x3, x5
mov x4, x6
- mov x6, x7
+ mov x5, x7
ldr x7, [sp]
/* This next sequence of code works in conjunction with the
--
2.15.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user: Fix register used for 6th syscall argument on aarch64
2018-01-24 9:14 [Qemu-devel] [PATCH] linux-user: Fix register used for 6th syscall argument on aarch64 Guido Günther
@ 2018-01-24 9:36 ` Laurent Vivier
2018-01-24 9:59 ` Laurent Vivier
1 sibling, 0 replies; 4+ messages in thread
From: Laurent Vivier @ 2018-01-24 9:36 UTC (permalink / raw)
To: Guido Günther
Cc: Philippe Mathieu-Daudé,
Riku Voipio, qemu-devel, qemu-arm, Richard Henderson
CC: Richard has he wrote this code.
Thanks,
Laurent
Le 24/01/2018 à 10:14, Guido Günther a écrit :
> Unbreaks the testcase from
>
> http://lists.nongnu.org/archive/html/qemu-arm/2018-01/msg00514.html
>
> Signed-off-by: Guido Günther <agx@sigxcpu.org>
> ---
> linux-user/host/aarch64/safe-syscall.inc.S | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/linux-user/host/aarch64/safe-syscall.inc.S b/linux-user/host/aarch64/safe-syscall.inc.S
> index 58a2329b37..e4fbc31454 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 ... x5 == syscall arguments
> * and returns the result in x0
> * Shuffle everything around appropriately.
> */
> @@ -47,7 +47,7 @@ safe_syscall_base:
> mov x2, x4
> mov x3, x5
> mov x4, x6
> - mov x6, x7
> + mov x5, x7
> ldr x7, [sp]
>
> /* This next sequence of code works in conjunction with the
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user: Fix register used for 6th syscall argument on aarch64
2018-01-24 9:14 [Qemu-devel] [PATCH] linux-user: Fix register used for 6th syscall argument on aarch64 Guido Günther
2018-01-24 9:36 ` Laurent Vivier
@ 2018-01-24 9:59 ` Laurent Vivier
2018-01-24 10:15 ` Guido Günther
1 sibling, 1 reply; 4+ messages in thread
From: Laurent Vivier @ 2018-01-24 9:59 UTC (permalink / raw)
To: Guido Günther
Cc: Philippe Mathieu-Daudé,
Riku Voipio, qemu-devel, qemu-arm, Richard Henderson
Le 24/01/2018 à 10:14, Guido Günther a écrit :
> Unbreaks the testcase from
>
> http://lists.nongnu.org/archive/html/qemu-arm/2018-01/msg00514.html
>
> Signed-off-by: Guido Günther <agx@sigxcpu.org>
> ---
> linux-user/host/aarch64/safe-syscall.inc.S | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/linux-user/host/aarch64/safe-syscall.inc.S b/linux-user/host/aarch64/safe-syscall.inc.S
> index 58a2329b37..e4fbc31454 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 ... x5 == syscall arguments
> * and returns the result in x0
> * Shuffle everything around appropriately.
> */
> @@ -47,7 +47,7 @@ safe_syscall_base:
> mov x2, x4
> mov x3, x5
> mov x4, x6
> - mov x6, x7
> + mov x5, x7
> ldr x7, [sp]
>
> /* This next sequence of code works in conjunction with the
>
According to glibc/unix/sysv/linux/aarch64/syscall.S:
AArch64 system calls take between 0 and 7 arguments.
... and any other system call arguments are in register x1..x7.
And it seems for qemu last argument is on the stack.
...
x2 ... x7, (stack) == syscall arguments
...
Should we have something like this?
@@ -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
But do we need to set x7 from the stack too?
Thanks,
Laurent
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user: Fix register used for 6th syscall argument on aarch64
2018-01-24 9:59 ` Laurent Vivier
@ 2018-01-24 10:15 ` Guido Günther
0 siblings, 0 replies; 4+ messages in thread
From: Guido Günther @ 2018-01-24 10:15 UTC (permalink / raw)
To: Laurent Vivier
Cc: Philippe Mathieu-Daudé,
Riku Voipio, qemu-devel, qemu-arm, Richard Henderson
Hi,
On Wed, Jan 24, 2018 at 10:59:05AM +0100, Laurent Vivier wrote:
> Le 24/01/2018 à 10:14, Guido Günther a écrit :
> > Unbreaks the testcase from
> >
> > http://lists.nongnu.org/archive/html/qemu-arm/2018-01/msg00514.html
> >
> > Signed-off-by: Guido Günther <agx@sigxcpu.org>
> > ---
> > linux-user/host/aarch64/safe-syscall.inc.S | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/linux-user/host/aarch64/safe-syscall.inc.S b/linux-user/host/aarch64/safe-syscall.inc.S
> > index 58a2329b37..e4fbc31454 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 ... x5 == syscall arguments
> > * and returns the result in x0
> > * Shuffle everything around appropriately.
> > */
> > @@ -47,7 +47,7 @@ safe_syscall_base:
> > mov x2, x4
> > mov x3, x5
> > mov x4, x6
> > - mov x6, x7
> > + mov x5, x7
> > ldr x7, [sp]
> >
> > /* This next sequence of code works in conjunction with the
> >
>
> According to glibc/unix/sysv/linux/aarch64/syscall.S:
>
> AArch64 system calls take between 0 and 7 arguments.
> ... and any other system call arguments are in register x1..x7.
>
> And it seems for qemu last argument is on the stack.
> ...
> x2 ... x7, (stack) == syscall arguments
> ...
>
> Should we have something like this?
>
> @@ -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
>
> But do we need to set x7 from the stack too?
That makes sense. The maximum number of arguments in
linux-user/syscall.c is syscall6 so we won't notice but it's better to
have this correct, I'll send an updated patch.
Cheers
-- Guido
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2018-01-24 10:15 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-24 9:14 [Qemu-devel] [PATCH] linux-user: Fix register used for 6th syscall argument on aarch64 Guido Günther
2018-01-24 9:36 ` Laurent Vivier
2018-01-24 9:59 ` Laurent Vivier
2018-01-24 10:15 ` Guido Günther
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.