Commit 76dc6d60 authored by Jiri Slaby's avatar Jiri Slaby Committed by Borislav Petkov
Browse files

x86/asm/entry: Annotate THUNKs



Place SYM_*_START_NOALIGN and SYM_*_END around the THUNK macro body.
Preserve @function by FUNC (64bit) and CODE (32bit). Given it was not
marked as aligned, use NOALIGN.

The result:
 Value  Size Type    Bind   Vis      Ndx Name
  0000    28 FUNC    GLOBAL DEFAULT    1 trace_hardirqs_on_thunk
  001c    28 FUNC    GLOBAL DEFAULT    1 trace_hardirqs_off_thunk
  0038    24 FUNC    GLOBAL DEFAULT    1 lockdep_sys_exit_thunk
  0050    24 FUNC    GLOBAL DEFAULT    1 ___preempt_schedule
  0068    24 FUNC    GLOBAL DEFAULT    1 ___preempt_schedule_notra

The annotation of .L_restore does not generate anything (at the moment).
Here, it just serves documentation purposes (as opening and closing
brackets of functions).

Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: linux-arch@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86-ml <x86@kernel.org>
Link: https://lkml.kernel.org/r/20191011115108.12392-5-jslaby@suse.cz
parent 6ec2a968
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -10,8 +10,7 @@

	/* put return address in eax (arg1) */
	.macro THUNK name, func, put_ret_addr_in_eax=0
	.globl \name
\name:
SYM_CODE_START_NOALIGN(\name)
	pushl %eax
	pushl %ecx
	pushl %edx
@@ -27,6 +26,7 @@
	popl %eax
	ret
	_ASM_NOKPROBE(\name)
SYM_CODE_END(\name)
	.endm

#ifdef CONFIG_TRACE_IRQFLAGS
+4 −3
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@

	/* rdi:	arg1 ... normal C conventions. rax is saved/restored. */
	.macro THUNK name, func, put_ret_addr_in_rdi=0
	ENTRY(\name)
SYM_FUNC_START_NOALIGN(\name)
	pushq %rbp
	movq %rsp, %rbp

@@ -33,7 +33,7 @@

	call \func
	jmp  .L_restore
	ENDPROC(\name)
SYM_FUNC_END(\name)
	_ASM_NOKPROBE(\name)
	.endm

@@ -56,7 +56,7 @@
#if defined(CONFIG_TRACE_IRQFLAGS) \
 || defined(CONFIG_DEBUG_LOCK_ALLOC) \
 || defined(CONFIG_PREEMPTION)
.L_restore:
SYM_CODE_START_LOCAL_NOALIGN(.L_restore)
	popq %r11
	popq %r10
	popq %r9
@@ -69,4 +69,5 @@
	popq %rbp
	ret
	_ASM_NOKPROBE(.L_restore)
SYM_CODE_END(.L_restore)
#endif