用户名:
密 码: 记住
您当前的位置:首页 > 站长百科 > 服务器技术

Linux内核完全剖析---math_emulate.c程序

时间:2015-01-23  来源:西部数据  作者:西部数据

math_emulate.c程序中的所有函数可分为3部分:第一类是设备不存在异常处理程序接口函数math_emulate(),只有这一个函数;第二类是浮点指令仿真处理主函数do_emu(),也只有一个函数;另外所有函数都是仿真运算辅助类函数,包括其余几个C语言程序中的函数。

在一台不包含80387协处理器芯片的PC中,如果内核初始化时在CR0中设置了仿真标志EM = 1,那么当CPU遇到一条浮点指令时就会引起CPU产生异常中断int 7,并且在该中断处理过程中调用本程序中第476行处的math_emulate(long ___false)函数。

在math_emulate()函数中,若判断出当前进程还没有使用过仿真的协处理运算时就会对仿真的80387控制字、状态字和特征字(Tag Word)进行初始化操作,设置控制字中所有6种协处理器异常屏蔽位并复位状态字和特征字,然后调用仿真处理主函数do_emu(),使用的参数是作为如下info结构的中断处理过程中调用math_emulate()函数的返回地址指针,info结构实际上就是栈中自从CPU产生中断int7后逐渐入栈的一些数据构成的一个结构,因此它与系统调用时内核栈中数据的分布情况基本相同,参见include/linux/math_emu.h文件第 11 行和kernel/sys_call.s开始部分。

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门