From 2a63ea580a754f65ef8f2cf2f4682a51e6b7a9da Mon Sep 17 00:00:00 2001 From: Myles Watson Date: Fri, 20 Mar 2009 18:29:49 +0000 Subject: Kevin O'Connor said: The bug is in src/arch/i386/boot/boot.c. The inline assembly in jmp_to_elf_entry uses the "g" flag to pass in parameters. However, "g" allows gcc to use stack relative addressing of parameters. Easiest fix would be to change "g" to "ri" - put the parameter either in a register or as an immediate value. That's what this patch does. Signed-off-by: Myles Watson Acked-by: Stefan Reinauer git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4023 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- src/arch/i386/boot/boot.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/arch/i386/boot/boot.c b/src/arch/i386/boot/boot.c index c1cdf594a4..9e79cd332f 100644 --- a/src/arch/i386/boot/boot.c +++ b/src/arch/i386/boot/boot.c @@ -175,12 +175,12 @@ void jmp_to_elf_entry(void *entry, unsigned long buffer) " popl %%esi\n\t" :: - "g" (lb_start), "g" (buffer), "g" (lb_size), - "g" (entry), + "ri" (lb_start), "ri" (buffer), "ri" (lb_size), + "ri" (entry), #if CONFIG_MULTIBOOT - "g"(mbi), "g" (MB_MAGIC2) + "ri"(mbi), "ri" (MB_MAGIC2) #else - "g"(adjusted_boot_notes), "g" (0x0E1FB007) + "ri"(adjusted_boot_notes), "ri" (0x0E1FB007) #endif ); } -- cgit v1.2.3