Loading...
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Userland implementation of getcpu() for 32 bits processes in a
4 * s390 kernel for use in the vDSO
5 *
6 * Copyright IBM Corp. 2016
7 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
8 */
9#include <asm/vdso.h>
10#include <asm/asm-offsets.h>
11#include <asm/dwarf.h>
12
13 .text
14 .align 4
15 .globl __kernel_getcpu
16 .type __kernel_getcpu,@function
17__kernel_getcpu:
18 CFI_STARTPROC
19 la %r4,0
20 sacf 256
21 l %r5,__VDSO_CPU_NR(%r4)
22 l %r4,__VDSO_NODE_ID(%r4)
23 sacf 0
24 ltr %r2,%r2
25 jz 2f
26 st %r5,0(%r2)
272: ltr %r3,%r3
28 jz 3f
29 st %r4,0(%r3)
303: lhi %r2,0
31 br %r14
32 CFI_ENDPROC
33 .size __kernel_getcpu,.-__kernel_getcpu
1/*
2 * Userland implementation of getcpu() for 32 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 lhi %r4,1
19 sll %r4,24
20 sar %a4,%r4
21 la %r4,0
22 epsw %r0,0
23 sacf 512
24 l %r5,__VDSO_CPU_NR(%r4)
25 l %r4,__VDSO_NODE_ID(%r4)
26 tml %r0,0x4000
27 jo 1f
28 tml %r0,0x8000
29 jno 0f
30 sacf 256
31 j 1f
320: sacf 0
331: sar %a4,%r1
34 ltr %r2,%r2
35 jz 2f
36 st %r5,0(%r2)
372: ltr %r3,%r3
38 jz 3f
39 st %r4,0(%r3)
403: lhi %r2,0
41 br %r14
42 .cfi_endproc
43 .size __kernel_getcpu,.-__kernel_getcpu