From f940fea8b1c914082bd86238068c3561c2ecd540 Mon Sep 17 00:00:00 2001 From: jljusten Date: Mon, 28 Jan 2013 16:55:22 +0000 Subject: Revert "OvmfPkg: LoadLinuxLib: Use kernel's EFI entry point where available" This reverts commit r14053. This change depends on changes to the kernel which are not yet finalized/upstream. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14110 6f19259b-4bc3-4df7-8a09-765794883524 --- OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.S | 19 +---------------- OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.asm | 21 +------------------ OvmfPkg/Library/LoadLinuxLib/Linux.c | 16 ++++----------- OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.h | 11 +--------- OvmfPkg/Library/LoadLinuxLib/X64/JumpToKernel.S | 22 -------------------- OvmfPkg/Library/LoadLinuxLib/X64/JumpToKernel.asm | 24 ---------------------- 6 files changed, 7 insertions(+), 106 deletions(-) (limited to 'OvmfPkg/Library/LoadLinuxLib') diff --git a/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.S b/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.S index f7440f74c4..b8cd4ca515 100644 --- a/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.S +++ b/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.S @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ # -# Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.
+# Copyright (c) 2006 - 2011, 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,7 +13,6 @@ #------------------------------------------------------------------------------ ASM_GLOBAL ASM_PFX(JumpToKernel) -ASM_GLOBAL ASM_PFX(JumpToUefiKernel) #------------------------------------------------------------------------------ # VOID @@ -28,19 +27,3 @@ 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 21d0c4e724..a8f3965f9a 100644 --- a/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.asm +++ b/OvmfPkg/Library/LoadLinuxLib/Ia32/JumpToKernel.asm @@ -1,6 +1,6 @@ ;------------------------------------------------------------------------------ ; -; Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.
+; Copyright (c) 2006 - 2012, 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,23 +32,4 @@ 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 diff --git a/OvmfPkg/Library/LoadLinuxLib/Linux.c b/OvmfPkg/Library/LoadLinuxLib/Linux.c index 862698a39e..1da5507ff1 100644 --- a/OvmfPkg/Library/LoadLinuxLib/Linux.c +++ b/OvmfPkg/Library/LoadLinuxLib/Linux.c @@ -604,11 +604,14 @@ SetupGraphics ( STATIC EFI_STATUS SetupLinuxBootParams ( + IN VOID *Kernel, IN OUT struct boot_params *Bp ) { SetupGraphics (Bp); + Bp->hdr.code32_start = (UINT32)(UINTN) Kernel; + SetupLinuxMemmap (Bp); return EFI_SUCCESS; @@ -641,18 +644,7 @@ LoadLinux ( InitLinuxDescriptorTables (); - Bp->hdr.code32_start = (UINT32)(UINTN) Kernel; - if (Bp->hdr.version >= 0x20b && Bp->hdr.handover_offset && - (Bp->hdr.load_flags & (sizeof(long) >> 1))) { - DEBUG ((EFI_D_INFO, "Jumping to kernel EFI handover point at ofs %x\n", Bp->hdr.handover_offset)); - - DisableInterrupts (); - JumpToUefiKernel ((VOID*) gImageHandle, (VOID*) gST, KernelSetup, Kernel); - } - // - // Old kernels without EFI handover protocol - // - SetupLinuxBootParams (KernelSetup); + SetupLinuxBootParams (Kernel, (struct boot_params*) KernelSetup); DEBUG ((EFI_D_INFO, "Jumping to kernel\n")); DisableInterrupts (); diff --git a/OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.h b/OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.h index 045cbf9b2f..f869797262 100644 --- a/OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.h +++ b/OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.h @@ -1,7 +1,7 @@ /** @file Boot UEFI Linux. - Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.
+ Copyright (c) 2008 - 2011, 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 @@ -36,15 +36,6 @@ JumpToKernel ( VOID *KernelBootParams ); -VOID -EFIAPI -JumpToUefiKernel ( - EFI_HANDLE ImageHandle, - EFI_SYSTEM_TABLE *SystemTable, - VOID *KernelBootParams, - VOID *KernelStart - ); - VOID InitLinuxDescriptorTables ( VOID diff --git a/OvmfPkg/Library/LoadLinuxLib/X64/JumpToKernel.S b/OvmfPkg/Library/LoadLinuxLib/X64/JumpToKernel.S index 06d0a1f556..edc6e7bd70 100644 --- a/OvmfPkg/Library/LoadLinuxLib/X64/JumpToKernel.S +++ b/OvmfPkg/Library/LoadLinuxLib/X64/JumpToKernel.S @@ -13,7 +13,6 @@ #------------------------------------------------------------------------------ ASM_GLOBAL ASM_PFX(JumpToKernel) -ASM_GLOBAL ASM_PFX(JumpToUefiKernel) #------------------------------------------------------------------------------ # VOID @@ -68,24 +67,3 @@ ASM_PFX(JumpToKernel): ret .code64 -#------------------------------------------------------------------------------ -# VOID -# EFIAPI -# JumpToUefiKernel ( -# EFI_HANDLE ImageHandle, -# EFI_SYSTEM_TABLE *SystemTable, -# VOID *KernelBootParams, -# VOID *KernelStart -# ); -#------------------------------------------------------------------------------ -ASM_PFX(JumpToUefiKernel): - movq %rcx, %rdi - movq %rdx, %rsi - movq %r8, %rdx - xor %rax, %rax - movl 0x264(%r8), %eax - addq %rax, %r9 - addq $0x200, %r9 - callq %r9 - ret - diff --git a/OvmfPkg/Library/LoadLinuxLib/X64/JumpToKernel.asm b/OvmfPkg/Library/LoadLinuxLib/X64/JumpToKernel.asm index fc07eab684..bcf6260e1d 100644 --- a/OvmfPkg/Library/LoadLinuxLib/X64/JumpToKernel.asm +++ b/OvmfPkg/Library/LoadLinuxLib/X64/JumpToKernel.asm @@ -68,28 +68,4 @@ JumpToKernel PROC JumpToKernel ENDP -;------------------------------------------------------------------------------ -; VOID -; EFIAPI -; JumpToUefiKernel ( -; EFI_HANDLE ImageHandle, // rcx -; EFI_SYSTEM_TABLE *SystemTable, // rdx -; VOID *KernelBootParams // r8 -; VOID *KernelStart, // r9 -; ); -;------------------------------------------------------------------------------ -JumpToUefiKernel PROC - - mov rdi, rcx - mov rsi, rdx - mov rdx, r8 - xor rax, rax - mov eax, [r8 + 264h] - add r9, rax - add r9, 200h - call r9 - ret - -JumpToUefiKernel ENDP - END -- cgit v1.2.3