]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFspPkg/FspSecCore/Ia32/FspHelper.s
IntelFspPkg/FspSecCore add AsmGetFspBaseAddressNoStack and AsmGetFspInfoHeaderNoStack
[mirror_edk2.git] / IntelFspPkg / FspSecCore / Ia32 / FspHelper.s
index a6cf36259d69a4511a459e6f7862e6cb76122a55..55d8ae75c0df50d13a9d33984c021cf9e879b1b6 100644 (file)
 #\r
 #------------------------------------------------------------------------------\r
 \r
+#\r
+# FspInfoHeaderRelativeOff is patched during build process and initialized to offset of the  AsmGetFspBaseAddress \r
+# from the FSP Info header. \r
+#\r
 ASM_GLOBAL ASM_PFX(FspInfoHeaderRelativeOff)\r
 ASM_PFX(FspInfoHeaderRelativeOff):\r
    #\r
@@ -22,17 +26,46 @@ ASM_PFX(FspInfoHeaderRelativeOff):
    #\r
    .long    0x012345678\r
 \r
-\r
+#\r
+# Returns FSP Base Address. \r
+#\r
+# This function gets the FSP Info Header using relative addressing and returns the FSP Base from the header structure\r
+#\r
 ASM_GLOBAL ASM_PFX(AsmGetFspBaseAddress)\r
 ASM_PFX(AsmGetFspBaseAddress):\r
    mov    $AsmGetFspBaseAddress, %eax\r
-   sub    $FspInfoHeaderRelativeOff, %eax\r
+   sub    FspInfoHeaderRelativeOff, %eax\r
    add    $0x01C, %eax\r
    mov    (%eax), %eax\r
    ret\r
 \r
+#\r
+# No stack counter part of AsmGetFspBaseAddress. Return address is in edi.\r
+#\r
+ASM_GLOBAL ASM_PFX(AsmGetFspBaseAddressNoStack)\r
+ASM_PFX(AsmGetFspBaseAddressNoStack):\r
+   mov    $AsmGetFspBaseAddress, %eax\r
+   sub    FspInfoHeaderRelativeOff, %eax\r
+   add    $0x01C, %eax \r
+   mov    (%eax), %eax\r
+   jmp    *%edi\r
+\r
+#\r
+# Returns FSP Info Header. \r
+#\r
+# This function gets the FSP Info Header using relative addressing and returns it\r
+#\r
 ASM_GLOBAL ASM_PFX(AsmGetFspInfoHeader)\r
 ASM_PFX(AsmGetFspInfoHeader):\r
    mov    $AsmGetFspBaseAddress, %eax\r
-   sub    $FspInfoHeaderRelativeOff, %eax\r
+   sub    FspInfoHeaderRelativeOff, %eax\r
    ret\r
+   \r
+#\r
+# No stack counter part of AsmGetFspInfoHeader. Return address is in edi.\r
+#\r
+ASM_GLOBAL ASM_PFX(AsmGetFspInfoHeaderNoStack)\r
+ASM_PFX(AsmGetFspInfoHeaderNoStack):\r
+   mov    $AsmGetFspBaseAddress, %eax\r
+   sub    FspInfoHeaderRelativeOff, %eax\r
+   jmp    *%edi\r