* [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.