Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  *
0004  * Copyright (C) IBM Corporation, 2012
0005  *
0006  * Author: Anton Blanchard <anton@au.ibm.com>
0007  */
0008 #include <asm/ppc_asm.h>
0009 #include <asm/vdso.h>
0010 
0011     .text
0012 /*
0013  * Exact prototype of getcpu
0014  *
0015  * int __kernel_getcpu(unsigned *cpu, unsigned *node);
0016  *
0017  */
0018 #if defined(CONFIG_PPC64)
0019 V_FUNCTION_BEGIN(__kernel_getcpu)
0020   .cfi_startproc
0021     mfspr   r5,SPRN_SPRG_VDSO_READ
0022     PPC_LCMPI   cr0,r3,0
0023     PPC_LCMPI   cr1,r4,0
0024     clrlwi  r6,r5,16
0025     rlwinm  r7,r5,16,31-15,31-0
0026     beq cr0,1f
0027     stw r6,0(r3)
0028 1:  crclr   cr0*4+so
0029     li  r3,0            /* always success */
0030     beqlr   cr1
0031     stw r7,0(r4)
0032     blr
0033   .cfi_endproc
0034 V_FUNCTION_END(__kernel_getcpu)
0035 #elif !defined(CONFIG_SMP)
0036 V_FUNCTION_BEGIN(__kernel_getcpu)
0037   .cfi_startproc
0038     cmpwi   cr0, r3, 0
0039     cmpwi   cr1, r4, 0
0040     li  r5, 0
0041     beq cr0, 1f
0042     stw r5, 0(r3)
0043 1:  li  r3, 0           /* always success */
0044     crclr   cr0*4+so
0045     beqlr   cr1
0046     stw r5, 0(r4)
0047     blr
0048   .cfi_endproc
0049 V_FUNCTION_END(__kernel_getcpu)
0050 #endif