浮点服务
内核允许线程在支持这些寄存器的板载配置上使用浮点寄存器。
注意:
浮点服务目前仅适用于基于支持浮点扩展的ARMCortex-MSoC、Intelx86体系结构、SPARC体系结构和支持浮点扩展的ARCv2SoC的电路板。所提供的服务是特定于体系结构的。
内核不支持通过isr使用浮点寄存器。
概念
内核可以配置为仅提供应用程序所需的浮点服务。支持三种操作模式,如下所述。此外,还可以根据需要包括或省略内核对SSE寄存器的支持。
无FP寄存器模式
当应用程序没有使用浮点寄存器的线程时,将使用此模式。它是内核的默认浮点服务模式。
如果一个线程使用任何浮点寄存器,内核就会生成一个致命的错误条件并中止该线程。
非共享FP寄存器模式
当应用程序只有一个使用浮点寄存器的线程时,将使用此模式。
在x86平台上,内核初始化浮点寄存器,以便它们可以被任何线程使用(在ARMCortex-M平台和ARCv2平台上跳过的初始化)。每当发生上下文切换时,浮点寄存器将保持不变。
注意:
如果两个或多个线程尝试使用浮点寄存器,则该行为未定义,因为内核不尝试检测(或阻止)多个线程使用这些寄存器。
共享FP寄存器模式
当应用程序有两个或多个使用浮点寄存器的线程时,将使用此模式。根据底层CPU架构,内核支持以下一个或多个线程子类:
- 非用户:不能使用任何浮点寄存器的线程
- FPU用户:一个可以使用标准浮点寄存器的线程
- SSE用户