On Sun, Jan 14, 2018 at 1:58 PM, David Woodhouse <dw...@infradead.org> wrote: > On Sun, 2018-01-14 at 13:07 -0800, Linus Torvalds wrote: >> On Sun, Jan 14, 2018 at 1:02 PM, David Woodhouse <dw...@infradead.org> wrote: >> > >> > Review on the GCC patches has led to a request that the thunk symbols >> > be changed from e.g. __x86_indirect_thunk_rax to >> > __x86_indirect_thunk_ax without the 'r'. >> Ok. I think that just makes it easier for us, since then the names are >> independent of 32-vs/64, and we don't need to use the _ASM_XY names. >> >> What about r8-r15? I'm assuming 'r' there is used? > > Ah yes, *this* is why I hated it... for 'r8' onwards that is indeed the > register names as well as the suffix of the thunk name. But for the > legacy registers I have to prepend 'e' or 'r' myself in the macro. So > it ends up looking like this: > > > .macro THUNK reg > .section .text.__x86.indirect_thunk.\reg > > ENTRY(__x86_indirect_thunk_\reg) > CFI_STARTPROC > $done = 0 > .irp xreg r8 r9 r10 r11 r12 r13 r14 r15 > .ifeqs "\reg", "\xreg" > JMP_NOSPEC %\reg > $done = 1 > .endif > .endr > .if $done != 1 > JMP_NOSPEC %__ASM_REG(\reg) > .endif > CFI_ENDPROC > ENDPROC(__x86_indirect_thunk_\reg) > .endm > > /* > * Despite being an assembler file we can't just use .irp here > * because __KSYM_DEPS__ only uses the C preprocessor and would > * only see one instance of "__x86_indirect_thunk_\reg" rather > * than one per register with the correct names. So we do it > * the simple and nasty way... > */ > #define EXPORT_THUNK(reg) EXPORT_SYMBOL(__x86_indirect_thunk_ ## reg) > #define GENERATE_THUNK(reg) THUNK reg ; EXPORT_THUNK(reg) > > GENERATE_THUNK(ax) > GENERATE_THUNK(bx) > GENERATE_THUNK(cx) > GENERATE_THUNK(dx) > GENERATE_THUNK(si) > GENERATE_THUNK(di) > GENERATE_THUNK(bp) > #ifdef CONFIG_64BIT > GENERATE_THUNK(r8) > GENERATE_THUNK(r9) > GENERATE_THUNK(r10) > GENERATE_THUNK(r11) > GENERATE_THUNK(r12) > GENERATE_THUNK(r13) > GENERATE_THUNK(r14) > GENERATE_THUNK(r15) > #endif > > > And *that* was the point at which I asked HJ to just use the proper > bloody register names :)
Please let me know if I should make the change to ax,..., r8,..r15. -- H.J.