This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] s390: optimize syscall function


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]