SMI HANDLER EXECUTION ENVIROMENT

        一个SMI handler 可以重新配置 它的执行环境到其他可支持的操作模式.

Initial SMM Execution Enviroment

      在保存CPU当前的状态后,CPU初始化它的core register 用Table 34-4中的值。一旦 进入SMM,在CR0中的PE和PG标志位被清零,这样使得CPU处于一种类似于实模式的环境。SMM执行环境和实模式执行环境的不同之处如下:

     .  可寻址的地址空间范围是0到FFFFFFFFH(4GByte)。

     .  实模式下的正常段限是64-KByte,SMM下增加到4 GByte。

     .  默认的操作数和地址大小被设置成16 bits,这限制了可寻址 的SMRAM地址空间到到1MByte实模式的限定,用来给原生的  real-address-mode code. 然而,操作数大小和地址大小override 前缀能够被用来寻址1-MByte以外的地址空间。

    .  如果一个32-bit的 operand-size override prefix 被使用,近跳转和调用能够被用到4-GByte地址空间的任意地方。由于      base-address 格式的实模式,一个远的调用或跳转不能够传送控制到带有最多20bit(1MBte)的基地址的segment。然 而,既然segment limit 在SMM中是4GByte,offsets into A segment 将会在 1-MByte的限制外,这被允许当使用32-bit  操作数override prefixes. 一个没有32-bit operand-size override prefixes的编程控制传输将会截取EIP的低16bit值。

    .  数据和堆栈能够放在4GByte地址空间的任何地方,但是仅能以32-bit address-size override 的方式被访问如果它们处于 1MByte以上的地址空间。当w ith the code segment 时,代码段和数据段的基址不能大于20bits。


      段寄存器CS被自动地设置成30000H(由SMBASE左移4bits得到)。EIP寄存器被设置为8000H。当EIP+CS左移4bits的值时,

这个值形成的线性地址指向SMI handler的第一条指令。其它的短寄存器(DS,SS,ES,FS,GS)被清为零,并且它们的segment limit 被设置为4GBytes。在这种情况下,SMRAM地址空间可以被看成一单一平滑的4-GBytes的线性地址空间。如果一个段寄存器装载为一16-bits的值,这个值被左移4位被装载到segment base(hidden part of the segment register).the  limits and attributes 没被修改。

      可屏蔽硬件中断,异常,NMI中断,SMI中断,A20M中断,单步中断,断点,以及INIT操作都被禁止当处理器进入SMM。可屏蔽硬件中断,异常处理,单步中断,以及断点中断can be enabled in SMM如果SMM执行环境提供了中断向量表的初始化和

和必要的中断和异常handlers。

SMI Handler Operating Mode Switching

      在SMM中,一个SMI handler 可以改变处理器的操作模式(例如,enable PAE paging,进入64-BITmode,等等)在它作了适当的准备和初始化后。例如,切换到32-bit的保护模式,SMI handler 应当遵循“processor Managment and Initialization”中的指导。如果SMI handler 不希望改变操作模式,它负责在每一个SMI后执行适当的mode-transition code 。

       建议SMI handler 利用所有可行的方法来保护它重要的代码和数据的完整性。尤其,它应当使用SMRR(system management range register)接口如果可用。SMRR接口仅能够保护物理地址空间起始的4GByte。

      SMI handler 应该考虑这种事实:如果它使用操作模式,这种操作模式允许寻址到4-GByte limit 外。

RSM指令的执行回存Pre-SMI 处理器状态(保存在SMRAM state-save map)到处理器进入SMM时它被保存的地方。(在SMRAM state -save map 的SMBASE区域不决定执行RSM后的状态,而是决定下次进入SMM的初始化环境)任何对操作模式改变的要求被RSM指令执行;SMI handler 明确的改变mode 优先于执行RSM没有必要。









  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值