s390: use proper expoline sections for .dma code
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 12 Apr 2019 06:57:34 +0000 (08:57 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 2 May 2019 11:54:11 +0000 (13:54 +0200)
The text_dma.S code uses its own macro to generate an inline version of an
expoline. To make it easier to identify all expolines in the kernel use a
thunk and a branch to the thunk just like the rest of the kernel code does
it.

The name of the text_dma.S expoline thunk is __dma__s390_indirect_jump_r14
and the section is named .dma.text.__s390_indirect_jump_r14.

This will be needed for the objtool support.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/boot/text_dma.S

index ea93314..9715715 100644 (file)
@@ -9,6 +9,16 @@
 #include <asm/errno.h>
 #include <asm/sigp.h>
 
+#ifdef CC_USING_EXPOLINE
+       .pushsection .dma.text.__s390_indirect_jump_r14,"axG"
+__dma__s390_indirect_jump_r14:
+       larl    %r1,0f
+       ex      0,0(%r1)
+       j       .
+0:     br      %r14
+       .popsection
+#endif
+
        .section .dma.text,"ax"
 /*
  * Simplified version of expoline thunk. The normal thunks can not be used here,
  * affects a few functions that are not performance-relevant.
  */
        .macro BR_EX_DMA_r14
-       larl    %r1,0f
-       ex      0,0(%r1)
-       j       .
-0:     br      %r14
+#ifdef CC_USING_EXPOLINE
+       jg      __dma__s390_indirect_jump_r14
+#else
+       br      %r14
+#endif
        .endm
 
 /*