FspHelper.nasm 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. ;; @file
  2. ; Provide FSP helper function.
  3. ;
  4. ; Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
  5. ; SPDX-License-Identifier: BSD-2-Clause-Patent
  6. ;;
  7. DEFAULT REL
  8. SECTION .text
  9. FSP_HEADER_IMGBASE_OFFSET EQU 1Ch
  10. global ASM_PFX(AsmGetFspBaseAddress)
  11. ASM_PFX(AsmGetFspBaseAddress):
  12. call ASM_PFX(AsmGetFspInfoHeader)
  13. add rax, FSP_HEADER_IMGBASE_OFFSET
  14. mov eax, [rax]
  15. ret
  16. global ASM_PFX(AsmGetFspInfoHeader)
  17. ASM_PFX(AsmGetFspInfoHeader):
  18. lea rax, [ASM_PFX(AsmGetFspInfoHeader)]
  19. DB 0x48, 0x2d ; sub rax, 0x????????
  20. global ASM_PFX(FspInfoHeaderRelativeOff)
  21. ASM_PFX(FspInfoHeaderRelativeOff):
  22. DD 0x12345678 ; This value must be patched by the build script
  23. and rax, 0xffffffff
  24. ret
  25. global ASM_PFX(AsmGetFspInfoHeaderNoStack)
  26. ASM_PFX(AsmGetFspInfoHeaderNoStack):
  27. lea rax, [ASM_PFX(AsmGetFspInfoHeader)]
  28. lea rcx, [ASM_PFX(FspInfoHeaderRelativeOff)]
  29. mov ecx, [rcx]
  30. sub rax, rcx
  31. and rax, 0xffffffff
  32. jmp rdi