Bochs源码分析 - 27:8259中的SMM模式介绍

本文介绍了SMM(特殊掩码模式)在8259中断处理中的作用,通过代码分析展示了在开启SMM模式下如何动态响应中断请求。在Bochs模拟器中,探讨了键盘中断的处理流程,强调了8259A的ISR、IMR和IRR寄存器的重要性,并简要提及了键盘事件的堆栈调用图。文章以8259A中断处理为起点,预告了未来对AIPC的深入学习。

前言

        SMM,全称为 Special Mask Mode,特殊掩码模式。在一般情况下(普通的Mask Mode),IRQ的中断请求得到响应执行,ISR相应位置位,在中断服务发起EOI命令前,ISR的位不会清位,8259会抑制优先级低的IRQ。

        然而,在开启ESMM模式中,其允许在中断服务例程里动态依据IMR及IRR来响应中断请求,而不需要例会ISR。

代码分析

        在《x86/x64体系探索及编程》的ex17-2中实现了这个,简单分析一下代码吧。

        首先,在do_timer_handler函数中先开启键盘中断,然后再开启SMM模式,然后再关闭键盘中断,之后一直loop等待着键盘中断触发。

do_timer_handler:
        call enable_keyboard
        call send_smm_command
        call disable_timer
        sti        
        mov esi, t_msg2
        call puts        
wait_for_keyboard:        
        mov ecx, 0xffff
delay:        
        nop
        loop delay
        bt DWORD [keyboard_done], 0
        jnc wait_for_keyboard  

        这时候屏幕内容如下,可以看到其正在处理IRQ0中断,并且等待键盘中断。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值