s390/smp: Implement raw_smp_processor_id() with inline assembly
authorHeiko Carstens <hca@linux.ibm.com>
Mon, 10 Mar 2025 09:33:40 +0000 (10:33 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 18 Mar 2025 16:13:04 +0000 (17:13 +0100)
commit4797e9b5067e3682020b3f6745a929d690370be3
tree25332b8d11925a1311f88a15ec2375cac448fe3e
parent65c07e91cc31700ca8484d3bcd96e49b0053b57b
s390/smp: Implement raw_smp_processor_id() with inline assembly

Implement raw_smp_processor_id() with an inline assembly, which makes
use of the ALTERNATIVE macro, to read cpu_nr from lowcore. Provide an
alternative instruction with a different offset in case lowcore is
relocated.

This replaces sequences of two instructions with one instruction.

Before:
  1000b6:       a5 1e 00 00             llilh   %r1,0
  1000ba:       58 20 13 a0             l       %r2,928(%r1)

After:
  1000b6:       e3 20 03 a0 00 58       ly      %r2,928

Kernel image size change:
add/remove: 753/755 grow/shrink: 230/1510 up/down: 30538/-35832 (-5294)

Acked-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/smp.h