Updated PCI IDs to latest snapshot.
[tangerine.git] / arch / common / boot / grub2 / kern / i386 / efi / startup.S
blob4709b3f29c515ca45b144a0b673880482a41dcbb
1 /* startup.S - bootstrap GRUB itself */
2 /*
3  *  GRUB  --  GRand Unified Bootloader
4  *  Copyright (C) 2006,2007  Free Software Foundation, Inc.
5  *
6  *  GRUB is free software: you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation, either version 3 of the License, or
9  *  (at your option) any later version.
10  *
11  *  GRUB is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
18  */
20 #include <config.h>
21 #include <grub/symbol.h>
22 #include <grub/boot.h>
24         .file   "startup.S"
25         .text
26         .globl  start, _start
27 start:
28 _start:
29         jmp codestart
31         /*
32          *  Compatibility version number
33          *
34          *  These MUST be at byte offset 6 and 7 of the executable
35          *  DO NOT MOVE !!!
36          */
37         . = EXT_C(start) + 0x6
38         .byte   GRUB_BOOT_VERSION_MAJOR, GRUB_BOOT_VERSION_MINOR
40         /*
41          *  This is a special data area 8 bytes from the beginning.
42          */
44         . = EXT_C(start) + 0x8
46 VARIABLE(grub_prefix)
47         /* to be filled by grub-mkimage */
49         /*
50          *  Leave some breathing room for the prefix.
51          */
53         . = EXT_C(start) + 0x50
55 codestart:
56         /*
57          *  EFI_SYSTEM_TABLE * and EFI_HANDLE are passed on the stack.
58          */
59         movl    4(%esp), %eax
60         movl    %eax, EXT_C(grub_efi_image_handle)
61         movl    8(%esp), %eax
62         movl    %eax, EXT_C(grub_efi_system_table)
63         call    EXT_C(grub_main)
64         ret