x86/boot: Simplify the GDTR calculation assembly code a bit
authorWei Yang <richard.weiyang@gmail.com>
Tue, 1 Nov 2016 15:49:24 +0000 (15:49 +0000)
committerIngo Molnar <mingo@kernel.org>
Mon, 7 Nov 2016 07:33:59 +0000 (08:33 +0100)
This patch calculates the GDTR's base address via a single instruction.

( EBP contains the address where it is loaded and GDTR's base address is
  already set to "gdt" in compilation. It is fine to get the correct base
  address by adding the delta to GDTR's base address. )

Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1478015364-5547-1-git-send-email-richard.weiyang@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/boot/compressed/head_64.S

index efdfba21a5b2b4e9c3fb3ef46b3d684187aea6e7..4d85e600db78292b46fc2ed2676b2cb171b708e2 100644 (file)
@@ -119,8 +119,7 @@ ENTRY(startup_32)
  */
 
        /* Load new GDT with the 64bit segments using 32bit descriptor */
-       leal    gdt(%ebp), %eax
-       movl    %eax, gdt+2(%ebp)
+       addl    %ebp, gdt+2(%ebp)
        lgdt    gdt(%ebp)
 
        /* Enable PAE mode */