%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.

This patch fixes the gdtr's base address by adding delta to it and saves
one instruction.

Signed-off-by: Wei Yang <[email protected]>
---
 arch/x86/boot/compressed/head_64.S | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/arch/x86/boot/compressed/head_64.S 
b/arch/x86/boot/compressed/head_64.S
index efdfba2..4d85e60 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -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 */
-- 
2.5.0

Reply via email to