x86/efistub: Avoid legacy decompressor when doing EFI boot
[linux-2.6-microblaze.git] / arch / x86 / boot / compressed / efi_mixed.S
index 8a02a15..f4e22ef 100644 (file)
@@ -269,10 +269,6 @@ SYM_FUNC_START_LOCAL(efi32_entry)
        jmp     startup_32
 SYM_FUNC_END(efi32_entry)
 
-#define ST32_boottime          60 // offsetof(efi_system_table_32_t, boottime)
-#define BS32_handle_protocol   88 // offsetof(efi_boot_services_32_t, handle_protocol)
-#define LI32_image_base                32 // offsetof(efi_loaded_image_32_t, image_base)
-
 /*
  * efi_status_t efi32_pe_entry(efi_handle_t image_handle,
  *                            efi_system_table_32_t *sys_table)
@@ -280,8 +276,6 @@ SYM_FUNC_END(efi32_entry)
 SYM_FUNC_START(efi32_pe_entry)
        pushl   %ebp
        movl    %esp, %ebp
-       pushl   %eax                            // dummy push to allocate loaded_image
-
        pushl   %ebx                            // save callee-save registers
        pushl   %edi
 
@@ -290,48 +284,8 @@ SYM_FUNC_START(efi32_pe_entry)
        movl    $0x80000003, %eax               // EFI_UNSUPPORTED
        jnz     2f
 
-       call    1f
-1:     pop     %ebx
-
-       /* Get the loaded image protocol pointer from the image handle */
-       leal    -4(%ebp), %eax
-       pushl   %eax                            // &loaded_image
-       leal    (loaded_image_proto - 1b)(%ebx), %eax
-       pushl   %eax                            // pass the GUID address
-       pushl   8(%ebp)                         // pass the image handle
-
-       /*
-        * Note the alignment of the stack frame.
-        *   sys_table
-        *   handle             <-- 16-byte aligned on entry by ABI
-        *   return address
-        *   frame pointer
-        *   loaded_image       <-- local variable
-        *   saved %ebx         <-- 16-byte aligned here
-        *   saved %edi
-        *   &loaded_image
-        *   &loaded_image_proto
-        *   handle             <-- 16-byte aligned for call to handle_protocol
-        */
-
-       movl    12(%ebp), %eax                  // sys_table
-       movl    ST32_boottime(%eax), %eax       // sys_table->boottime
-       call    *BS32_handle_protocol(%eax)     // sys_table->boottime->handle_protocol
-       addl    $12, %esp                       // restore argument space
-       testl   %eax, %eax
-       jnz     2f
-
        movl    8(%ebp), %ecx                   // image_handle
        movl    12(%ebp), %edx                  // sys_table
-       movl    -4(%ebp), %esi                  // loaded_image
-       movl    LI32_image_base(%esi), %esi     // loaded_image->image_base
-       leal    (startup_32 - 1b)(%ebx), %ebp   // runtime address of startup_32
-       /*
-        * We need to set the image_offset variable here since startup_32() will
-        * use it before we get to the 64-bit efi_pe_entry() in C code.
-        */
-       subl    %esi, %ebp                      // calculate image_offset
-       movl    %ebp, (image_offset - 1b)(%ebx) // save image_offset
        xorl    %esi, %esi
        jmp     efi32_entry                     // pass %ecx, %edx, %esi
                                                // no other registers remain live
@@ -350,15 +304,6 @@ SYM_FUNC_START_NOALIGN(efi64_stub_entry)
 SYM_FUNC_END(efi64_stub_entry)
 #endif
 
-       .section ".rodata"
-       /* EFI loaded image protocol GUID */
-       .balign 4
-SYM_DATA_START_LOCAL(loaded_image_proto)
-       .long   0x5b1b31a1
-       .word   0x9562, 0x11d2
-       .byte   0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b
-SYM_DATA_END(loaded_image_proto)
-
        .data
        .balign 8
 SYM_DATA_START_LOCAL(efi32_boot_gdt)