diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2019-04-12 08:57:34 +0200 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2019-05-02 13:54:11 +0200 |
commit | bf72630130c29e2ba42e3db8d502de6bdfaa7d9a (patch) | |
tree | 6aeb3a616b6da8e58281a5f63bd5ec8e6cfb056f | |
parent | 40a3abf751dd0ff9ef758fd5c14530f557cd432d (diff) |
s390: use proper expoline sections for .dma code
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>
-rw-r--r-- | arch/s390/boot/text_dma.S | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/arch/s390/boot/text_dma.S b/arch/s390/boot/text_dma.S index ea93314f4497..9715715c4c28 100644 --- a/arch/s390/boot/text_dma.S +++ b/arch/s390/boot/text_dma.S @@ -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, @@ -17,10 +27,11 @@ * 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 /* |