34 lines
		
	
	
		
			652 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			652 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| /*
 | |
|  * Userland implementation of getcpu() for 64 bits processes in a
 | |
|  * s390 kernel for use in the vDSO
 | |
|  *
 | |
|  *  Copyright IBM Corp. 2016
 | |
|  *  Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
 | |
|  */
 | |
| #include <asm/vdso.h>
 | |
| #include <asm/asm-offsets.h>
 | |
| #include <asm/dwarf.h>
 | |
| 
 | |
| 	.text
 | |
| 	.align 4
 | |
| 	.globl __kernel_getcpu
 | |
| 	.type  __kernel_getcpu,@function
 | |
| __kernel_getcpu:
 | |
| 	CFI_STARTPROC
 | |
| 	la	%r4,0
 | |
| 	sacf	256
 | |
| 	l	%r5,__VDSO_CPU_NR(%r4)
 | |
| 	l	%r4,__VDSO_NODE_ID(%r4)
 | |
| 	sacf	0
 | |
| 	ltgr	%r2,%r2
 | |
| 	jz	2f
 | |
| 	st	%r5,0(%r2)
 | |
| 2:	ltgr	%r3,%r3
 | |
| 	jz	3f
 | |
| 	st	%r4,0(%r3)
 | |
| 3:	lghi	%r2,0
 | |
| 	br	%r14
 | |
| 	CFI_ENDPROC
 | |
| 	.size	__kernel_getcpu,.-__kernel_getcpu
 | 
