From: Jiri Slaby <jslaby@suse.cz>
To: mingo@redhat.com
Cc: tglx@linutronix.de, hpa@zytor.com, x86@kernel.org,
jpoimboe@redhat.com, linux-kernel@vger.kernel.org,
Jiri Slaby <jslaby@suse.cz>
Subject: [RFC 09/10] x86: boot, extract efi_pe_entry from startup_64
Date: Fri, 17 Feb 2017 11:47:56 +0100 [thread overview]
Message-ID: <20170217104757.28588-9-jslaby@suse.cz> (raw)
In-Reply-To: <20170217104757.28588-1-jslaby@suse.cz>
efi_pe_entry body is somehow squashed into startup_64. It makes the code
less readable and illogical. Extract the inlined efi_pe_entry body from
startup_64 into a separate function and mark it appropriatelly by
ENTRY+ENDPROC.
ABI offsets are preserved:
0000000000000200 T startup_64
0000000000000280 T efi_pe_entry
00000000000002d0 t handover_entry
00000000000002fd t fail
0000000000000390 T efi64_stub_entry
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>
---
arch/x86/boot/compressed/head_64.S | 112 ++++++++++++++++++-------------------
1 file changed, 53 insertions(+), 59 deletions(-)
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index 59eccbc46ad7..7983e0de4069 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -243,65 +243,6 @@ ENTRY(startup_64)
* that maps our entire kernel(text+data+bss+brk), zero page
* and command line.
*/
-#ifdef CONFIG_EFI_STUB
- /*
- * The entry point for the PE/COFF executable is efi_pe_entry, so
- * only legacy boot loaders will execute this jmp.
- */
- jmp preferred_addr
-
-GLOBAL(efi_pe_entry)
- movq %rcx, efi64_config(%rip) /* Handle */
- movq %rdx, efi64_config+8(%rip) /* EFI System table pointer */
-
- leaq efi64_config(%rip), %rax
- movq %rax, efi_config(%rip)
-
- call 1f
-1: popq %rbp
- subq $1b, %rbp
-
- /*
- * Relocate efi_config->call().
- */
- addq %rbp, efi64_config+32(%rip)
-
- movq %rax, %rdi
- call make_boot_params
- cmpq $0,%rax
- je fail
- mov %rax, %rsi
- leaq startup_32(%rip), %rax
- movl %eax, BP_code32_start(%rsi)
- jmp 2f /* Skip the relocation */
-
-handover_entry:
- call 1f
-1: popq %rbp
- subq $1b, %rbp
-
- /*
- * Relocate efi_config->call().
- */
- movq efi_config(%rip), %rax
- addq %rbp, 32(%rax)
-2:
- movq efi_config(%rip), %rdi
- call efi_main
- movq %rax,%rsi
- cmpq $0,%rax
- jne 2f
-fail:
- /* EFI init failed, so hang. */
- hlt
- jmp fail
-2:
- movl BP_code32_start(%esi), %eax
- leaq preferred_addr(%rax), %rax
- jmp *%rax
-
-preferred_addr:
-#endif
/* Setup data segments. */
xorl %eax, %eax
@@ -372,6 +313,59 @@ preferred_addr:
ENDPROC(startup_64)
#ifdef CONFIG_EFI_STUB
+
+/* The entry point for the PE/COFF executable is efi_pe_entry. */
+ENTRY(efi_pe_entry)
+ movq %rcx, efi64_config(%rip) /* Handle */
+ movq %rdx, efi64_config+8(%rip) /* EFI System table pointer */
+
+ leaq efi64_config(%rip), %rax
+ movq %rax, efi_config(%rip)
+
+ call 1f
+1: popq %rbp
+ subq $1b, %rbp
+
+ /*
+ * Relocate efi_config->call().
+ */
+ addq %rbp, efi64_config+32(%rip)
+
+ movq %rax, %rdi
+ call make_boot_params
+ cmpq $0,%rax
+ je fail
+ mov %rax, %rsi
+ leaq startup_32(%rip), %rax
+ movl %eax, BP_code32_start(%rsi)
+ jmp 2f /* Skip the relocation */
+
+handover_entry:
+ call 1f
+1: popq %rbp
+ subq $1b, %rbp
+
+ /*
+ * Relocate efi_config->call().
+ */
+ movq efi_config(%rip), %rax
+ addq %rbp, 32(%rax)
+2:
+ movq efi_config(%rip), %rdi
+ call efi_main
+ movq %rax,%rsi
+ cmpq $0,%rax
+ jne 2f
+fail:
+ /* EFI init failed, so hang. */
+ hlt
+ jmp fail
+2:
+ movl BP_code32_start(%esi), %eax
+ leaq startup_64(%rax), %rax
+ jmp *%rax
+ENDPROC(efi_pe_entry)
+
.org 0x390
ENTRY(efi64_stub_entry)
movq %rdi, efi64_config(%rip) /* Handle */
--
2.11.1
next prev parent reply other threads:[~2017-02-17 10:48 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-17 10:47 [PATCH 01/10] x86: assembly, ENTRY for fn, GLOBAL for data Jiri Slaby
2017-02-17 10:47 ` [PATCH 02/10] x86: assembly, use ENDPROC for functions Jiri Slaby
2017-02-17 11:08 ` Juergen Gross
2017-02-17 10:47 ` [PATCH 03/10] x86: boot, annotate functions properly Jiri Slaby
2017-02-17 10:47 ` [PATCH 04/10] linkage: introduce ENTRY_LOCAL Jiri Slaby
2017-02-17 10:47 ` [PATCH 05/10] x86: kernel, annotate local functions Jiri Slaby
2017-02-17 10:47 ` [PATCH 06/10] x86: crypto, " Jiri Slaby
2017-02-17 10:47 ` [PATCH 07/10] linkage: introduce ALIASes Jiri Slaby
2017-02-17 10:47 ` [PATCH 08/10] x86: assembly, annotate aliases Jiri Slaby
2017-02-17 11:52 ` Juergen Gross
2017-02-17 10:47 ` Jiri Slaby [this message]
2017-02-17 10:47 ` [PREVIEW 10/10] linkage: add .cfi_{start/end}proc to ENTRY/ENDPROC Jiri Slaby
2017-02-17 13:16 ` Josh Poimboeuf
2017-02-17 13:36 ` Jiri Slaby
2017-02-17 14:07 ` Josh Poimboeuf
2017-02-17 14:26 ` Jiri Slaby
2017-02-17 21:18 ` Josh Poimboeuf
2017-02-17 11:06 ` [PATCH 01/10] x86: assembly, ENTRY for fn, GLOBAL for data Juergen Gross
2017-03-01 9:38 ` Ingo Molnar
2017-03-01 9:50 ` Jiri Slaby
2017-03-01 10:09 ` Thomas Gleixner
2017-03-01 10:27 ` Ingo Molnar
2017-03-03 12:22 ` Jiri Slaby
2017-03-03 18:20 ` hpa
2017-03-06 14:09 ` Jiri Slaby
2017-03-07 7:57 ` Ingo Molnar
2017-03-03 18:24 ` hpa
2017-03-07 8:27 ` Ingo Molnar
2017-03-07 17:24 ` [RFC] linkage: new macros for functions and data Jiri Slaby
2017-03-16 8:02 ` Ingo Molnar
2017-03-16 8:13 ` Jiri Slaby
2017-03-20 12:32 ` [PATCH v2 01/10] linkage: new macros for assembler symbols Jiri Slaby
2017-03-20 12:32 ` [PATCH v2 02/10] x86: assembly, FUNC_START for fn, DATA_START for data Jiri Slaby
2017-03-20 13:32 ` Josh Poimboeuf
2017-03-20 15:32 ` Jiri Slaby
2017-03-20 16:07 ` Josh Poimboeuf
2017-03-21 14:08 ` Pavel Machek
2017-03-22 7:25 ` Ingo Molnar
2017-03-22 7:39 ` Jiri Slaby
2017-03-22 7:46 ` Ingo Molnar
2017-03-22 14:11 ` Josh Poimboeuf
2017-03-22 15:01 ` Jiri Slaby
2017-03-22 15:33 ` Josh Poimboeuf
2017-03-23 7:38 ` Ingo Molnar
2017-03-23 13:24 ` Josh Poimboeuf
2017-03-22 12:06 ` Jiri Slaby
2017-03-22 15:52 ` Pavel Machek
2017-03-20 12:32 ` [PATCH v2 03/10] x86: assembly, use SYM_FUNC_END for functions Jiri Slaby
2017-03-21 14:48 ` Josh Poimboeuf
2017-03-22 7:29 ` Ingo Molnar
2017-03-22 14:26 ` Josh Poimboeuf
2017-03-22 15:44 ` Jiri Slaby
2017-04-10 11:23 ` Jiri Slaby
2017-04-10 19:35 ` Josh Poimboeuf
2017-04-12 6:24 ` Jiri Slaby
2017-04-12 6:52 ` Ingo Molnar
2017-03-20 12:32 ` [PATCH v2 04/10] x86: boot, annotate functions properly Jiri Slaby
2017-03-20 12:32 ` [PATCH v2 05/10] x86: kernel+lib, annotate local functions Jiri Slaby
2017-03-20 12:32 ` [PATCH v2 06/10] x86: crypto, " Jiri Slaby
2017-03-20 12:32 ` [PATCH v2 07/10] x86: assembly, annotate aliases Jiri Slaby
2017-03-20 12:32 ` [PATCH v2 08/10] x86: entry, annotate THUNKs Jiri Slaby
2017-03-20 12:32 ` [PATCH v2 09/10] x86: entry, annotate interrupt symbols properly Jiri Slaby
2017-03-20 12:32 ` [RFC v2 10/10] x86: boot, extract efi_pe_entry from startup_64 Jiri Slaby
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170217104757.28588-9-jslaby@suse.cz \
--to=jslaby@suse.cz \
--cc=hpa@zytor.com \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®