xref: /linux/arch/s390/kernel/vdso/getcpu.c (revision 24f171c7e145f43b9f187578e89b0982ce87e54c)
1*c0087d80SHeiko Carstens // SPDX-License-Identifier: GPL-2.0
2*c0087d80SHeiko Carstens /* Copyright IBM Corp. 2020 */
3*c0087d80SHeiko Carstens 
4*c0087d80SHeiko Carstens #include <linux/compiler.h>
5*c0087d80SHeiko Carstens #include <linux/getcpu.h>
6*c0087d80SHeiko Carstens #include <asm/timex.h>
7*c0087d80SHeiko Carstens #include "vdso.h"
8*c0087d80SHeiko Carstens 
9*c0087d80SHeiko Carstens int __s390_vdso_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *unused)
10*c0087d80SHeiko Carstens {
11*c0087d80SHeiko Carstens 	union tod_clock clk;
12*c0087d80SHeiko Carstens 
13*c0087d80SHeiko Carstens 	/* CPU number is stored in the programmable field of the TOD clock */
14*c0087d80SHeiko Carstens 	store_tod_clock_ext(&clk);
15*c0087d80SHeiko Carstens 	if (cpu)
16*c0087d80SHeiko Carstens 		*cpu = clk.pf;
17*c0087d80SHeiko Carstens 	/* NUMA node is always zero */
18*c0087d80SHeiko Carstens 	if (node)
19*c0087d80SHeiko Carstens 		*node = 0;
20*c0087d80SHeiko Carstens 	return 0;
21*c0087d80SHeiko Carstens }
22