uboot/arch/x86/lib/crt0_ia32_efi.S
<<
>>
Prefs
   1/*
   2 * crt0-efi-ia32.S - x86 EFI startup code.
   3 *
   4 * Copyright (C) 1999 Hewlett-Packard Co.
   5 * Contributed by David Mosberger <davidm@hpl.hp.com>.
   6 * All rights reserved.
   7 *
   8 * SPDX-License-Identifier:     BSD-3-Clause
   9 */
  10
  11        .text
  12        .align 4
  13
  14        .globl _start
  15_start:
  16        pushl %ebp
  17        movl %esp,%ebp
  18
  19        pushl 12(%ebp)                  # copy "image" argument
  20        pushl  8(%ebp)                  # copy "systab" argument
  21
  22        call 0f
  230:      popl %eax
  24        movl %eax,%ebx
  25
  26        addl $image_base-0b,%eax        # %eax = ldbase
  27        addl $_DYNAMIC-0b,%ebx          # %ebx = _DYNAMIC
  28
  29        pushl %ebx                      # pass _DYNAMIC as second argument
  30        pushl %eax                      # pass ldbase as first argument
  31        call _relocate
  32        popl %ebx
  33        popl %ebx
  34        testl %eax,%eax
  35        jne .exit
  36        call efi_main           # call app with "image" and "systab" argument
  37
  38.exit:  leave
  39        ret
  40
  41        /*
  42         * hand-craft a dummy .reloc section so EFI knows it's a relocatable
  43         * executable:
  44         */
  45        .data
  46dummy:  .long   0
  47
  48#define IMAGE_REL_ABSOLUTE      0
  49        .section .reloc
  50        .long   dummy                                   /* Page RVA */
  51        .long   10                                      /* Block Size (2*4+2) */
  52        .word   (IMAGE_REL_ABSOLUTE << 12) +  0         /* reloc for dummy */
  53