From: robertmh Date: Mon, 29 Jun 2009 15:55:42 +0000 (+0000) Subject: 2009-06-29 Robert Millan X-Git-Tag: 1.98~749 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c6fe4d532866e74a71ca4040350d5722babf9cc7;p=thirdparty%2Fgrub.git 2009-06-29 Robert Millan * loader/i386/linux.c [__i386__] (grub_linux_boot): Simplify inline assembly in final jump, using register constraints. --- diff --git a/ChangeLog b/ChangeLog index cd45a3b9b..ab44fb5d9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-06-29 Robert Millan + + * loader/i386/linux.c [__i386__] (grub_linux_boot): Simplify inline + assembly in final jump, using register constraints. + 2009-06-29 Robert Millan * include/grub/i386/linux.h (GRUB_LINUX_FLAG_QUIET): New macro. diff --git a/loader/i386/linux.c b/loader/i386/linux.c index e89baaadc..da2e34c4f 100644 --- a/loader/i386/linux.c +++ b/loader/i386/linux.c @@ -554,14 +554,8 @@ grub_linux_boot (void) asm volatile ("lidt %0" : : "m" (idt_desc)); asm volatile ("lgdt %0" : : "m" (gdt_desc)); - /* Pass parameters. */ - asm volatile ("movl %0, %%ecx" : : "m" (params->code32_start)); - asm volatile ("movl %0, %%esi" : : "m" (real_mode_mem)); - - asm volatile ("xorl %%ebx, %%ebx" : : ); - /* Enter Linux. */ - asm volatile ("jmp *%%ecx" : : ); + asm volatile ("jmp *%2" : : "b" (0), "S" (real_mode_mem), "g" (params->code32_start)); #endif