On Wed, 31 May, at 10:12:40AM, Jiri Slaby wrote: > efi_pe_entry body is somehow squashed into startup_32. In the old days, > we forced startup_32 to start at offset 0x00 and efi_pe_entry to start > at 0x10. But this requirement was removed in 99f857db8857 ("x86, build: > Dynamically find entry points in compressed startup code") long time > ago. > > The way it is now makes the code less readable and illogical. And given > we can now safely extract the inlined efi_pe_entry body from > startup_32 into a separate function, we do so and we separate it to two > functions as they are marked already: efi_pe_entry + efi32_stub_entry. > > We also annotate the functions appropriatelly by ENTRY+ENDPROC. > > ABI offset is preserved: > 0000 128 FUNC GLOBAL DEFAULT 6 startup_32 > 0080 60 FUNC GLOBAL DEFAULT 6 efi_pe_entry > 00bc 68 FUNC GLOBAL DEFAULT 6 efi32_stub_entry > > On the top-level, it looked like: > ENTRY(startup_32) > #ifdef CONFIG_EFI_STUB ; start of inlined > jmp preferred_addr > ENTRY(efi_pe_entry) > ... ; a lot of assembly (efi_pe_entry) > ENTRY(efi32_stub_entry) > ... ; a lot of assembly (efi32_stub_entry) > leal preferred_addr(%eax), %eax > jmp *%eax > preferred_addr: > #endif ; end of inlined > ... ; a lot of assembly (startup_32) > ENDPROC(startup_32) > > And it is converted into: > ENTRY(startup_32) > ... ; a lot of assembly (startup_32) > ENDPROC(startup_32) > > #ifdef CONFIG_EFI_STUB > ENTRY(efi_pe_entry) > ... ; a lot of assembly (efi_pe_entry) > ENDPROC(efi_pe_entry) > > ENTRY(efi32_stub_entry) > ... ; a lot of assembly (efi32_stub_entry) > leal startup_32(%eax), %eax > jmp *%eax > ENDPROC(efi32_stub_entry) > #endif > > Signed-off-by: Jiri Slaby <jsl...@suse.cz> > Cc: "H. Peter Anvin" <h...@zytor.com> > Cc: Thomas Gleixner <t...@linutronix.de> > Cc: Ingo Molnar <mi...@redhat.com> > Cc: <x...@kernel.org> > Cc: David Woodhouse <dw...@infradead.org> > Cc: Matt Fleming <m...@codeblueprint.co.uk> > --- > arch/x86/boot/compressed/head_32.S | 129 > ++++++++++++++++++------------------- > 1 file changed, 64 insertions(+), 65 deletions(-)
Reviewed-by: Matt Fleming <m...@codeblueprint.co.uk>