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 12/06/2017 02:49, Martin Schwidefsky wrote:
> 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.
> 

I am not following the NAK, is the 'svc' way not really allowed for current
minimum kernel supported for s390 (3.2) or is the 'svc' method not really the 
fastest one for such syscalls?


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