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