180f06306SHeiko Carstens // SPDX-License-Identifier: GPL-2.0 280f06306SHeiko Carstens /* Copyright IBM Corp. 2020 */ 380f06306SHeiko Carstens 480f06306SHeiko Carstens #include <linux/compiler.h> 580f06306SHeiko Carstens #include <linux/getcpu.h> 680f06306SHeiko Carstens #include <asm/timex.h> 7*1ab3001bSHeiko Carstens #include "vdso.h" 880f06306SHeiko Carstens 980f06306SHeiko Carstens int __s390_vdso_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *unused) 1080f06306SHeiko Carstens { 1180f06306SHeiko Carstens __u16 todval[8]; 1280f06306SHeiko Carstens 1380f06306SHeiko Carstens /* CPU number is stored in the programmable field of the TOD clock */ 1480f06306SHeiko Carstens get_tod_clock_ext((char *)todval); 1580f06306SHeiko Carstens if (cpu) 1680f06306SHeiko Carstens *cpu = todval[7]; 1780f06306SHeiko Carstens /* NUMA node is always zero */ 1880f06306SHeiko Carstens if (node) 1980f06306SHeiko Carstens *node = 0; 2080f06306SHeiko Carstens return 0; 2180f06306SHeiko Carstens } 22