Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+15 -4
+15 -4
arch/s390/boot/text_dma.S
··· 9 9 #include <asm/errno.h> 10 10 #include <asm/sigp.h> 11 11 12 + #ifdef CC_USING_EXPOLINE 13 + .pushsection .dma.text.__s390_indirect_jump_r14,"axG" 14 + __dma__s390_indirect_jump_r14: 15 + larl %r1,0f 16 + ex 0,0(%r1) 17 + j . 18 + 0: br %r14 19 + .popsection 20 + #endif 21 + 12 22 .section .dma.text,"ax" 13 23 /* 14 24 * Simplified version of expoline thunk. The normal thunks can not be used here, ··· 27 17 * affects a few functions that are not performance-relevant. 28 18 */ 29 19 .macro BR_EX_DMA_r14 30 - larl %r1,0f 31 - ex 0,0(%r1) 32 - j . 33 - 0: br %r14 20 + #ifdef CC_USING_EXPOLINE 21 + jg __dma__s390_indirect_jump_r14 22 + #else 23 + br %r14 24 + #endif 34 25 .endm 35 26 36 27 /*