.model flat,C\r
.code\r
\r
+;\r
+; FspInfoHeaderRelativeOff is patched during build process and initialized to offset of the AsmGetFspBaseAddress \r
+; from the FSP Info header. \r
+;\r
FspInfoHeaderRelativeOff PROC NEAR PUBLIC\r
;\r
; This value will be pached by the build script\r
DD 012345678h\r
FspInfoHeaderRelativeOff ENDP\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
AsmGetFspBaseAddress PROC NEAR PUBLIC\r
mov eax, AsmGetFspBaseAddress\r
sub eax, dword ptr [FspInfoHeaderRelativeOff]\r
ret\r
AsmGetFspBaseAddress ENDP\r
\r
+;\r
+; No stack counter part of AsmGetFspBaseAddress. Return address is in edi.\r
+;\r
+AsmGetFspBaseAddressNoStack PROC NEAR PUBLIC\r
+ mov eax, AsmGetFspBaseAddress\r
+ sub eax, dword ptr [FspInfoHeaderRelativeOff]\r
+ add eax, 01Ch \r
+ mov eax, dword ptr [eax]\r
+ jmp edi\r
+AsmGetFspBaseAddressNoStack ENDP\r
+\r
+;\r
+; Returns FSP Info Header. \r
+;\r
+; This function gets the FSP Info Header using relative addressing and returns it\r
+;\r
AsmGetFspInfoHeader PROC NEAR PUBLIC\r
mov eax, AsmGetFspBaseAddress\r
sub eax, dword ptr [FspInfoHeaderRelativeOff]\r
ret\r
AsmGetFspInfoHeader ENDP\r
\r
+;\r
+; No stack counter part of AsmGetFspInfoHeader. Return address is in edi.\r
+;\r
+AsmGetFspInfoHeaderNoStack PROC NEAR PUBLIC\r
+ mov eax, AsmGetFspBaseAddress\r
+ sub eax, dword ptr [FspInfoHeaderRelativeOff]\r
+ jmp edi\r
+AsmGetFspInfoHeaderNoStack ENDP\r
+\r
END
\ No newline at end of file