X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=IntelFspPkg%2FFspSecCore%2FIa32%2FFspHelper.s;h=55d8ae75c0df50d13a9d33984c021cf9e879b1b6;hp=a6cf36259d69a4511a459e6f7862e6cb76122a55;hb=f0abe42fd77c07ea06b24efe5bf861f5c49c8559;hpb=e7401ee1af263ff946a57f047124241fa4f01cd5 diff --git a/IntelFspPkg/FspSecCore/Ia32/FspHelper.s b/IntelFspPkg/FspSecCore/Ia32/FspHelper.s index a6cf36259d..55d8ae75c0 100644 --- a/IntelFspPkg/FspSecCore/Ia32/FspHelper.s +++ b/IntelFspPkg/FspSecCore/Ia32/FspHelper.s @@ -15,6 +15,10 @@ # #------------------------------------------------------------------------------ +# +# FspInfoHeaderRelativeOff is patched during build process and initialized to offset of the AsmGetFspBaseAddress +# from the FSP Info header. +# ASM_GLOBAL ASM_PFX(FspInfoHeaderRelativeOff) ASM_PFX(FspInfoHeaderRelativeOff): # @@ -22,17 +26,46 @@ ASM_PFX(FspInfoHeaderRelativeOff): # .long 0x012345678 - +# +# Returns FSP Base Address. +# +# This function gets the FSP Info Header using relative addressing and returns the FSP Base from the header structure +# ASM_GLOBAL ASM_PFX(AsmGetFspBaseAddress) ASM_PFX(AsmGetFspBaseAddress): mov $AsmGetFspBaseAddress, %eax - sub $FspInfoHeaderRelativeOff, %eax + sub FspInfoHeaderRelativeOff, %eax add $0x01C, %eax mov (%eax), %eax ret +# +# No stack counter part of AsmGetFspBaseAddress. Return address is in edi. +# +ASM_GLOBAL ASM_PFX(AsmGetFspBaseAddressNoStack) +ASM_PFX(AsmGetFspBaseAddressNoStack): + mov $AsmGetFspBaseAddress, %eax + sub FspInfoHeaderRelativeOff, %eax + add $0x01C, %eax + mov (%eax), %eax + jmp *%edi + +# +# Returns FSP Info Header. +# +# This function gets the FSP Info Header using relative addressing and returns it +# ASM_GLOBAL ASM_PFX(AsmGetFspInfoHeader) ASM_PFX(AsmGetFspInfoHeader): mov $AsmGetFspBaseAddress, %eax - sub $FspInfoHeaderRelativeOff, %eax + sub FspInfoHeaderRelativeOff, %eax ret + +# +# No stack counter part of AsmGetFspInfoHeader. Return address is in edi. +# +ASM_GLOBAL ASM_PFX(AsmGetFspInfoHeaderNoStack) +ASM_PFX(AsmGetFspInfoHeaderNoStack): + mov $AsmGetFspBaseAddress, %eax + sub FspInfoHeaderRelativeOff, %eax + jmp *%edi