Merge branch 'makefile' into haiku
[grub2/phcoder.git] / kern / x86_64 / efi / startup.S
blobfb4fc7b64b6d66bcf105a35afba9568a080c3c50
1 /* startup.S - bootstrap GRUB itself */
2 /*
3  *  GRUB  --  GRand Unified Bootloader
4  *  Copyright (C) 2006,2007,2009  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         .code64
29 start:
30 _start:
31         jmp codestart
33         /*
34          *  Compatibility version number
35          *
36          *  These MUST be at byte offset 6 and 7 of the executable
37          *  DO NOT MOVE !!!
38          */
39         . = _start + 0x6
40         .byte   GRUB_BOOT_VERSION_MAJOR, GRUB_BOOT_VERSION_MINOR
42         /*
43          *  This is a special data area 8 bytes from the beginning.
44          */
46         . = _start + 0x8
48 VARIABLE(grub_prefix)
49         /* to be filled by grub-mkimage */
51         /*
52          *  Leave some breathing room for the prefix.
53          */
55         . = _start + 0x50
57 codestart:
58         movq    %rcx, EXT_C(grub_efi_image_handle)(%rip)
59         movq    %rdx, EXT_C(grub_efi_system_table)(%rip)
61         call    EXT_C(grub_main)
62         ret