]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFspPkg/FspSecCore/Ia32/FspHelper.asm
IntelFspPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / IntelFspPkg / FspSecCore / Ia32 / FspHelper.asm
CommitLineData
9da59186
JY
1;; @file\r
2; Provide FSP helper function.\r
3;\r
4; Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
16a16ea6 5; SPDX-License-Identifier: BSD-2-Clause-Patent\r
9da59186
JY
6;;\r
7\r
8 .586p\r
9 .model flat,C\r
10 .code\r
11\r
f0abe42f
JY
12;\r
13; FspInfoHeaderRelativeOff is patched during build process and initialized to offset of the AsmGetFspBaseAddress \r
14; from the FSP Info header. \r
15;\r
3b17b245 16FspInfoHeaderRelativeOff PROC NEAR PUBLIC\r
9da59186
JY
17 ;\r
18 ; This value will be pached by the build script\r
19 ;\r
20 DD 012345678h\r
21FspInfoHeaderRelativeOff ENDP\r
22\r
f0abe42f
JY
23;\r
24; Returns FSP Base Address. \r
25;\r
26; This function gets the FSP Info Header using relative addressing and returns the FSP Base from the header structure\r
27;\r
16b7e82c
JY
28AsmGetFspBaseAddress PROC NEAR PUBLIC\r
29 mov eax, AsmGetFspBaseAddress\r
9da59186
JY
30 sub eax, dword ptr [FspInfoHeaderRelativeOff]\r
31 add eax, 01Ch\r
32 mov eax, dword ptr [eax]\r
33 ret\r
16b7e82c 34AsmGetFspBaseAddress ENDP\r
9da59186 35\r
f0abe42f
JY
36;\r
37; No stack counter part of AsmGetFspBaseAddress. Return address is in edi.\r
38;\r
39AsmGetFspBaseAddressNoStack PROC NEAR PUBLIC\r
40 mov eax, AsmGetFspBaseAddress\r
41 sub eax, dword ptr [FspInfoHeaderRelativeOff]\r
42 add eax, 01Ch \r
43 mov eax, dword ptr [eax]\r
44 jmp edi\r
45AsmGetFspBaseAddressNoStack ENDP\r
46\r
47;\r
48; Returns FSP Info Header. \r
49;\r
50; This function gets the FSP Info Header using relative addressing and returns it\r
51;\r
16b7e82c
JY
52AsmGetFspInfoHeader PROC NEAR PUBLIC\r
53 mov eax, AsmGetFspBaseAddress\r
3b17b245
MM
54 sub eax, dword ptr [FspInfoHeaderRelativeOff]\r
55 ret\r
16b7e82c 56AsmGetFspInfoHeader ENDP\r
3b17b245 57\r
f0abe42f
JY
58;\r
59; No stack counter part of AsmGetFspInfoHeader. Return address is in edi.\r
60;\r
61AsmGetFspInfoHeaderNoStack PROC NEAR PUBLIC\r
62 mov eax, AsmGetFspBaseAddress\r
63 sub eax, dword ptr [FspInfoHeaderRelativeOff]\r
64 jmp edi\r
65AsmGetFspInfoHeaderNoStack ENDP\r
66\r
9da59186 67 END