/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Userland implementation of clock_getres() for 32 bits processes in a
 * s390 kernel for use in the vDSO
 *
 *  Copyright IBM Corp. 2008
 *  Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
 */
#include <asm/vdso.h>
#include <asm/asm-offsets.h>
#include <asm/unistd.h>
#include <asm/dwarf.h>

	.text
	.align 4
	.globl __kernel_clock_getres
	.type  __kernel_clock_getres,@function
__kernel_clock_getres:
	CFI_STARTPROC
	basr	%r1,0
	la	%r1,4f-.(%r1)
	chi	%r2,__CLOCK_REALTIME
	je	0f
	chi	%r2,__CLOCK_MONOTONIC
	je	0f
	la	%r1,5f-4f(%r1)
	chi	%r2,__CLOCK_REALTIME_COARSE
	je	0f
	chi	%r2,__CLOCK_MONOTONIC_COARSE
	jne	3f
0:	ltr	%r3,%r3
	jz	2f				/* res == NULL */
1:	l	%r0,0(%r1)
	xc	0(4,%r3),0(%r3)			/* set tp->tv_sec to zero */
	st	%r0,4(%r3)			/* store tp->tv_usec */
2:	lhi	%r2,0
	br	%r14
3:	lhi	%r1,__NR_clock_getres		/* fallback to svc */
	svc	0
	br	%r14
	CFI_ENDPROC
4:	.long	__CLOCK_REALTIME_RES
5:	.long	__CLOCK_COARSE_RES
	.size	__kernel_clock_getres,.-__kernel_clock_getres
