1/* 2 * This program is free software; you can redistribute it and/or modify 3 * it under the terms of the GNU General Public License as published by 4 * the Free Software Foundation; either version 2 of the License, or 5 * (at your option) any later version. 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * along with this program; if not, write to the Free Software 14 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 15 * 16 * Copyright (C) IBM Corporation, 2012 17 * 18 * Author: Anton Blanchard <anton@au.ibm.com> 19 */ 20#include <asm/ppc_asm.h> 21#include <asm/vdso.h> 22 23 .text 24/* 25 * Exact prototype of getcpu 26 * 27 * int __kernel_getcpu(unsigned *cpu, unsigned *node); 28 * 29 */ 30V_FUNCTION_BEGIN(__kernel_getcpu) 31 .cfi_startproc 32 mfspr r5,SPRN_SPRG_VDSO_READ 33 cmpdi cr0,r3,0 34 cmpdi cr1,r4,0 35 clrlwi r6,r5,16 36 rlwinm r7,r5,16,31-15,31-0 37 beq cr0,1f 38 stw r6,0(r3) 391: beq cr1,2f 40 stw r7,0(r4) 412: crclr cr0*4+so 42 li r3,0 /* always success */ 43 blr 44 .cfi_endproc 45V_FUNCTION_END(__kernel_getcpu) 46