summaryrefslogtreecommitdiff
path: root/OvmfPkg/ResetVector/Ia32
diff options
context:
space:
mode:
authorgeekboy15a <geekboy15a@6f19259b-4bc3-4df7-8a09-765794883524>2010-02-02 18:05:03 +0000
committergeekboy15a <geekboy15a@6f19259b-4bc3-4df7-8a09-765794883524>2010-02-02 18:05:03 +0000
commitd79d2cd2ce07cf6d18177648aba90e3ec0923ec3 (patch)
treed12d4ae8ede5920f86195caa538cf8ea04191d17 /OvmfPkg/ResetVector/Ia32
parentbc252e8ea4fbf56f0899c923d08bf72153b8e2eb (diff)
downloadedk2-platforms-d79d2cd2ce07cf6d18177648aba90e3ec0923ec3.tar.xz
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
Diffstat (limited to 'OvmfPkg/ResetVector/Ia32')
-rw-r--r--OvmfPkg/ResetVector/Ia32/32FlatTo64Flat.asm46
-rw-r--r--OvmfPkg/ResetVector/Ia32/SearchForBfvBase.asm86
-rw-r--r--OvmfPkg/ResetVector/Ia32/SearchForSecEntry.asm196
3 files changed, 0 insertions, 328 deletions
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
-