1个不稳定版本
0.1.0 | 2023年2月21日 |
---|
#55 in #interrupt
14KB
229 行
仅适用于x86架构的8259和8259A中断控制器抽象,归功于Eric Kidd [email protected] 和 Phil Opperman
lib.rs
:
支持8259可编程中断控制器,用于处理基本的I/O中断。在多核模式下,我们需要将其替换为APIC接口。
基本思路是我们有两个PIC芯片,PIC1和PIC2,PIC2被连接到PIC1的中断2上。你可以在这里找到整个故事:http://wiki.osdev.org/PIC(通常如此)。基本上,我们的极其复杂的现代芯片组在进行20世纪80年代的cosplay,我们的目标是完成所需的最低限度的工作以获得合理的中断。
我们需要做的最重要的事情是设置我们两个PIC的基"偏移量",因为默认情况下,PIC1的偏移量为0x8,这意味着PIC1的I/O中断将与处理器的中断(如"一般保护故障")重叠。由于处理器保留了0x00至0x1F的中断,我们将PIC1的中断移到0x20-0x27,PIC2的中断移到0x28-0x2F。如果我们想编写DOS仿真器,我们可能需要选择不同的基本中断,因为DOS使用中断0x21进行系统调用。