getcpu.S 652 B

123456789101112131415161718192021222324252627282930313233
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Userland implementation of getcpu() for 64 bits processes in a
  4. * s390 kernel for use in the vDSO
  5. *
  6. * Copyright IBM Corp. 2016
  7. * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
  8. */
  9. #include <asm/vdso.h>
  10. #include <asm/asm-offsets.h>
  11. #include <asm/dwarf.h>
  12. .text
  13. .align 4
  14. .globl __kernel_getcpu
  15. .type __kernel_getcpu,@function
  16. __kernel_getcpu:
  17. CFI_STARTPROC
  18. la %r4,0
  19. sacf 256
  20. l %r5,__VDSO_CPU_NR(%r4)
  21. l %r4,__VDSO_NODE_ID(%r4)
  22. sacf 0
  23. ltgr %r2,%r2
  24. jz 2f
  25. st %r5,0(%r2)
  26. 2: ltgr %r3,%r3
  27. jz 3f
  28. st %r4,0(%r3)
  29. 3: lghi %r2,0
  30. br %r14
  31. CFI_ENDPROC
  32. .size __kernel_getcpu,.-__kernel_getcpu