Files
slimbootloader/BootloaderCommonPkg/Library/LinuxLib/Ia32/JumpToKernel.nasm
T
Aiden Park 9193a72864 Support booting to 64-bit kernel entry point (#550)
This will allow OsLoader payload to boot to 64-bit kernel entry point.
If CPU supports 64-bit mode and a kernel image has 64-bit entry point,
OsLoader will switch to 64-bit long mode and jump to the 64-bit entry
point. Otherwise, continue to boot to 32-bit entry point.
- Ported necessary code from EDK2 VitualMemory.c in MdeModulePkg
- Moved PagingLib from BootloaderCorePkg to BootloaderCommonPkg
- Removed unused FlushCacheLine
- TBD: 64-bit IDT

Next step is to support 64-bit Payload.
- 32-bit compatible mode
- 64-bit CryptoLib
- etc.

Signed-off-by: Aiden Park <aiden.park@intel.com>
2020-02-04 10:44:45 -08:00

39 lines
1.1 KiB
NASM

;------------------------------------------------------------------------------
;
; Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>
;
; SPDX-License-Identifier: BSD-2-Clause-Patent
;
;------------------------------------------------------------------------------
SECTION .text
;------------------------------------------------------------------------------
; VOID
; EFIAPI
; JumpToKernel (
; VOID *KernelStart,
; VOID *KernelBootParams
; );
;------------------------------------------------------------------------------
global ASM_PFX(JumpToKernel)
ASM_PFX(JumpToKernel):
mov esi, [esp + 8]
call DWORD [esp + 4]
ret
;------------------------------------------------------------------------------
; VOID
; EFIAPI
; JumpToKernel64 (
; VOID *KernelStart,
; VOID *KernelBootParams
; );
;------------------------------------------------------------------------------
global ASM_PFX(JumpToKernel64)
ASM_PFX(JumpToKernel64):
DB 0x67, 0x48 ; 32-bit address size, 64-bit operand size
mov esi, edx ; mov esi, rdx
call ecx
hlt