* grub-core/kern/x86_64/efi/startup.S (_start): Align the stack to a

16-byte boundary, as required by the x86-64 ABI, before calling
	grub_main.  In some cases, GCC emits code that assumes this
	alignment, which crashes if not aligned.  The EFI firmware is also
	entitled to assume that stack alignment without checking.
This commit is contained in:
Josh Triplett authored and Vladimir Serbinenko committed 2013-11-19 14:31:40 +01:00
1 parent d53f4900d7
commit 7960d3e182
2 files changed
+10 -2

No files matched your search

+8
View File
@@ -1,3 +1,11 @@
2013-11-19 Josh Triplett <josh@joshtriplett.org>
* grub-core/kern/x86_64/efi/startup.S (_start): Align the stack to a
16-byte boundary, as required by the x86-64 ABI, before calling
grub_main. In some cases, GCC emits code that assumes this
alignment, which crashes if not aligned. The EFI firmware is also
entitled to assume that stack alignment without checking.
2013-11-18 Josh Triplett <josh@joshtriplett.org>
* grub-core/mmap/efi/mmap.c (grub_mmap_register): Round up/down to
+2 -2
View File
@@ -30,6 +30,6 @@ _start:
movq %rcx, EXT_C(grub_efi_image_handle)(%rip)
movq %rdx, EXT_C(grub_efi_system_table)(%rip)
andq $~0xf, %rsp
call EXT_C(grub_main)
ret
/* Doesn't return. */