diff options
author | jljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-12-16 23:29:15 +0000 |
---|---|---|
committer | jljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-12-16 23:29:15 +0000 |
commit | 7a55c43b072ec2192d35df5e44cf37eb8be06555 (patch) | |
tree | 0ffb3051583b198fa8b07a670a0fed8906221dad /OvmfPkg/ResetVector/Ia32/SearchForSecAndPeiEntries.asm | |
parent | 8861fc792ce90cb7ab18a91bd3d6596d77ee0170 (diff) | |
download | edk2-7a55c43b072ec2192d35df5e44cf37eb8be06555.tar.gz edk2-7a55c43b072ec2192d35df5e44cf37eb8be06555.tar.bz2 edk2-7a55c43b072ec2192d35df5e44cf37eb8be06555.zip |
OVMF ResetVector: Modify interface with SEC module
Previously it was:
ESI/RSI - SEC Core entry point
EDI/RDI - PEI Core entry point
EBP/RBP - Start of BFV
Now it is:
RAX/EAX Initial value of the EAX register
(BIST: Built-in Self Test)
DI 'BP': boot-strap processor, or
'AP': application processor
RBP/EBP Address of Boot Firmware Volume (BFV)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9571 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'OvmfPkg/ResetVector/Ia32/SearchForSecAndPeiEntries.asm')
-rw-r--r-- | OvmfPkg/ResetVector/Ia32/SearchForSecAndPeiEntries.asm | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/OvmfPkg/ResetVector/Ia32/SearchForSecAndPeiEntries.asm b/OvmfPkg/ResetVector/Ia32/SearchForSecAndPeiEntries.asm deleted file mode 100644 index 9bb0cd1fa6..0000000000 --- a/OvmfPkg/ResetVector/Ia32/SearchForSecAndPeiEntries.asm +++ /dev/null @@ -1,222 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2008, 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.
-;
-; Module Name:
-;
-; SearchForSecAndPeiEntry.asm
-;
-; Abstract:
-;
-; Search for the SEC Core and PEI Core entry points
-;
-;------------------------------------------------------------------------------
-
-BITS 32
-
-%define EFI_FV_FILETYPE_SECURITY_CORE 0x03
-%define EFI_FV_FILETYPE_PEI_CORE 0x04
-
-;
-; Input:
-; EBP - BFV Base Address
-;
-; Output:
-; ESI - SEC Core Entry Point Address (or 0 if not found)
-; EDI - PEI Core Entry Point Address (or 0 if not found)
-;
-; Modified:
-; EAX, EBX, ECX
-;
-Flat32SearchForSecAndPeiEntries:
-
- ;
- ; Initialize EBP and ESI to 0
- ;
- xor ebx, ebx
- mov esi, ebx
- mov edi, ebx
-
- ;
- ; Pass over the BFV header
- ;
- mov eax, ebp
- mov bx, [ebp + 0x30]
- add eax, ebx
- jc doneSeachingForSecAndPeiEntries
-
- jmp searchingForFfsFileHeaderLoop
-
-moveForwardWhileSearchingForFfsFileHeaderLoop:
- ;
- ; Make forward progress in the search
- ;
- inc eax
- jc doneSeachingForSecAndPeiEntries
-
-searchingForFfsFileHeaderLoop:
- test eax, eax
- jz doneSeachingForSecAndPeiEntries
-
- ;
- ; Ensure 8 byte alignment
- ;
- add eax, 7
- jc doneSeachingForSecAndPeiEntries
- 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
-; jmp $
- add ecx, eax
- jz jumpSinceWeFoundTheLastFfsFile
- jc moveForwardWhileSearchingForFfsFileHeaderLoop
-jumpSinceWeFoundTheLastFfsFile:
-
- ;
- ; There seems to be a valid file at eax
- ;
- mov bl, [eax + 0x12] ; BL - File Type
- cmp bl, EFI_FV_FILETYPE_PEI_CORE
- je fileTypeIsPeiCore
- cmp bl, EFI_FV_FILETYPE_SECURITY_CORE
- jne readyToTryFfsFileAtEcx
-
-fileTypeIsSecCore:
- callEdx GetEntryPointOfFfsFileReturnEdx
- test eax, eax
- jz readyToTryFfsFileAtEcx
-
- mov esi, eax
- jmp readyToTryFfsFileAtEcx
-
-fileTypeIsPeiCore:
- callEdx GetEntryPointOfFfsFileReturnEdx
- test eax, eax
- jz readyToTryFfsFileAtEcx
-
- mov edi, eax
-
-readyToTryFfsFileAtEcx:
- mov eax, ecx
- jmp searchingForFfsFileHeaderLoop
-
-doneSeachingForSecAndPeiEntries:
-
- test esi, esi
- jnz secCoreEntryPointWasFound
- writeToSerialPort '!'
-secCoreEntryPointWasFound:
- writeToSerialPort 'S'
- writeToSerialPort 'E'
- writeToSerialPort 'C'
- writeToSerialPort ' '
-
- test edi, edi
- jnz peiCoreEntryPointWasFound
- writeToSerialPort '!'
-peiCoreEntryPointWasFound:
- writeToSerialPort 'P'
- writeToSerialPort 'E'
- writeToSerialPort 'I'
- writeToSerialPort ' '
-
- OneTimeCallRet Flat32SearchForSecAndPeiEntries
-
-
-%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
-;
-GetEntryPointOfFfsFileReturnEdx:
- 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:
- jmp edx
-
-
|