1#------------------------------------------------------------------------------ 2# 3# Copyright (c) 2015, Intel Corporation. All rights reserved.<BR> 4# This program and the accompanying materials 5# are licensed and made available under the terms and conditions of the BSD License 6# which accompanies this distribution. The full text of the license may be found at 7# http://opensource.org/licenses/bsd-license.php. 8# 9# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11# 12# Abstract: 13# 14# Provide FSP helper function. 15# 16#------------------------------------------------------------------------------ 17 18# 19# FspInfoHeaderRelativeOff is patched during build process and initialized to offset of the AsmGetFspBaseAddress 20# from the FSP Info header. 21# 22ASM_GLOBAL ASM_PFX(FspInfoHeaderRelativeOff) 23ASM_PFX(FspInfoHeaderRelativeOff): 24 # 25 # This value will be pached by the build script 26 # 27 .long 0x012345678 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# 34ASM_GLOBAL ASM_PFX(AsmGetFspBaseAddress) 35ASM_PFX(AsmGetFspBaseAddress): 36 mov $AsmGetFspBaseAddress, %eax 37 sub FspInfoHeaderRelativeOff, %eax 38 add $0x01C, %eax 39 mov (%eax), %eax 40 ret 41 42# 43# No stack counter part of AsmGetFspBaseAddress. Return address is in edi. 44# 45ASM_GLOBAL ASM_PFX(AsmGetFspBaseAddressNoStack) 46ASM_PFX(AsmGetFspBaseAddressNoStack): 47 mov $AsmGetFspBaseAddress, %eax 48 sub FspInfoHeaderRelativeOff, %eax 49 add $0x01C, %eax 50 mov (%eax), %eax 51 jmp *%edi 52 53# 54# Returns FSP Info Header. 55# 56# This function gets the FSP Info Header using relative addressing and returns it 57# 58ASM_GLOBAL ASM_PFX(AsmGetFspInfoHeader) 59ASM_PFX(AsmGetFspInfoHeader): 60 mov $AsmGetFspBaseAddress, %eax 61 sub FspInfoHeaderRelativeOff, %eax 62 ret 63 64# 65# No stack counter part of AsmGetFspInfoHeader. Return address is in edi. 66# 67ASM_GLOBAL ASM_PFX(AsmGetFspInfoHeaderNoStack) 68ASM_PFX(AsmGetFspInfoHeaderNoStack): 69 mov $AsmGetFspBaseAddress, %eax 70 sub FspInfoHeaderRelativeOff, %eax 71 jmp *%edi 72