[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86/boot: Use fastcall for 32bit code
commit 62da0b364a507d3fe48dcdb7c38592cc1848342f Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Mon Sep 2 12:11:51 2024 +0100 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Tue Sep 3 15:51:44 2024 +0100 x86/boot: Use fastcall for 32bit code This is marginally more efficient, but is mostly to get rid of the use of stdcall in cmdline.c and reloc.c No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/boot/Makefile | 2 +- xen/arch/x86/boot/cmdline.c | 6 +++--- xen/arch/x86/boot/defs.h | 1 - xen/arch/x86/boot/head.S | 15 ++++++++------- xen/arch/x86/boot/reloc.c | 12 ++++++------ 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile index de47740277..8f5bbff0cc 100644 --- a/xen/arch/x86/boot/Makefile +++ b/xen/arch/x86/boot/Makefile @@ -13,7 +13,7 @@ $(obj)/head.o: $(head-bin-objs:.o=.bin) CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS)) $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS)) -CFLAGS_x86_32 += -Werror -fno-builtin -g0 -msoft-float +CFLAGS_x86_32 += -Werror -fno-builtin -g0 -msoft-float -mregparm=3 CFLAGS_x86_32 += -nostdinc -include $(filter %/include/xen/config.h,$(XEN_CFLAGS)) CFLAGS_x86_32 += $(filter -I%,$(XEN_CFLAGS)) diff --git a/xen/arch/x86/boot/cmdline.c b/xen/arch/x86/boot/cmdline.c index b7375d1066..c1d21180b6 100644 --- a/xen/arch/x86/boot/cmdline.c +++ b/xen/arch/x86/boot/cmdline.c @@ -20,8 +20,8 @@ /* * This entry point is entered from xen/arch/x86/boot/head.S with: - * - 0x4(%esp) = &cmdline, - * - 0x8(%esp) = &early_boot_opts. + * - %eax = &cmdline, + * - %edx = &early_boot_opts. */ asm ( " .text \n" @@ -347,7 +347,7 @@ static void vga_parse(const char *cmdline, early_boot_opts_t *ebo) #endif /* SAF-1-safe */ -void __stdcall cmdline_parse_early(const char *cmdline, early_boot_opts_t *ebo) +void cmdline_parse_early(const char *cmdline, early_boot_opts_t *ebo) { if ( !cmdline ) return; diff --git a/xen/arch/x86/boot/defs.h b/xen/arch/x86/boot/defs.h index 4d519ac4f5..d733ee9b8b 100644 --- a/xen/arch/x86/boot/defs.h +++ b/xen/arch/x86/boot/defs.h @@ -22,6 +22,5 @@ #define __maybe_unused __attribute__((__unused__)) #define __packed __attribute__((__packed__)) -#define __stdcall __attribute__((__stdcall__)) #endif /* __BOOT_DEFS_H__ */ diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S index d867b015d9..12bbb97f33 100644 --- a/xen/arch/x86/boot/head.S +++ b/xen/arch/x86/boot/head.S @@ -613,10 +613,11 @@ trampoline_setup: /* Save Multiboot / PVH info struct (after relocation) for later use. */ push %edx /* Boot video info to be filled from MB2. */ - push %ecx /* Bottom-most low-memory stack address. */ - push %ebx /* Multiboot / PVH information address. */ - push %eax /* Magic number. */ + mov %ebx, %edx /* Multiboot / PVH information address. */ + /* reloc(magic/eax, info/edx, trampoline/ecx, video/stk) using fastcall. */ call reloc + add $4, %esp + #ifdef CONFIG_PVH_GUEST cmpb $0, sym_esi(pvh_boot) je 1f @@ -848,9 +849,9 @@ trampoline_setup: testl $MBI_CMDLINE,MB_flags(%ebx) jz 1f - lea sym_esi(early_boot_opts),%eax - push %eax - pushl MB_cmdline(%ebx) + lea sym_esi(early_boot_opts), %edx + mov MB_cmdline(%ebx), %eax + /* cmdline_parse_early(cmdline/eax, opts/edx) using fastcall. */ call cmdline_parse_early 1: @@ -871,7 +872,7 @@ trampoline_setup: /* * cmdline and reloc are written in C, and linked to be 32bit PIC with - * entrypoints at 0 and using the stdcall convention. + * entrypoints at 0 and using the fastcall convention. */ ALIGN cmdline_parse_early: diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c index eb9902d73f..38adca1f36 100644 --- a/xen/arch/x86/boot/reloc.c +++ b/xen/arch/x86/boot/reloc.c @@ -14,10 +14,10 @@ /* * This entry point is entered from xen/arch/x86/boot/head.S with: - * - 0x04(%esp) = MAGIC, - * - 0x08(%esp) = INFORMATION_ADDRESS, - * - 0x0c(%esp) = TOPMOST_LOW_MEMORY_STACK_ADDRESS. - * - 0x10(%esp) = BOOT_VIDEO_INFO_ADDRESS. + * - %eax = MAGIC, + * - %edx = INFORMATION_ADDRESS, + * - %ecx = TOPMOST_LOW_MEMORY_STACK_ADDRESS. + * - 0x04(%esp) = BOOT_VIDEO_INFO_ADDRESS. */ asm ( " .text \n" @@ -354,8 +354,8 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out) } /* SAF-1-safe */ -void *__stdcall reloc(uint32_t magic, uint32_t in, uint32_t trampoline, - uint32_t video_info) +void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline, + uint32_t video_info) { alloc = trampoline; -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |