From dd71f6e2876cb791fda1feb889558d1efcf41ea2 Mon Sep 17 00:00:00 2001 From: jljusten Date: Thu, 14 Feb 2013 19:21:39 +0000 Subject: OvmfPkg LoadLinuxLib: Use kernel's EFI entry point where available Usage of the EFI entry point was made feasible in the kernel x64 boot protocol 2.12 where a 32-bit & 64-bit entry point became well defined. http://git.kernel.org/linus/09c205af Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: David Woodhouse Reviewed-by: Jordan Justen git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14132 6f19259b-4bc3-4df7-8a09-765794883524 --- OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.S | 19 ++++++++++++++++++- OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.asm | 21 ++++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) (limited to 'OvmfPkg/Library/LoadLinuxLib/Ia32') diff --git a/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.S b/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.S index b8cd4ca515..f7440f74c4 100644 --- a/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.S +++ b/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.S @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ # -# Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
+# Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.
# # This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License @@ -13,6 +13,7 @@ #------------------------------------------------------------------------------ ASM_GLOBAL ASM_PFX(JumpToKernel) +ASM_GLOBAL ASM_PFX(JumpToUefiKernel) #------------------------------------------------------------------------------ # VOID @@ -27,3 +28,19 @@ ASM_PFX(JumpToKernel): calll 0x4(%esp) ret +#------------------------------------------------------------------------------ +# VOID +# EFIAPI +# JumpToUefiKernel ( +# EFI_HANDLE ImageHandle, +# EFI_SYSTEM_TABLE *SystemTable, +# VOID *KernelBootParams, +# VOID *KernelStart +# ); +#------------------------------------------------------------------------------ +ASM_PFX(JumpToUefiKernel): + movl 0xc(%esp), %eax + movl 0x264(%eax), %eax + addl 0x10(%esp), %eax + jmp %eax + diff --git a/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.asm b/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.asm index a8f3965f9a..21d0c4e724 100644 --- a/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.asm +++ b/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.asm @@ -1,6 +1,6 @@ ;------------------------------------------------------------------------------ ; -; Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.
+; Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.
; ; This program and the accompanying materials ; are licensed and made available under the terms and conditions of the BSD License @@ -32,4 +32,23 @@ JumpToKernel PROC JumpToKernel ENDP +;------------------------------------------------------------------------------ +; VOID +; EFIAPI +; JumpToUefiKernel ( +; EFI_HANDLE ImageHandle, +; EFI_SYSTEM_TABLE *SystemTable, +; VOID *KernelBootParams, +; VOID *KernelStart +; ); +;------------------------------------------------------------------------------ +JumpToUefiKernel PROC + + mov eax, [esp + 12] + mov eax, [eax + 264h] + add eax, [esp + 16] + jmp eax + +JumpToUefiKernel ENDP + END -- cgit v1.2.3