root/arch/s390/kernel/vdso64/clock_getres.S

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * Userland implementation of clock_getres() for 64 bits processes in a
   4  * s390 kernel for use in the vDSO
   5  *
   6  *  Copyright IBM Corp. 2008
   7  *  Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
   8  */
   9 #include <asm/vdso.h>
  10 #include <asm/asm-offsets.h>
  11 #include <asm/unistd.h>
  12 #include <asm/dwarf.h>
  13 
  14         .text
  15         .align 4
  16         .globl __kernel_clock_getres
  17         .type  __kernel_clock_getres,@function
  18 __kernel_clock_getres:
  19         CFI_STARTPROC
  20         larl    %r1,4f
  21         cghi    %r2,__CLOCK_REALTIME_COARSE
  22         je      0f
  23         cghi    %r2,__CLOCK_MONOTONIC_COARSE
  24         je      0f
  25         larl    %r1,3f
  26         cghi    %r2,__CLOCK_REALTIME
  27         je      0f
  28         cghi    %r2,__CLOCK_MONOTONIC
  29         je      0f
  30         cghi    %r2,__CLOCK_THREAD_CPUTIME_ID
  31         je      0f
  32         cghi    %r2,-2          /* Per-thread CPUCLOCK with PID=0, VIRT=1 */
  33         jne     2f
  34         larl    %r5,_vdso_data
  35         icm     %r0,15,__LC_ECTG_OK(%r5)
  36         jz      2f
  37 0:      ltgr    %r3,%r3
  38         jz      1f                              /* res == NULL */
  39         lg      %r0,0(%r1)
  40         xc      0(8,%r3),0(%r3)                 /* set tp->tv_sec to zero */
  41         stg     %r0,8(%r3)                      /* store tp->tv_usec */
  42 1:      lghi    %r2,0
  43         br      %r14
  44 2:      lghi    %r1,__NR_clock_getres           /* fallback to svc */
  45         svc     0
  46         br      %r14
  47         CFI_ENDPROC
  48 3:      .quad   __CLOCK_REALTIME_RES
  49 4:      .quad   __CLOCK_COARSE_RES
  50         .size   __kernel_clock_getres,.-__kernel_clock_getres

/* [<][>][^][v][top][bottom][index][help] */