Commit ef1e0315 authored by Jiri Slaby's avatar Jiri Slaby Committed by Borislav Petkov

x86/asm: Make some functions local

There are a couple of assembly functions which are invoked only locally
in the file they are defined. In C, they are marked "static". In
assembly, annotate them using SYM_{FUNC,CODE}_START_LOCAL (and switch
their ENDPROC to SYM_{FUNC,CODE}_END too). Whether FUNC or CODE is used,
depends on whether ENDPROC or END was used for a particular function
before.
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: Andy Shevchenko <andy@infradead.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Darren Hart <dvhart@infradead.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: linux-arch@vger.kernel.org
Cc: linux-efi <linux-efi@vger.kernel.org>
Cc: linux-efi@vger.kernel.org
Cc: Matt Fleming <matt@codeblueprint.co.uk>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: platform-driver-x86@vger.kernel.org
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86-ml <x86@kernel.org>
Cc: xen-devel@lists.xenproject.org
Link: https://lkml.kernel.org/r/20191011115108.12392-21-jslaby@suse.cz
parent b4edca15
...@@ -99,12 +99,12 @@ ENTRY(efi64_thunk) ...@@ -99,12 +99,12 @@ ENTRY(efi64_thunk)
ret ret
ENDPROC(efi64_thunk) ENDPROC(efi64_thunk)
ENTRY(efi_exit32) SYM_FUNC_START_LOCAL(efi_exit32)
movq func_rt_ptr(%rip), %rax movq func_rt_ptr(%rip), %rax
push %rax push %rax
mov %rdi, %rax mov %rdi, %rax
ret ret
ENDPROC(efi_exit32) SYM_FUNC_END(efi_exit32)
.code32 .code32
/* /*
...@@ -112,7 +112,7 @@ ENDPROC(efi_exit32) ...@@ -112,7 +112,7 @@ ENDPROC(efi_exit32)
* *
* The stack should represent the 32-bit calling convention. * The stack should represent the 32-bit calling convention.
*/ */
ENTRY(efi_enter32) SYM_FUNC_START_LOCAL(efi_enter32)
movl $__KERNEL_DS, %eax movl $__KERNEL_DS, %eax
movl %eax, %ds movl %eax, %ds
movl %eax, %es movl %eax, %es
...@@ -172,7 +172,7 @@ ENTRY(efi_enter32) ...@@ -172,7 +172,7 @@ ENTRY(efi_enter32)
btsl $X86_CR0_PG_BIT, %eax btsl $X86_CR0_PG_BIT, %eax
movl %eax, %cr0 movl %eax, %cr0
lret lret
ENDPROC(efi_enter32) SYM_FUNC_END(efi_enter32)
.data .data
.balign 8 .balign 8
......
...@@ -1101,7 +1101,8 @@ idtentry hypervisor_callback xen_do_hypervisor_callback has_error_code=0 ...@@ -1101,7 +1101,8 @@ idtentry hypervisor_callback xen_do_hypervisor_callback has_error_code=0
* existing activation in its critical region -- if so, we pop the current * existing activation in its critical region -- if so, we pop the current
* activation and restart the handler using the previous one. * activation and restart the handler using the previous one.
*/ */
ENTRY(xen_do_hypervisor_callback) /* do_hypervisor_callback(struct *pt_regs) */ /* do_hypervisor_callback(struct *pt_regs) */
SYM_CODE_START_LOCAL(xen_do_hypervisor_callback)
/* /*
* Since we don't modify %rdi, evtchn_do_upall(struct *pt_regs) will * Since we don't modify %rdi, evtchn_do_upall(struct *pt_regs) will
...@@ -1119,7 +1120,7 @@ ENTRY(xen_do_hypervisor_callback) /* do_hypervisor_callback(struct *pt_regs) */ ...@@ -1119,7 +1120,7 @@ ENTRY(xen_do_hypervisor_callback) /* do_hypervisor_callback(struct *pt_regs) */
call xen_maybe_preempt_hcall call xen_maybe_preempt_hcall
#endif #endif
jmp error_exit jmp error_exit
END(xen_do_hypervisor_callback) SYM_CODE_END(xen_do_hypervisor_callback)
/* /*
* Hypervisor uses this for application faults while it executes. * Hypervisor uses this for application faults while it executes.
...@@ -1214,7 +1215,7 @@ idtentry machine_check do_mce has_error_code=0 paranoid=1 ...@@ -1214,7 +1215,7 @@ idtentry machine_check do_mce has_error_code=0 paranoid=1
* Use slow, but surefire "are we in kernel?" check. * Use slow, but surefire "are we in kernel?" check.
* Return: ebx=0: need swapgs on exit, ebx=1: otherwise * Return: ebx=0: need swapgs on exit, ebx=1: otherwise
*/ */
ENTRY(paranoid_entry) SYM_CODE_START_LOCAL(paranoid_entry)
UNWIND_HINT_FUNC UNWIND_HINT_FUNC
cld cld
PUSH_AND_CLEAR_REGS save_ret=1 PUSH_AND_CLEAR_REGS save_ret=1
...@@ -1248,7 +1249,7 @@ ENTRY(paranoid_entry) ...@@ -1248,7 +1249,7 @@ ENTRY(paranoid_entry)
FENCE_SWAPGS_KERNEL_ENTRY FENCE_SWAPGS_KERNEL_ENTRY
ret ret
END(paranoid_entry) SYM_CODE_END(paranoid_entry)
/* /*
* "Paranoid" exit path from exception stack. This is invoked * "Paranoid" exit path from exception stack. This is invoked
...@@ -1262,7 +1263,7 @@ END(paranoid_entry) ...@@ -1262,7 +1263,7 @@ END(paranoid_entry)
* *
* On entry, ebx is "no swapgs" flag (1: don't need swapgs, 0: need it) * On entry, ebx is "no swapgs" flag (1: don't need swapgs, 0: need it)
*/ */
ENTRY(paranoid_exit) SYM_CODE_START_LOCAL(paranoid_exit)
UNWIND_HINT_REGS UNWIND_HINT_REGS
DISABLE_INTERRUPTS(CLBR_ANY) DISABLE_INTERRUPTS(CLBR_ANY)
TRACE_IRQS_OFF_DEBUG TRACE_IRQS_OFF_DEBUG
...@@ -1279,12 +1280,12 @@ ENTRY(paranoid_exit) ...@@ -1279,12 +1280,12 @@ ENTRY(paranoid_exit)
RESTORE_CR3 scratch_reg=%rbx save_reg=%r14 RESTORE_CR3 scratch_reg=%rbx save_reg=%r14
.Lparanoid_exit_restore: .Lparanoid_exit_restore:
jmp restore_regs_and_return_to_kernel jmp restore_regs_and_return_to_kernel
END(paranoid_exit) SYM_CODE_END(paranoid_exit)
/* /*
* Save all registers in pt_regs, and switch GS if needed. * Save all registers in pt_regs, and switch GS if needed.
*/ */
ENTRY(error_entry) SYM_CODE_START_LOCAL(error_entry)
UNWIND_HINT_FUNC UNWIND_HINT_FUNC
cld cld
PUSH_AND_CLEAR_REGS save_ret=1 PUSH_AND_CLEAR_REGS save_ret=1
...@@ -1364,16 +1365,16 @@ ENTRY(error_entry) ...@@ -1364,16 +1365,16 @@ ENTRY(error_entry)
call fixup_bad_iret call fixup_bad_iret
mov %rax, %rsp mov %rax, %rsp
jmp .Lerror_entry_from_usermode_after_swapgs jmp .Lerror_entry_from_usermode_after_swapgs
END(error_entry) SYM_CODE_END(error_entry)
ENTRY(error_exit) SYM_CODE_START_LOCAL(error_exit)
UNWIND_HINT_REGS UNWIND_HINT_REGS
DISABLE_INTERRUPTS(CLBR_ANY) DISABLE_INTERRUPTS(CLBR_ANY)
TRACE_IRQS_OFF TRACE_IRQS_OFF
testb $3, CS(%rsp) testb $3, CS(%rsp)
jz retint_kernel jz retint_kernel
jmp .Lretint_user jmp .Lretint_user
END(error_exit) SYM_CODE_END(error_exit)
/* /*
* Runs on exception stack. Xen PV does not go through this path at all, * Runs on exception stack. Xen PV does not go through this path at all,
......
...@@ -21,7 +21,7 @@ ENTRY(copy_page) ...@@ -21,7 +21,7 @@ ENTRY(copy_page)
ENDPROC(copy_page) ENDPROC(copy_page)
EXPORT_SYMBOL(copy_page) EXPORT_SYMBOL(copy_page)
ENTRY(copy_page_regs) SYM_FUNC_START_LOCAL(copy_page_regs)
subq $2*8, %rsp subq $2*8, %rsp
movq %rbx, (%rsp) movq %rbx, (%rsp)
movq %r12, 1*8(%rsp) movq %r12, 1*8(%rsp)
...@@ -86,4 +86,4 @@ ENTRY(copy_page_regs) ...@@ -86,4 +86,4 @@ ENTRY(copy_page_regs)
movq 1*8(%rsp), %r12 movq 1*8(%rsp), %r12
addq $2*8, %rsp addq $2*8, %rsp
ret ret
ENDPROC(copy_page_regs) SYM_FUNC_END(copy_page_regs)
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
* rax original destination * rax original destination
*/ */
SYM_FUNC_START_ALIAS(__memcpy) SYM_FUNC_START_ALIAS(__memcpy)
ENTRY(memcpy) SYM_FUNC_START_LOCAL(memcpy)
ALTERNATIVE_2 "jmp memcpy_orig", "", X86_FEATURE_REP_GOOD, \ ALTERNATIVE_2 "jmp memcpy_orig", "", X86_FEATURE_REP_GOOD, \
"jmp memcpy_erms", X86_FEATURE_ERMS "jmp memcpy_erms", X86_FEATURE_ERMS
...@@ -41,7 +41,7 @@ ENTRY(memcpy) ...@@ -41,7 +41,7 @@ ENTRY(memcpy)
movl %edx, %ecx movl %edx, %ecx
rep movsb rep movsb
ret ret
ENDPROC(memcpy) SYM_FUNC_END(memcpy)
SYM_FUNC_END_ALIAS(__memcpy) SYM_FUNC_END_ALIAS(__memcpy)
EXPORT_SYMBOL(memcpy) EXPORT_SYMBOL(memcpy)
EXPORT_SYMBOL(__memcpy) EXPORT_SYMBOL(__memcpy)
...@@ -50,14 +50,14 @@ EXPORT_SYMBOL(__memcpy) ...@@ -50,14 +50,14 @@ EXPORT_SYMBOL(__memcpy)
* memcpy_erms() - enhanced fast string memcpy. This is faster and * memcpy_erms() - enhanced fast string memcpy. This is faster and
* simpler than memcpy. Use memcpy_erms when possible. * simpler than memcpy. Use memcpy_erms when possible.
*/ */
ENTRY(memcpy_erms) SYM_FUNC_START_LOCAL(memcpy_erms)
movq %rdi, %rax movq %rdi, %rax
movq %rdx, %rcx movq %rdx, %rcx
rep movsb rep movsb
ret ret
ENDPROC(memcpy_erms) SYM_FUNC_END(memcpy_erms)
ENTRY(memcpy_orig) SYM_FUNC_START_LOCAL(memcpy_orig)
movq %rdi, %rax movq %rdi, %rax
cmpq $0x20, %rdx cmpq $0x20, %rdx
...@@ -182,7 +182,7 @@ ENTRY(memcpy_orig) ...@@ -182,7 +182,7 @@ ENTRY(memcpy_orig)
.Lend: .Lend:
retq retq
ENDPROC(memcpy_orig) SYM_FUNC_END(memcpy_orig)
#ifndef CONFIG_UML #ifndef CONFIG_UML
......
...@@ -59,16 +59,16 @@ EXPORT_SYMBOL(__memset) ...@@ -59,16 +59,16 @@ EXPORT_SYMBOL(__memset)
* *
* rax original destination * rax original destination
*/ */
ENTRY(memset_erms) SYM_FUNC_START_LOCAL(memset_erms)
movq %rdi,%r9 movq %rdi,%r9
movb %sil,%al movb %sil,%al
movq %rdx,%rcx movq %rdx,%rcx
rep stosb rep stosb
movq %r9,%rax movq %r9,%rax
ret ret
ENDPROC(memset_erms) SYM_FUNC_END(memset_erms)
ENTRY(memset_orig) SYM_FUNC_START_LOCAL(memset_orig)
movq %rdi,%r10 movq %rdi,%r10
/* expand byte value */ /* expand byte value */
...@@ -139,4 +139,4 @@ ENTRY(memset_orig) ...@@ -139,4 +139,4 @@ ENTRY(memset_orig)
subq %r8,%rdx subq %r8,%rdx
jmp .Lafter_bad_alignment jmp .Lafter_bad_alignment
.Lfinal: .Lfinal:
ENDPROC(memset_orig) SYM_FUNC_END(memset_orig)
...@@ -67,7 +67,7 @@ ENDPROC(efi64_thunk) ...@@ -67,7 +67,7 @@ ENDPROC(efi64_thunk)
* *
* This function must be invoked with a 1:1 mapped stack. * This function must be invoked with a 1:1 mapped stack.
*/ */
ENTRY(__efi64_thunk) SYM_FUNC_START_LOCAL(__efi64_thunk)
movl %ds, %eax movl %ds, %eax
push %rax push %rax
movl %es, %eax movl %es, %eax
...@@ -114,14 +114,14 @@ ENTRY(__efi64_thunk) ...@@ -114,14 +114,14 @@ ENTRY(__efi64_thunk)
or %rcx, %rax or %rcx, %rax
1: 1:
ret ret
ENDPROC(__efi64_thunk) SYM_FUNC_END(__efi64_thunk)
ENTRY(efi_exit32) SYM_FUNC_START_LOCAL(efi_exit32)
movq func_rt_ptr(%rip), %rax movq func_rt_ptr(%rip), %rax
push %rax push %rax
mov %rdi, %rax mov %rdi, %rax
ret ret
ENDPROC(efi_exit32) SYM_FUNC_END(efi_exit32)
.code32 .code32
/* /*
...@@ -129,7 +129,7 @@ ENDPROC(efi_exit32) ...@@ -129,7 +129,7 @@ ENDPROC(efi_exit32)
* *
* The stack should represent the 32-bit calling convention. * The stack should represent the 32-bit calling convention.
*/ */
ENTRY(efi_enter32) SYM_FUNC_START_LOCAL(efi_enter32)
movl $__KERNEL_DS, %eax movl $__KERNEL_DS, %eax
movl %eax, %ds movl %eax, %ds
movl %eax, %es movl %eax, %es
...@@ -145,7 +145,7 @@ ENTRY(efi_enter32) ...@@ -145,7 +145,7 @@ ENTRY(efi_enter32)
pushl %eax pushl %eax
lret lret
ENDPROC(efi_enter32) SYM_FUNC_END(efi_enter32)
.data .data
.balign 8 .balign 8
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
#define PVH_DS_SEL (PVH_GDT_ENTRY_DS * 8) #define PVH_DS_SEL (PVH_GDT_ENTRY_DS * 8)
#define PVH_CANARY_SEL (PVH_GDT_ENTRY_CANARY * 8) #define PVH_CANARY_SEL (PVH_GDT_ENTRY_CANARY * 8)
ENTRY(pvh_start_xen) SYM_CODE_START_LOCAL(pvh_start_xen)
cld cld
lgdt (_pa(gdt)) lgdt (_pa(gdt))
...@@ -146,7 +146,7 @@ ENTRY(pvh_start_xen) ...@@ -146,7 +146,7 @@ ENTRY(pvh_start_xen)
ljmp $PVH_CS_SEL, $_pa(startup_32) ljmp $PVH_CS_SEL, $_pa(startup_32)
#endif #endif
END(pvh_start_xen) SYM_CODE_END(pvh_start_xen)
.section ".init.data","aw" .section ".init.data","aw"
.balign 8 .balign 8
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment