1 ;; @file 2 ; Provide FSP helper function. 3 ; 4 ; Copyright (c) 2015, 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 .586p 15 .model flat,C 16 .code 17 18 ; 19 ; FspInfoHeaderRelativeOff is patched during build process and initialized to offset of the AsmGetFspBaseAddress 20 ; from the FSP Info header. 21 ; 22 FspInfoHeaderRelativeOff PROC NEAR PUBLIC 23 ; 24 ; This value will be pached by the build script 25 ; 26 DD 012345678h 27 FspInfoHeaderRelativeOff ENDP 28 29 ; 30 ; Returns FSP Base Address. 31 ; 32 ; This function gets the FSP Info Header using relative addressing and returns the FSP Base from the header structure 33 ; 34 AsmGetFspBaseAddress PROC NEAR PUBLIC 35 mov eax, AsmGetFspBaseAddress 36 sub eax, dword ptr [FspInfoHeaderRelativeOff] 37 add eax, 01Ch 38 mov eax, dword ptr [eax] 39 ret 40 AsmGetFspBaseAddress ENDP 41 42 ; 43 ; No stack counter part of AsmGetFspBaseAddress. Return address is in edi. 44 ; 45 AsmGetFspBaseAddressNoStack PROC NEAR PUBLIC 46 mov eax, AsmGetFspBaseAddress 47 sub eax, dword ptr [FspInfoHeaderRelativeOff] 48 add eax, 01Ch 49 mov eax, dword ptr [eax] 50 jmp edi 51 AsmGetFspBaseAddressNoStack ENDP 52 53 ; 54 ; Returns FSP Info Header. 55 ; 56 ; This function gets the FSP Info Header using relative addressing and returns it 57 ; 58 AsmGetFspInfoHeader PROC NEAR PUBLIC 59 mov eax, AsmGetFspBaseAddress 60 sub eax, dword ptr [FspInfoHeaderRelativeOff] 61 ret 62 AsmGetFspInfoHeader ENDP 63 64 ; 65 ; No stack counter part of AsmGetFspInfoHeader. Return address is in edi. 66 ; 67 AsmGetFspInfoHeaderNoStack PROC NEAR PUBLIC 68 mov eax, AsmGetFspBaseAddress 69 sub eax, dword ptr [FspInfoHeaderRelativeOff] 70 jmp edi 71 AsmGetFspInfoHeaderNoStack ENDP 72 73 END