1/* 2 * Userland implementation of getcpu() for 64 bits processes in a 3 * s390 kernel for use in the vDSO 4 * 5 * Copyright IBM Corp. 2016 6 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> 7 */ 8#include <asm/vdso.h> 9#include <asm/asm-offsets.h> 10 11 .text 12 .align 4 13 .globl __kernel_getcpu 14 .type __kernel_getcpu,@function 15__kernel_getcpu: 16 .cfi_startproc 17 ear %r1,%a4 18 llilh %r4,0x0100 19 sar %a4,%r4 20 la %r4,0 21 epsw %r0,0 22 sacf 512 23 l %r5,__VDSO_CPU_NR(%r4) 24 l %r4,__VDSO_NODE_ID(%r4) 25 tml %r0,0x4000 26 jo 1f 27 tml %r0,0x8000 28 jno 0f 29 sacf 256 30 j 1f 310: sacf 0 321: sar %a4,%r1 33 ltgr %r2,%r2 34 jz 2f 35 st %r5,0(%r2) 362: ltgr %r3,%r3 37 jz 3f 38 st %r4,0(%r3) 393: lghi %r2,0 40 br %r14 41 .cfi_endproc 42 .size __kernel_getcpu,.-__kernel_getcpu 43