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

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * Userland implementation of clock_getres() for 32 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         basr    %r1,0
  21         la      %r1,4f-.(%r1)
  22         chi     %r2,__CLOCK_REALTIME
  23         je      0f
  24         chi     %r2,__CLOCK_MONOTONIC
  25         je      0f
  26         la      %r1,5f-4f(%r1)
  27         chi     %r2,__CLOCK_REALTIME_COARSE
  28         je      0f
  29         chi     %r2,__CLOCK_MONOTONIC_COARSE
  30         jne     3f
  31 0:      ltr     %r3,%r3
  32         jz      2f                              /* res == NULL */
  33 1:      l       %r0,0(%r1)
  34         xc      0(4,%r3),0(%r3)                 /* set tp->tv_sec to zero */
  35         st      %r0,4(%r3)                      /* store tp->tv_usec */
  36 2:      lhi     %r2,0
  37         br      %r14
  38 3:      lhi     %r1,__NR_clock_getres           /* fallback to svc */
  39         svc     0
  40         br      %r14
  41         CFI_ENDPROC
  42 4:      .long   __CLOCK_REALTIME_RES
  43 5:      .long   __CLOCK_COARSE_RES
  44         .size   __kernel_clock_getres,.-__kernel_clock_getres

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