1 /* SPDX-License-Identifier: GPL-2.0-or-later * 2 /* 3 * 4 * Copyright (C) IBM Corporation, 2012 5 * 6 * Author: Anton Blanchard <anton@au.ibm.com> 7 */ 8 #include <asm/ppc_asm.h> 9 #include <asm/vdso.h> 10 11 .text 12 /* 13 * Exact prototype of getcpu 14 * 15 * int __kernel_getcpu(unsigned *cpu, unsigned 16 * 17 */ 18 #if defined(CONFIG_PPC64) 19 V_FUNCTION_BEGIN(__kernel_getcpu) 20 .cfi_startproc 21 mfspr r5,SPRN_SPRG_VDSO_READ 22 PPC_LCMPI cr0,r3,0 23 PPC_LCMPI cr1,r4,0 24 clrlwi r6,r5,16 25 rlwinm r7,r5,16,31-15,31-0 26 beq cr0,1f 27 stw r6,0(r3) 28 1: crclr cr0*4+so 29 li r3,0 /* alw 30 beqlr cr1 31 stw r7,0(r4) 32 blr 33 .cfi_endproc 34 V_FUNCTION_END(__kernel_getcpu) 35 #elif !defined(CONFIG_SMP) 36 V_FUNCTION_BEGIN(__kernel_getcpu) 37 .cfi_startproc 38 cmpwi cr0, r3, 0 39 cmpwi cr1, r4, 0 40 li r5, 0 41 beq cr0, 1f 42 stw r5, 0(r3) 43 1: li r3, 0 /* alw 44 crclr cr0*4+so 45 beqlr cr1 46 stw r5, 0(r4) 47 blr 48 .cfi_endproc 49 V_FUNCTION_END(__kernel_getcpu) 50 #endif
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.