lkml.org 
[lkml]   [2017]   [Mar]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v2 04/10] x86: boot, annotate functions properly
Date
1) GLOBAL is meant for global symbols, but not functions. Use
SYM_FUNC_START which is dedicated for global functions.
2) Finish every function with SYM_FUNC_END.

Note that efi_pe_entry is not a start of a function, it is the middle of
startup_64 -- annotate as such.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: <x86@kernel.org>

---

The alternative to the startup_64 change would be to move efi_pe_entry
out of startup_64 which actually makes more sense, but I am afraid I
cannot test the result properly. See what it is now:
.org 0x200
ENTRY(startup_64)
#ifdef CONFIG_EFI_STUB
jmp preferred_addr
GLOBAL(efi_pe_entry)
... ; a lot of assembly (efi_pe_entry)
leaq preferred_addr(%rax), %rax
jmp *%rax
preferred_addr:
#endif
... ; a lot of assembly (startup_64)
ENDPROC(startup_64)

What about:
.org 0x200
ENTRY(startup_64)
... ; a lot of assembly (startup_64)
ENDPROC(startup_64)

#ifdef CONFIG_EFI_STUB
ENTRY(efi_pe_entry)
... ; a lot of assembly (efi_pe_entry)
leaq startup_64(%rax), %rax
jmp *%rax
ENDPROC(efi_pe_entry)
#endif
This solution is at the end of the series as RFC.
---
arch/x86/boot/compressed/head_64.S | 3 ++-
arch/x86/boot/copy.S | 12 ++++++------
arch/x86/boot/pmjump.S | 4 ++--
3 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index d2ae1f821e0c..6f037b3af204 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -250,7 +250,7 @@ ENTRY(startup_64)
*/
jmp preferred_addr

-ENTRY(efi_pe_entry)
+SYM_FUNC_INNER_LABEL(efi_pe_entry)
movq %rcx, efi64_config(%rip) /* Handle */
movq %rdx, efi64_config+8(%rip) /* EFI System table pointer */

@@ -369,6 +369,7 @@ preferred_addr:
*/
leaq relocated(%rbx), %rax
jmp *%rax
+SYM_FUNC_END(startup_64)

#ifdef CONFIG_EFI_STUB
.org 0x390
diff --git a/arch/x86/boot/copy.S b/arch/x86/boot/copy.S
index 1eb7d298b47d..ef154c1ca14d 100644
--- a/arch/x86/boot/copy.S
+++ b/arch/x86/boot/copy.S
@@ -17,7 +17,7 @@
.code16
.text

-GLOBAL(memcpy)
+SYM_FUNC_START(memcpy)
pushw %si
pushw %di
movw %ax, %di
@@ -33,7 +33,7 @@ GLOBAL(memcpy)
retl
ENDPROC(memcpy)

-GLOBAL(memset)
+SYM_FUNC_START(memset)
pushw %di
movw %ax, %di
movzbl %dl, %eax
@@ -48,7 +48,7 @@ GLOBAL(memset)
retl
ENDPROC(memset)

-GLOBAL(copy_from_fs)
+SYM_FUNC_START(copy_from_fs)
pushw %ds
pushw %fs
popw %ds
@@ -57,7 +57,7 @@ GLOBAL(copy_from_fs)
retl
ENDPROC(copy_from_fs)

-GLOBAL(copy_to_fs)
+SYM_FUNC_START(copy_to_fs)
pushw %es
pushw %fs
popw %es
@@ -67,7 +67,7 @@ GLOBAL(copy_to_fs)
ENDPROC(copy_to_fs)

#if 0 /* Not currently used, but can be enabled as needed */
-GLOBAL(copy_from_gs)
+SYM_FUNC_START(copy_from_gs)
pushw %ds
pushw %gs
popw %ds
@@ -76,7 +76,7 @@ GLOBAL(copy_from_gs)
retl
ENDPROC(copy_from_gs)

-GLOBAL(copy_to_gs)
+SYM_FUNC_START(copy_to_gs)
pushw %es
pushw %gs
popw %es
diff --git a/arch/x86/boot/pmjump.S b/arch/x86/boot/pmjump.S
index 3e0edc6d2a20..5915510c7b51 100644
--- a/arch/x86/boot/pmjump.S
+++ b/arch/x86/boot/pmjump.S
@@ -23,7 +23,7 @@
/*
* void protected_mode_jump(u32 entrypoint, u32 bootparams);
*/
-GLOBAL(protected_mode_jump)
+SYM_FUNC_START(protected_mode_jump)
movl %edx, %esi # Pointer to boot_params table

xorl %ebx, %ebx
@@ -48,7 +48,7 @@ ENDPROC(protected_mode_jump)

.code32
.section ".text32","ax"
-GLOBAL(in_pm32)
+SYM_FUNC_START(in_pm32)
# Set up data segments for flat 32-bit mode
movl %ecx, %ds
movl %ecx, %es
--
2.12.0
\
 
 \ /
  Last update: 2017-03-20 13:35    [W:0.175 / U:3.372 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site