xref: /OK3568_Linux_fs/kernel/arch/s390/kernel/vdso64/getcpu.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Userland implementation of getcpu() for 64 bits processes in a
4*4882a593Smuzhiyun * s390 kernel for use in the vDSO
5*4882a593Smuzhiyun *
6*4882a593Smuzhiyun *  Copyright IBM Corp. 2016
7*4882a593Smuzhiyun *  Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
8*4882a593Smuzhiyun */
9*4882a593Smuzhiyun#include <asm/vdso.h>
10*4882a593Smuzhiyun#include <asm/asm-offsets.h>
11*4882a593Smuzhiyun#include <asm/dwarf.h>
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun	.text
14*4882a593Smuzhiyun	.align 4
15*4882a593Smuzhiyun	.globl __kernel_getcpu
16*4882a593Smuzhiyun	.type  __kernel_getcpu,@function
17*4882a593Smuzhiyun__kernel_getcpu:
18*4882a593Smuzhiyun	CFI_STARTPROC
19*4882a593Smuzhiyun	sacf	256
20*4882a593Smuzhiyun	lm	%r4,%r5,__VDSO_GETCPU_VAL(%r0)
21*4882a593Smuzhiyun	sacf	0
22*4882a593Smuzhiyun	ltgr	%r2,%r2
23*4882a593Smuzhiyun	jz	2f
24*4882a593Smuzhiyun	st	%r5,0(%r2)
25*4882a593Smuzhiyun2:	ltgr	%r3,%r3
26*4882a593Smuzhiyun	jz	3f
27*4882a593Smuzhiyun	st	%r4,0(%r3)
28*4882a593Smuzhiyun3:	lghi	%r2,0
29*4882a593Smuzhiyun	br	%r14
30*4882a593Smuzhiyun	CFI_ENDPROC
31*4882a593Smuzhiyun	.size	__kernel_getcpu,.-__kernel_getcpu
32