28.7 Speculation and floating point register usage

IPF platforms support speculative memory accesses and a large number of floating point registers. UEFI drivers that are compiled for IPF platforms must follow the calling conventions defined in the SAL Specification. The SAL Specification only allows the first 32 floating point registers to be used and defines the amount of speculation support that a platform is required to implement for the UEFI pre-boot environment. These requirements mean that the correct compiler and linker switches must be set correctly to guarantee that these calling conventions are followed. The EDK II provides proper compiler and linker settings for several tool chains that support IPF platforms. These settings may have to be adjusted if updates to a tool chain are release or if a different tool chain is used. The following table shows the compiler flags for a few different compilers. The compiler flag that specifies that only the first 32 floating point registers may be used for Microsoft* compilers is /QIPF_fr32. The equivalent flag of Intel compilers is /QIA64_fr32.