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