This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] s390: optimize syscall function
- From: Martin Schwidefsky <schwidefsky at de dot ibm dot com>
- To: Christian Borntraeger <borntraeger at de dot ibm dot com>
- Cc: Stefan Liebler <stli at linux dot vnet dot ibm dot com>, Andreas Krebbel <krebbel at linux dot vnet dot ibm dot com>, libc-alpha at sourceware dot org
- Date: Mon, 12 Jun 2017 07:49:58 +0200
- Subject: Re: [PATCH] s390: optimize syscall function
- Authentication-results: sourceware.org; auth=none
- References: <1497007747-191015-1-git-send-email-borntraeger@de.ibm.com>
On Fri, 9 Jun 2017 13:29:07 +0200
Christian Borntraeger <borntraeger@de.ibm.com> wrote:
> Since kernel 2.6.0 all Linux version accept the system call number
> in register 1 for svc 0. There is no need to have special handling
> that uses EX for system calls < 256. This will simplify and speed
> up that code.
>
> A microbenchmark doing "syscall(__NR_getpid);" in a loops gets faster
> by ~12%.
>
> * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S: Simplify
> code by always using SVC 0 instead of EX.
> * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S: Likewise.
>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
> sysdeps/unix/sysv/linux/s390/s390-32/syscall.S | 12 +++---------
> sysdeps/unix/sysv/linux/s390/s390-64/syscall.S | 12 +++---------
> 2 files changed, 6 insertions(+), 18 deletions(-)
NAK. E.g. this from glibc:
sysdeps/unix/sysv/linux/s390/s390-64:
ENTRY (syscall)
...
basr %r8,0
0: clg %r1,4f-0b(%r8) /* svc number < 256? */
jl 2f
1: svc 0
j 3f
2: ex %r1,1b-0b(%r8) /* lsb of R1 is subsituted as SVC number */
3: lg %r15,0(%r15) /* load back chain */
cfi_adjust_cfa_offset (-160)
lmg %r6,15,48(%r15) /* Load registers. */
...
And there are old version of glibc where NR_syscalls was < 256 that
exclusively used the SVC instruction with the system call number
encoded in the instruction itself.
--
blue skies,
Martin.
"Reality continues to ruin my life." - Calvin.