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