• Sven Schnelle's avatar
    s390: convert to GENERIC_VDSO · 4bff8cb5
    Sven Schnelle authored
    Convert s390 to generic vDSO. There are a few special things on s390:
    
    - vDSO can be called without a stack frame - glibc did this in the past.
      So we need to allocate a stackframe on our own.
    
    - The former assembly code used stcke to get the TOD clock and applied
      time steering to it. We need to do the same in the new code. This is done
      in the architecture specific __arch_get_hw_counter function. The steering
      information is stored in an architecure specific area in the vDSO data.
    
    - CPUCLOCK_VIRT is now handled with a syscall fallback, which might
      be slower/less accurate than the old implementation.
    
    The getcpu() function stays as an assembly function because there is no
    generic implementation and the code is just a few lines.
    
    Performance number from my system do 100 mio gettimeofday() calls:
    
    Plain syscall: 8.6s
    Generic VDSO:  1.3s
    old ASM VDSO:  1s
    
    So it's a bit slower but still much faster than syscalls.
    Signed-off-by: default avatarSven Schnelle <svens@linux.ibm.com>
    Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
    Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    4bff8cb5
entry.S 33.7 KB