linux/arch/s390/kernel/vdso32/clock_getres.S
<<
>>
Prefs
   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
  310:      ltr     %r3,%r3
  32        jz      2f                              /* res == NULL */
  331:      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 */
  362:      lhi     %r2,0
  37        br      %r14
  383:      lhi     %r1,__NR_clock_getres           /* fallback to svc */
  39        svc     0
  40        br      %r14
  41        CFI_ENDPROC
  424:      .long   __CLOCK_REALTIME_RES
  435:      .long   __CLOCK_COARSE_RES
  44        .size   __kernel_clock_getres,.-__kernel_clock_getres
  45