xref: /openbmc/linux/arch/s390/kernel/vdso64/getcpu.c (revision 80f06306)
1*80f06306SHeiko Carstens // SPDX-License-Identifier: GPL-2.0
2*80f06306SHeiko Carstens /* Copyright IBM Corp. 2020 */
3*80f06306SHeiko Carstens 
4*80f06306SHeiko Carstens #include <linux/compiler.h>
5*80f06306SHeiko Carstens #include <linux/getcpu.h>
6*80f06306SHeiko Carstens #include <asm/timex.h>
7*80f06306SHeiko Carstens 
8*80f06306SHeiko Carstens int __s390_vdso_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *unused)
9*80f06306SHeiko Carstens {
10*80f06306SHeiko Carstens 	__u16 todval[8];
11*80f06306SHeiko Carstens 
12*80f06306SHeiko Carstens 	/* CPU number is stored in the programmable field of the TOD clock */
13*80f06306SHeiko Carstens 	get_tod_clock_ext((char *)todval);
14*80f06306SHeiko Carstens 	if (cpu)
15*80f06306SHeiko Carstens 		*cpu = todval[7];
16*80f06306SHeiko Carstens 	/* NUMA node is always zero */
17*80f06306SHeiko Carstens 	if (node)
18*80f06306SHeiko Carstens 		*node = 0;
19*80f06306SHeiko Carstens 	return 0;
20*80f06306SHeiko Carstens }
21