Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 如何禁用浮点单元(FPU)?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_616_2@

概述

我想在x86系统中禁用FPU / MMX / SSE指令,我将为Device-Not-Available异常实现一个处理程序.我提到了 Control register wiki page;看来我必须在cr0寄存器中设置一些标志.如何在cr0中设置这些标志并在启动时执行此操作? 用于管理FPU状态的Linux内核代码可以在 arch/x86/kernel/traps.c,do_device_not
@H_616_2@
@H_616_2@ @H_616_2@
@H_616_2@
我想在x86系统中禁用FPU / MMX / SSE指令,我将为Device-Not-Available异常实现一个处理程序.我提到了 Control register wiki page;看来我必须在cr0寄存器中设置一些标志.如何在cr0中设置这些标志并在启动时执行此操作? @H_616_2@

解决方法

用于管理FPU状态的Linux内核代码可以在 arch/x86/kernel/traps.c,do_device_not_available()中找到.认情况下,Linux内核会禁用所有进程的FPU,并在首次访问时启用它.这允许内核减少不使用FPU的进程的上下文切换开销.但是,这也意味着在启动时设置TS一次是不够的;您必须更改管理TS标志的Linux内核代码以维持此状态.

通过为禁用标志添加早期检查do_device_not_available()并发出信号或采取其他操作,您可以禁用对FPU的访问.请注意,如果您在该过程首次在该特定cpu上使用FPU后执行此操作,则FPU可能会保持一段时间可用,直到FPU寄存器被上下文切换出来,并且FPU被重新禁用.如果您希望避免这种情况,则必须使用stts()显式重新禁用FPU.

请注意,由于Linux ABI假设您有FPU(模拟FPU或硬件FPU – 如果您既没有内核也无法启动),这可能会导致应用程序出现意外行为.此外,任何使用FPU的内部内核代码(不确定是否有)都可能会破坏.实施此风险需要您自担风险.

@H_616_2@ @H_616_2@
@H_616_2@
@H_616_2@@H_616_2@

大佬总结

以上是大佬教程为你收集整理的linux – 如何禁用浮点单元(FPU)?全部内容,希望文章能够帮你解决linux – 如何禁用浮点单元(FPU)?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。