]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFsp2Pkg/FspSecCore/Ia32/FspHelper.nasm
a848dcbc0298ac059363b517e1ba9edf056be796
[mirror_edk2.git] / IntelFsp2Pkg / FspSecCore / Ia32 / FspHelper.nasm
1 ;; @file
2 ; Provide FSP helper function.
3 ;
4 ; Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
5 ; This program and the accompanying materials
6 ; are licensed and made available under the terms and conditions of the BSD License
7 ; which accompanies this distribution. The full text of the license may be found at
8 ; http://opensource.org/licenses/bsd-license.php.
9 ;
10 ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 ;;
13
14 SECTION .text
15
16 global ASM_PFX(FspInfoHeaderRelativeOff)
17 ASM_PFX(FspInfoHeaderRelativeOff):
18 DD 0x12345678 ; This value must be patched by the build script
19
20 global ASM_PFX(AsmGetFspBaseAddress)
21 ASM_PFX(AsmGetFspBaseAddress):
22 call ASM_PFX(AsmGetFspInfoHeader)
23 add eax, 0x1C
24 mov eax, dword [eax]
25 ret
26
27 global ASM_PFX(AsmGetFspInfoHeader)
28 ASM_PFX(AsmGetFspInfoHeader):
29 call ASM_PFX(NextInstruction)
30 ASM_PFX(NextInstruction):
31 pop eax
32 sub eax, ASM_PFX(NextInstruction)
33 add eax, ASM_PFX(AsmGetFspInfoHeader)
34 sub eax, dword [ASM_PFX(FspInfoHeaderRelativeOff)]
35 ret
36
37 global ASM_PFX(AsmGetFspInfoHeaderNoStack)
38 ASM_PFX(AsmGetFspInfoHeaderNoStack):
39 mov eax, ASM_PFX(AsmGetFspInfoHeader)
40 sub eax, dword [ASM_PFX(FspInfoHeaderRelativeOff)]
41 jmp edi