From d79d2cd2ce07cf6d18177648aba90e3ec0923ec3 Mon Sep 17 00:00:00 2001 From: geekboy15a Date: Tue, 2 Feb 2010 18:05:03 +0000 Subject: Updated OvmfPkg to use the reset vector binary from the UefiCpuPkg. Removing local reset vector files. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9912 6f19259b-4bc3-4df7-8a09-765794883524 --- OvmfPkg/ResetVector/Ia32/32FlatTo64Flat.asm | 46 ------ OvmfPkg/ResetVector/Ia32/SearchForBfvBase.asm | 86 ----------- OvmfPkg/ResetVector/Ia32/SearchForSecEntry.asm | 196 ------------------------- 3 files changed, 328 deletions(-) delete mode 100644 OvmfPkg/ResetVector/Ia32/32FlatTo64Flat.asm delete mode 100644 OvmfPkg/ResetVector/Ia32/SearchForBfvBase.asm delete mode 100644 OvmfPkg/ResetVector/Ia32/SearchForSecEntry.asm (limited to 'OvmfPkg/ResetVector/Ia32') diff --git a/OvmfPkg/ResetVector/Ia32/32FlatTo64Flat.asm b/OvmfPkg/ResetVector/Ia32/32FlatTo64Flat.asm deleted file mode 100644 index a97f9cc707..0000000000 --- a/OvmfPkg/ResetVector/Ia32/32FlatTo64Flat.asm +++ /dev/null @@ -1,46 +0,0 @@ -;------------------------------------------------------------------------------ -; @file -; Transition from 32 bit flat protected mode into 64 bit flat protected mode -; -; Copyright (c) 2008 - 2009, 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 -; which accompanies this distribution. The full text of the license may be found at -; http://opensource.org/licenses/bsd-license.php -; -; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -; -;------------------------------------------------------------------------------ - -BITS 32 - -; -; Modified: EAX -; -Transition32FlatTo64Flat: - - mov eax, ((ADDR_OF_START_OF_RESET_CODE & ~0xfff) - 0x1000) - mov cr3, eax - - mov eax, cr4 - bts eax, 5 ; enable PAE - mov cr4, eax - - mov ecx, 0xc0000080 - rdmsr - bts eax, 8 ; set LME - wrmsr - - mov eax, cr0 - bts eax, 31 ; set PG - mov cr0, eax ; enable paging - - jmp LINEAR_CODE64_SEL:ADDR_OF(jumpTo64BitAndLandHere) -BITS 64 -jumpTo64BitAndLandHere: - - debugShowPostCode POSTCODE_64BIT_MODE - - OneTimeCallRet Transition32FlatTo64Flat - diff --git a/OvmfPkg/ResetVector/Ia32/SearchForBfvBase.asm b/OvmfPkg/ResetVector/Ia32/SearchForBfvBase.asm deleted file mode 100644 index 21b64f46e3..0000000000 --- a/OvmfPkg/ResetVector/Ia32/SearchForBfvBase.asm +++ /dev/null @@ -1,86 +0,0 @@ -;------------------------------------------------------------------------------ -; @file -; Search for the Boot Firmware Volume (BFV) base address -; -; Copyright (c) 2008 - 2009, 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 -; which accompanies this distribution. The full text of the license may be found at -; http://opensource.org/licenses/bsd-license.php -; -; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -; -;------------------------------------------------------------------------------ - -;#define EFI_FIRMWARE_FILE_SYSTEM2_GUID \ -; { 0x8c8ce578, 0x8a3d, 0x4f1c, { 0x99, 0x35, 0x89, 0x61, 0x85, 0xc3, 0x2d, 0xd3 } } -%define FFS_GUID_DWORD0 0x8c8ce578 -%define FFS_GUID_DWORD1 0x4f1c8a3d -%define FFS_GUID_DWORD2 0x61893599 -%define FFS_GUID_DWORD3 0xd32dc385 - -BITS 32 - -; -; Modified: EAX, EBX -; Preserved: EDI, ESP -; -; @param[out] EBP Address of Boot Firmware Volume (BFV) -; -Flat32SearchForBfvBase: - - xor eax, eax -searchingForBfvHeaderLoop: - ; - ; We check for a firmware volume at every 4KB address in the top 16MB - ; just below 4GB. (Addresses at 0xffHHH000 where H is any hex digit.) - ; - sub eax, 0x1000 - cmp eax, 0xff000000 - jb searchedForBfvHeaderButNotFound - - ; - ; Check FFS GUID - ; - cmp dword [eax + 0x10], FFS_GUID_DWORD0 - jne searchingForBfvHeaderLoop - cmp dword [eax + 0x14], FFS_GUID_DWORD1 - jne searchingForBfvHeaderLoop - cmp dword [eax + 0x18], FFS_GUID_DWORD2 - jne searchingForBfvHeaderLoop - cmp dword [eax + 0x1c], FFS_GUID_DWORD3 - jne searchingForBfvHeaderLoop - - ; - ; Check FV Length - ; - cmp dword [eax + 0x24], 0 - jne searchingForBfvHeaderLoop - mov ebx, eax - add ebx, dword [eax + 0x20] - jnz searchingForBfvHeaderLoop - - jmp searchedForBfvHeaderAndItWasFound - -searchedForBfvHeaderButNotFound: - ; - ; Hang if the SEC entry point was not found - ; - debugShowPostCode POSTCODE_BFV_NOT_FOUND - - ; - ; 0xbfbfbfbf in the EAX & EBP registers helps signal what failed - ; for debugging purposes. - ; - mov eax, 0xBFBFBFBF - mov ebp, eax - jmp $ - -searchedForBfvHeaderAndItWasFound: - mov ebp, eax - - debugShowPostCode POSTCODE_BFV_FOUND - - OneTimeCallRet Flat32SearchForBfvBase - diff --git a/OvmfPkg/ResetVector/Ia32/SearchForSecEntry.asm b/OvmfPkg/ResetVector/Ia32/SearchForSecEntry.asm deleted file mode 100644 index 01d051918c..0000000000 --- a/OvmfPkg/ResetVector/Ia32/SearchForSecEntry.asm +++ /dev/null @@ -1,196 +0,0 @@ -;------------------------------------------------------------------------------ -; @file -; Search for the SEC Core entry point -; -; Copyright (c) 2008 - 2009, 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 -; which accompanies this distribution. The full text of the license may be found at -; http://opensource.org/licenses/bsd-license.php -; -; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -; -;------------------------------------------------------------------------------ - -BITS 32 - -%define EFI_FV_FILETYPE_SECURITY_CORE 0x03 - -; -; Modified: EAX, EBX, ECX, EDX -; Preserved: EDI, EBP, ESP -; -; @param[in] EBP Address of Boot Firmware Volume (BFV) -; @param[out] ESI SEC Core Entry Point Address -; -Flat32SearchForSecEntryPoint: - - ; - ; Initialize EBP and ESI to 0 - ; - xor ebx, ebx - mov esi, ebx - - ; - ; Pass over the BFV header - ; - mov eax, ebp - mov bx, [ebp + 0x30] - add eax, ebx - jc secEntryPointWasNotFound - - jmp searchingForFfsFileHeaderLoop - -moveForwardWhileSearchingForFfsFileHeaderLoop: - ; - ; Make forward progress in the search - ; - inc eax - jc secEntryPointWasNotFound - -searchingForFfsFileHeaderLoop: - test eax, eax - jz secEntryPointWasNotFound - - ; - ; Ensure 8 byte alignment - ; - add eax, 7 - jc secEntryPointWasNotFound - and al, 0xf8 - - ; - ; Look to see if there is an FFS file at eax - ; - mov bl, [eax + 0x17] - test bl, 0x20 - jz moveForwardWhileSearchingForFfsFileHeaderLoop - mov ecx, [eax + 0x14] - and ecx, 0x00ffffff - or ecx, ecx - jz moveForwardWhileSearchingForFfsFileHeaderLoop - add ecx, eax - jz jumpSinceWeFoundTheLastFfsFile - jc moveForwardWhileSearchingForFfsFileHeaderLoop -jumpSinceWeFoundTheLastFfsFile: - - ; - ; There seems to be a valid file at eax - ; - cmp byte [eax + 0x12], EFI_FV_FILETYPE_SECURITY_CORE ; Check File Type - jne readyToTryFfsFileAtEcx - -fileTypeIsSecCore: - OneTimeCall GetEntryPointOfFfsFile - test eax, eax - jnz doneSeachingForSecEntryPoint - -readyToTryFfsFileAtEcx: - ; - ; Try the next FFS file at ECX - ; - mov eax, ecx - jmp searchingForFfsFileHeaderLoop - -secEntryPointWasNotFound: - xor eax, eax - -doneSeachingForSecEntryPoint: - mov esi, eax - - test esi, esi - jnz secCoreEntryPointWasFound - -secCoreEntryPointWasNotFound: - ; - ; Hang if the SEC entry point was not found - ; - debugShowPostCode POSTCODE_SEC_NOT_FOUND - jz $ - -secCoreEntryPointWasFound: - debugShowPostCode POSTCODE_SEC_FOUND - - OneTimeCallRet Flat32SearchForSecEntryPoint - -%define EFI_SECTION_PE32 0x10 - -; -; Input: -; EAX - Start of FFS file -; ECX - End of FFS file -; -; Output: -; EAX - Entry point of PE32 (or 0 if not found) -; -; Modified: -; EBX -; -GetEntryPointOfFfsFile: - test eax, eax - jz getEntryPointOfFfsFileErrorReturn - add eax, 0x18 ; EAX = Start of section - -getEntryPointOfFfsFileLoopForSections: - cmp eax, ecx - jae getEntryPointOfFfsFileErrorReturn - - cmp byte [eax + 3], EFI_SECTION_PE32 - je getEntryPointOfFfsFileFoundPe32Section - - ; - ; The section type was not PE32, so move to next section - ; - mov ebx, dword [eax] - and ebx, 0x00ffffff - add eax, ebx - jc getEntryPointOfFfsFileErrorReturn - - ; - ; Ensure that FFS section is 32-bit aligned - ; - add eax, 3 - jc getEntryPointOfFfsFileErrorReturn - and al, 0xfc - jmp getEntryPointOfFfsFileLoopForSections - -getEntryPointOfFfsFileFoundPe32Section: - add eax, 4 ; EAX = Start of PE32 image - - mov ebx, eax - cmp word [eax], 'MZ' - jne thereIsNotAnMzSignature - movzx ebx, word [eax + 0x3c] - add ebx, eax -thereIsNotAnMzSignature: - - ; if (Hdr.Te->Signature == EFI_TE_IMAGE_HEADER_SIGNATURE) - cmp word [ebx], 'VZ' - jne thereIsNoVzSignature - ; *EntryPoint = (VOID *)((UINTN)Pe32Data + - ; (UINTN)(Hdr.Te->AddressOfEntryPoint & 0x0ffffffff) + - ; sizeof(EFI_TE_IMAGE_HEADER) - Hdr.Te->StrippedSize); - add eax, [ebx + 0x8] - add eax, 0x28 - movzx ebx, word [ebx + 0x6] - sub eax, ebx - jmp getEntryPointOfFfsFileReturn - -thereIsNoVzSignature: - - ; if (Hdr.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE) - cmp dword [ebx], `PE\x00\x00` - jne getEntryPointOfFfsFileErrorReturn - - ; *EntryPoint = (VOID *)((UINTN)Pe32Data + - ; (UINTN)(Hdr.Pe32->OptionalHeader.AddressOfEntryPoint & 0x0ffffffff)); - add eax, [ebx + 0x4 + 0x14 + 0x10] - jmp getEntryPointOfFfsFileReturn - -getEntryPointOfFfsFileErrorReturn: - mov eax, 0 - -getEntryPointOfFfsFileReturn: - OneTimeCallRet GetEntryPointOfFfsFile - -- cgit v1.2.3