初始化陷阱门和系统门trap initO函数用于设置中断描述符表开头的19个陷阱门和系统门·这些中断向量都是CPU保留用于异常处r理的,例:set _trap_gate(O,÷_error);set_trap_gate(1,&debug);set trap_ gate(19,&simd coprocessor error);set system_gate(SYSCALL_VECTOR,&system_call);<>
• trap_init()函数用于设置中断描述符表 开头的19个陷阱门和系统门 • 这些中断向量都是CPU保留用于异常处 理的 ,例: • set_trap_gate(0,÷_error); set_trap_gate(1,&debug); set_trap_gate(19,&simd_coprocessor_error); set_system_gate(SYSCALL_VECTOR,&system _call); < > 初始化陷阱门和系统门
中断门的设置for(i=O;KNRIRQS;it+)int Vector=FIRST EXTERNAL VECTOR +i;if (vector!-SYSCALL VECTOR)set_intr_gate(vector, interruptil);}·中断门的设置是由init IRQ()函数中的一段代码完成的:设置时必须跳过用于系统调用的向量0x80·中断处理程序的入口地址是一个数组interruptl,数组中的每个元素是指向中断处理函数的指针
• 中断门的设置是由init_IRQ( )函数中的一段 代码完成的 : • 设置时必须跳过用于系统调用的向量0x80 • 中断处理程序的入口地址是一个数组 interrupt[],数组中的每个元素是指向中断处 理函数的指针。 < > 中断门的设置 for (i = 0; i< NR_IRQS; i++) { int vector = FIRST_EXTERNAL_VECTOR + i; if (vector != SYSCALL_VECTOR) set_intr_gate(vector, interrupt[i]); }
中断处理中断和异常的硬件处理:一从硬件的角度看CPU如何处理中断和异常中断请求队列的建立:r一方便外设共享中断线·中断处理程序的执行·从中断返回:-调用恢复中断现场的宏RESTOREALL,彻底从中断返回
• 中断和异常的硬件处理 : – 从硬件的角度看CPU如何处理中断和异常 • 中断请求队列的建立: – 方便外设共享中断线 • 中断处理程序的执行 • 从中断返回: – 调用恢复中断现场的宏RESTORE_ALL, 彻底从中断返回 < > 中断处理