@@ -13,6 +13,7 @@ use x86_64::structures::idt::InterruptDescriptorTable;
1313pub use x86_64:: structures:: idt:: InterruptStackFrame as ExceptionStackFrame ;
1414
1515use crate :: arch:: x86_64:: kernel:: core_local:: { core_scheduler, increment_irq_counter} ;
16+ use crate :: arch:: x86_64:: kernel:: pic:: PIC1_OFFSET ;
1617use crate :: arch:: x86_64:: kernel:: { apic, processor} ;
1718use crate :: arch:: x86_64:: mm:: paging:: { BasePageSize , PageSize , page_fault_handler} ;
1819use crate :: arch:: x86_64:: swapgs;
@@ -91,11 +92,12 @@ pub(crate) fn enable_and_wait() {
9192pub ( crate ) fn install ( ) {
9293 let mut idt = IDT . lock ( ) ;
9394
94- set_general_handler ! ( & mut * idt, abort, 0 ..32 ) ;
95- set_general_handler ! ( & mut * idt, handle_interrupt, 32 ..) ;
95+ set_general_handler ! ( & mut * idt, abort, 0 ..PIC1_OFFSET ) ;
96+ set_general_handler ! ( & mut * idt, handle_interrupt, PIC1_OFFSET ..PIC1_OFFSET + 16 ) ;
97+ set_general_handler ! ( & mut * idt, abort, PIC1_OFFSET ..) ;
9698
9799 unsafe {
98- for i in 32 ..= 255 {
100+ for i in PIC1_OFFSET .. PIC1_OFFSET + 16 {
99101 let addr = idt[ i] . handler_addr ( ) ;
100102 idt[ i] . set_handler_addr ( addr) . set_stack_index ( 0 ) ;
101103 }
@@ -175,7 +177,7 @@ fn handle_interrupt(stack_frame: ExceptionStackFrame, index: u8, _error_code: Op
175177 use crate :: scheduler:: PerCoreSchedulerExt ;
176178
177179 if let Some ( handlers) = IRQ_HANDLERS . get ( )
178- && let Some ( map) = handlers. get ( & ( index - 32 ) )
180+ && let Some ( map) = handlers. get ( & ( index - PIC1_OFFSET ) )
179181 {
180182 for handler in map. iter ( ) {
181183 handler ( ) ;
@@ -336,7 +338,7 @@ extern "x86-interrupt" fn virtualization_exception(stack_frame: ExceptionStackFr
336338
337339pub ( crate ) fn add_irq_name ( irq_number : u8 , name : & ' static str ) {
338340 debug ! ( "Register name \" {name}\" for interrupt {irq_number}" ) ;
339- IRQ_NAMES . lock ( ) . insert ( 32 + irq_number, name) ;
341+ IRQ_NAMES . lock ( ) . insert ( PIC1_OFFSET + irq_number, name) ;
340342}
341343
342344fn get_irq_name ( irq_number : u8 ) -> Option < & ' static str > {
0 commit comments