- /*
- By Marcus Xing
- kernel/init_8259a.c
- 初始化8259A的函数
- */
- #include "type.h"
- #include "const.h"
- #include "ipc.h"
- #include "console.h"
- #include "tty.h"
- #include "protect.h"
- #include "proc.h"
- #include "proto.h"
- #include "global.h"
- void Init_8259A()
- {
- /* 8259A 主片和从片,ICW1 */
- Out_Byte(INT_MASTER_CTL,0x11);
- Out_Byte(INT_SLAVE_CTL,0x11);
- /* 8259A 主片和从片,ICW2 */
- Out_Byte(INT_MASTER_CTLMSK,INT_VECTOR_IRQ0);
- Out_Byte(INT_SLAVE_CTLMSK,INT_VECTOR_IRQ8);
- /* 8259A 主片和从片,ICW3 */
- Out_Byte(INT_MASTER_CTLMSK,4);
- Out_Byte(INT_SLAVE_CTLMSK,2);
- /* 8259A 主片和从片,ICW4 */
- Out_Byte(INT_MASTER_CTLMSK,1);
- Out_Byte(INT_SLAVE_CTLMSK,1);
- /* 8259A 主片和从片,OCW1,起屏蔽外中断作用 */
- Out_Byte(INT_MASTER_CTLMSK,0xff);
- Out_Byte(INT_SLAVE_CTLMSK,0xff);
- /* 初始化外中断函数表 */
- /* 全部先初始化为没特点的处理函数 */
- int i;
- for(i = 0;i < IRQ_NUM;i++)
- {
- IRQ_Handler_Table[i] = Hard_Int_Handler;
- }
- }