]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
x86/boot/compressed: Simplify IDT/GDT preserve/restore in the EFI thunk
authorArd Biesheuvel <ardb@kernel.org>
Tue, 22 Nov 2022 16:10:08 +0000 (17:10 +0100)
committerBorislav Petkov <bp@suse.de>
Thu, 24 Nov 2022 07:57:41 +0000 (08:57 +0100)
Tweak the asm and remove some redundant instructions. While at it,
fix the associated comment for style and correctness.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/20221122161017.2426828-9-ardb@kernel.org
arch/x86/boot/compressed/efi_mixed.S

index 8844d8ed4b1c7561efc41de0f764021d5c4e146a..8b02e507d3bb055a70d23afcc23ce8ca57d4ce8b 100644 (file)
@@ -96,24 +96,20 @@ SYM_FUNC_START(__efi64_thunk)
 
        leaq    0x20(%rsp), %rbx
        sgdt    (%rbx)
-
-       addq    $16, %rbx
-       sidt    (%rbx)
+       sidt    16(%rbx)
 
        leaq    1f(%rip), %rbp
 
        /*
-        * Switch to IDT and GDT with 32-bit segments. This is the firmware GDT
-        * and IDT that was installed when the kernel started executing. The
-        * pointers were saved by the efi32_entry() routine below.
+        * Switch to IDT and GDT with 32-bit segments. These are the firmware
+        * GDT and IDT that were installed when the kernel started executing.
+        * The pointers were saved by the efi32_entry() routine below.
         *
         * Pass the saved DS selector to the 32-bit code, and use far return to
         * restore the saved CS selector.
         */
-       leaq    efi32_boot_idt(%rip), %rax
-       lidt    (%rax)
-       leaq    efi32_boot_gdt(%rip), %rax
-       lgdt    (%rax)
+       lidt    efi32_boot_idt(%rip)
+       lgdt    efi32_boot_gdt(%rip)
 
        movzwl  efi32_boot_ds(%rip), %edx
        movzwq  efi32_boot_cs(%rip), %rax
@@ -187,9 +183,7 @@ SYM_FUNC_START_LOCAL(efi_enter32)
         */
        cli
 
-       lidtl   (%ebx)
-       subl    $16, %ebx
-
+       lidtl   16(%ebx)
        lgdtl   (%ebx)
 
        movl    %cr4, %eax