aboutsummaryrefslogtreecommitdiff
path: root/bunny/src/interrupt.rs
diff options
context:
space:
mode:
Diffstat (limited to 'bunny/src/interrupt.rs')
-rw-r--r--bunny/src/interrupt.rs1213
1 files changed, 1213 insertions, 0 deletions
diff --git a/bunny/src/interrupt.rs b/bunny/src/interrupt.rs
new file mode 100644
index 0000000..4ac8192
--- /dev/null
+++ b/bunny/src/interrupt.rs
@@ -0,0 +1,1213 @@
+use core::mem::size_of;
+
+use x86_64::structures::idt::{InterruptDescriptorTable, ExceptionStackFrame, PageFaultErrorCode};
+
+pub use x86_64::instructions::interrupts::{are_enabled, disable, enable, without_interrupts};
+
+pub const IRQ_APIC_LVT_ERROR: u8 = 0x20;
+
+static mut IDT: InterruptDescriptorTable = InterruptDescriptorTable::new();
+
+extern "x86-interrupt" fn handle_divzero(exc: &mut ExceptionStackFrame) {
+ println!("DIVISION BY ZERO: {:x?}", exc);
+ loop {}
+}
+
+extern "x86-interrupt" fn handle_seg_not_present(exc: &mut ExceptionStackFrame, code: u64) {
+ println!("SEGMENT NOT PRESENT 0x{:x}: {:x?}", code, exc);
+}
+
+extern "x86-interrupt" fn handle_ss_fault(exc: &mut ExceptionStackFrame, code: u64) {
+ println!("STACK SEGMENT FAULT 0x{:x}: {:x?}", code, exc);
+ loop {}
+}
+
+extern "x86-interrupt" fn handle_gp(exc: &mut ExceptionStackFrame, code: u64) {
+ println!("GENERAL PROTECTION FAULT 0x{:x}: {:x?}", code, exc);
+ loop {}
+}
+
+extern "x86-interrupt" fn handle_iopc(exc: &mut ExceptionStackFrame) {
+ println!("INVALID OPCODE @ 0x{:x}: {:x?}", exc.instruction_pointer.as_u64(), exc);
+ loop {}
+}
+
+extern "x86-interrupt" fn handle_pagefault(exc: &mut ExceptionStackFrame, code: PageFaultErrorCode) {
+ println!("PAGE FAULT {:?}: {:x?}", code, exc);
+ loop {}
+}
+
+extern "x86-interrupt" fn handle_inval_tss(exc: &mut ExceptionStackFrame, code: u64) {
+ println!("INVALID TSS 0x{:x}: {:x?}", code, exc);
+ loop {}
+}
+
+extern "x86-interrupt" fn handle_doublefault(exc: &mut ExceptionStackFrame, code: u64) {
+ println!("DOUBLE FAULT 0x{:x}: {:x?}", code, exc);
+ loop {}
+}
+
+extern "x86-interrupt" fn handle_mce(exc: &mut ExceptionStackFrame) {
+ println!("MACHINE CHECK EXCEPTION: {:x?}", exc);
+ loop {}
+}
+
+extern "x86-interrupt" fn handle_breakpoint(exc: &mut ExceptionStackFrame) {
+ println!("BREAKPOINT AT 0x{:x}: {:x?}", exc.instruction_pointer.as_u64(), exc);
+}
+
+extern "x86-interrupt" fn handle_apic_error(exc: &mut ExceptionStackFrame) {
+ println!("APIC ERROR AT 0x{:x}: {:x?}", exc.instruction_pointer.as_u64(), exc);
+}
+
+fn unhandled_irq(exc: &mut ExceptionStackFrame, num: u8) {
+ println!("UNHANDLED IRQ#{:02x}h: {:x?}", num, exc);
+}
+
+
+extern "x86-interrupt" fn unhandled_irq_20(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x20);
+}
+
+extern "x86-interrupt" fn unhandled_irq_21(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x21);
+}
+
+extern "x86-interrupt" fn unhandled_irq_22(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x22);
+}
+
+extern "x86-interrupt" fn unhandled_irq_23(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x23);
+}
+
+extern "x86-interrupt" fn unhandled_irq_24(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x24);
+}
+
+extern "x86-interrupt" fn unhandled_irq_25(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x25);
+}
+
+extern "x86-interrupt" fn unhandled_irq_26(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x26);
+}
+
+extern "x86-interrupt" fn unhandled_irq_27(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x27);
+}
+
+extern "x86-interrupt" fn unhandled_irq_28(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x28);
+}
+
+extern "x86-interrupt" fn unhandled_irq_29(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x29);
+}
+
+extern "x86-interrupt" fn unhandled_irq_2a(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x2a);
+}
+
+extern "x86-interrupt" fn unhandled_irq_2b(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x2b);
+}
+
+extern "x86-interrupt" fn unhandled_irq_2c(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x2c);
+}
+
+extern "x86-interrupt" fn unhandled_irq_2d(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x2d);
+}
+
+extern "x86-interrupt" fn unhandled_irq_2e(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x2e);
+}
+
+extern "x86-interrupt" fn unhandled_irq_2f(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x2f);
+}
+
+extern "x86-interrupt" fn unhandled_irq_30(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x30);
+}
+
+extern "x86-interrupt" fn unhandled_irq_31(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x31);
+}
+
+extern "x86-interrupt" fn unhandled_irq_32(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x32);
+}
+
+extern "x86-interrupt" fn unhandled_irq_33(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x33);
+}
+
+extern "x86-interrupt" fn unhandled_irq_34(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x34);
+}
+
+extern "x86-interrupt" fn unhandled_irq_35(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x35);
+}
+
+extern "x86-interrupt" fn unhandled_irq_36(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x36);
+}
+
+extern "x86-interrupt" fn unhandled_irq_37(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x37);
+}
+
+extern "x86-interrupt" fn unhandled_irq_38(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x38);
+}
+
+extern "x86-interrupt" fn unhandled_irq_39(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x39);
+}
+
+extern "x86-interrupt" fn unhandled_irq_3a(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x3a);
+}
+
+extern "x86-interrupt" fn unhandled_irq_3b(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x3b);
+}
+
+extern "x86-interrupt" fn unhandled_irq_3c(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x3c);
+}
+
+extern "x86-interrupt" fn unhandled_irq_3d(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x3d);
+}
+
+extern "x86-interrupt" fn unhandled_irq_3e(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x3e);
+}
+
+extern "x86-interrupt" fn unhandled_irq_3f(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x3f);
+}
+
+extern "x86-interrupt" fn unhandled_irq_40(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x40);
+}
+
+extern "x86-interrupt" fn unhandled_irq_41(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x41);
+}
+
+extern "x86-interrupt" fn unhandled_irq_42(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x42);
+}
+
+extern "x86-interrupt" fn unhandled_irq_43(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x43);
+}
+
+extern "x86-interrupt" fn unhandled_irq_44(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x44);
+}
+
+extern "x86-interrupt" fn unhandled_irq_45(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x45);
+}
+
+extern "x86-interrupt" fn unhandled_irq_46(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x46);
+}
+
+extern "x86-interrupt" fn unhandled_irq_47(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x47);
+}
+
+extern "x86-interrupt" fn unhandled_irq_48(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x48);
+}
+
+extern "x86-interrupt" fn unhandled_irq_49(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x49);
+}
+
+extern "x86-interrupt" fn unhandled_irq_4a(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x4a);
+}
+
+extern "x86-interrupt" fn unhandled_irq_4b(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x4b);
+}
+
+extern "x86-interrupt" fn unhandled_irq_4c(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x4c);
+}
+
+extern "x86-interrupt" fn unhandled_irq_4d(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x4d);
+}
+
+extern "x86-interrupt" fn unhandled_irq_4e(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x4e);
+}
+
+extern "x86-interrupt" fn unhandled_irq_4f(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x4f);
+}
+
+extern "x86-interrupt" fn unhandled_irq_50(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x50);
+}
+
+extern "x86-interrupt" fn unhandled_irq_51(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x51);
+}
+
+extern "x86-interrupt" fn unhandled_irq_52(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x52);
+}
+
+extern "x86-interrupt" fn unhandled_irq_53(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x53);
+}
+
+extern "x86-interrupt" fn unhandled_irq_54(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x54);
+}
+
+extern "x86-interrupt" fn unhandled_irq_55(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x55);
+}
+
+extern "x86-interrupt" fn unhandled_irq_56(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x56);
+}
+
+extern "x86-interrupt" fn unhandled_irq_57(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x57);
+}
+
+extern "x86-interrupt" fn unhandled_irq_58(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x58);
+}
+
+extern "x86-interrupt" fn unhandled_irq_59(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x59);
+}
+
+extern "x86-interrupt" fn unhandled_irq_5a(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x5a);
+}
+
+extern "x86-interrupt" fn unhandled_irq_5b(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x5b);
+}
+
+extern "x86-interrupt" fn unhandled_irq_5c(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x5c);
+}
+
+extern "x86-interrupt" fn unhandled_irq_5d(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x5d);
+}
+
+extern "x86-interrupt" fn unhandled_irq_5e(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x5e);
+}
+
+extern "x86-interrupt" fn unhandled_irq_5f(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x5f);
+}
+
+extern "x86-interrupt" fn unhandled_irq_60(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x60);
+}
+
+extern "x86-interrupt" fn unhandled_irq_61(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x61);
+}
+
+extern "x86-interrupt" fn unhandled_irq_62(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x62);
+}
+
+extern "x86-interrupt" fn unhandled_irq_63(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x63);
+}
+
+extern "x86-interrupt" fn unhandled_irq_64(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x64);
+}
+
+extern "x86-interrupt" fn unhandled_irq_65(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x65);
+}
+
+extern "x86-interrupt" fn unhandled_irq_66(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x66);
+}
+
+extern "x86-interrupt" fn unhandled_irq_67(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x67);
+}
+
+extern "x86-interrupt" fn unhandled_irq_68(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x68);
+}
+
+extern "x86-interrupt" fn unhandled_irq_69(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x69);
+}
+
+extern "x86-interrupt" fn unhandled_irq_6a(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x6a);
+}
+
+extern "x86-interrupt" fn unhandled_irq_6b(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x6b);
+}
+
+extern "x86-interrupt" fn unhandled_irq_6c(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x6c);
+}
+
+extern "x86-interrupt" fn unhandled_irq_6d(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x6d);
+}
+
+extern "x86-interrupt" fn unhandled_irq_6e(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x6e);
+}
+
+extern "x86-interrupt" fn unhandled_irq_6f(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x6f);
+}
+
+extern "x86-interrupt" fn unhandled_irq_70(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x70);
+}
+
+extern "x86-interrupt" fn unhandled_irq_71(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x71);
+}
+
+extern "x86-interrupt" fn unhandled_irq_72(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x72);
+}
+
+extern "x86-interrupt" fn unhandled_irq_73(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x73);
+}
+
+extern "x86-interrupt" fn unhandled_irq_74(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x74);
+}
+
+extern "x86-interrupt" fn unhandled_irq_75(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x75);
+}
+
+extern "x86-interrupt" fn unhandled_irq_76(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x76);
+}
+
+extern "x86-interrupt" fn unhandled_irq_77(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x77);
+}
+
+extern "x86-interrupt" fn unhandled_irq_78(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x78);
+}
+
+extern "x86-interrupt" fn unhandled_irq_79(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x79);
+}
+
+extern "x86-interrupt" fn unhandled_irq_7a(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x7a);
+}
+
+extern "x86-interrupt" fn unhandled_irq_7b(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x7b);
+}
+
+extern "x86-interrupt" fn unhandled_irq_7c(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x7c);
+}
+
+extern "x86-interrupt" fn unhandled_irq_7d(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x7d);
+}
+
+extern "x86-interrupt" fn unhandled_irq_7e(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x7e);
+}
+
+extern "x86-interrupt" fn unhandled_irq_7f(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x7f);
+}
+
+extern "x86-interrupt" fn unhandled_irq_80(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x80);
+}
+
+extern "x86-interrupt" fn unhandled_irq_81(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x81);
+}
+
+extern "x86-interrupt" fn unhandled_irq_82(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x82);
+}
+
+extern "x86-interrupt" fn unhandled_irq_83(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x83);
+}
+
+extern "x86-interrupt" fn unhandled_irq_84(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x84);
+}
+
+extern "x86-interrupt" fn unhandled_irq_85(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x85);
+}
+
+extern "x86-interrupt" fn unhandled_irq_86(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x86);
+}
+
+extern "x86-interrupt" fn unhandled_irq_87(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x87);
+}
+
+extern "x86-interrupt" fn unhandled_irq_88(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x88);
+}
+
+extern "x86-interrupt" fn unhandled_irq_89(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x89);
+}
+
+extern "x86-interrupt" fn unhandled_irq_8a(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x8a);
+}
+
+extern "x86-interrupt" fn unhandled_irq_8b(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x8b);
+}
+
+extern "x86-interrupt" fn unhandled_irq_8c(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x8c);
+}
+
+extern "x86-interrupt" fn unhandled_irq_8d(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x8d);
+}
+
+extern "x86-interrupt" fn unhandled_irq_8e(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x8e);
+}
+
+extern "x86-interrupt" fn unhandled_irq_8f(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x8f);
+}
+
+extern "x86-interrupt" fn unhandled_irq_90(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x90);
+}
+
+extern "x86-interrupt" fn unhandled_irq_91(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x91);
+}
+
+extern "x86-interrupt" fn unhandled_irq_92(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x92);
+}
+
+extern "x86-interrupt" fn unhandled_irq_93(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x93);
+}
+
+extern "x86-interrupt" fn unhandled_irq_94(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x94);
+}
+
+extern "x86-interrupt" fn unhandled_irq_95(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x95);
+}
+
+extern "x86-interrupt" fn unhandled_irq_96(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x96);
+}
+
+extern "x86-interrupt" fn unhandled_irq_97(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x97);
+}
+
+extern "x86-interrupt" fn unhandled_irq_98(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x98);
+}
+
+extern "x86-interrupt" fn unhandled_irq_99(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x99);
+}
+
+extern "x86-interrupt" fn unhandled_irq_9a(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x9a);
+}
+
+extern "x86-interrupt" fn unhandled_irq_9b(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x9b);
+}
+
+extern "x86-interrupt" fn unhandled_irq_9c(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x9c);
+}
+
+extern "x86-interrupt" fn unhandled_irq_9d(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x9d);
+}
+
+extern "x86-interrupt" fn unhandled_irq_9e(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x9e);
+}
+
+extern "x86-interrupt" fn unhandled_irq_9f(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0x9f);
+}
+
+extern "x86-interrupt" fn unhandled_irq_a0(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xa0);
+}
+
+extern "x86-interrupt" fn unhandled_irq_a1(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xa1);
+}
+
+extern "x86-interrupt" fn unhandled_irq_a2(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xa2);
+}
+
+extern "x86-interrupt" fn unhandled_irq_a3(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xa3);
+}
+
+extern "x86-interrupt" fn unhandled_irq_a4(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xa4);
+}
+
+extern "x86-interrupt" fn unhandled_irq_a5(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xa5);
+}
+
+extern "x86-interrupt" fn unhandled_irq_a6(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xa6);
+}
+
+extern "x86-interrupt" fn unhandled_irq_a7(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xa7);
+}
+
+extern "x86-interrupt" fn unhandled_irq_a8(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xa8);
+}
+
+extern "x86-interrupt" fn unhandled_irq_a9(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xa9);
+}
+
+extern "x86-interrupt" fn unhandled_irq_aa(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xaa);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ab(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xab);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ac(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xac);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ad(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xad);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ae(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xae);
+}
+
+extern "x86-interrupt" fn unhandled_irq_af(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xaf);
+}
+
+extern "x86-interrupt" fn unhandled_irq_b0(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xb0);
+}
+
+extern "x86-interrupt" fn unhandled_irq_b1(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xb1);
+}
+
+extern "x86-interrupt" fn unhandled_irq_b2(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xb2);
+}
+
+extern "x86-interrupt" fn unhandled_irq_b3(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xb3);
+}
+
+extern "x86-interrupt" fn unhandled_irq_b4(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xb4);
+}
+
+extern "x86-interrupt" fn unhandled_irq_b5(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xb5);
+}
+
+extern "x86-interrupt" fn unhandled_irq_b6(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xb6);
+}
+
+extern "x86-interrupt" fn unhandled_irq_b7(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xb7);
+}
+
+extern "x86-interrupt" fn unhandled_irq_b8(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xb8);
+}
+
+extern "x86-interrupt" fn unhandled_irq_b9(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xb9);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ba(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xba);
+}
+
+extern "x86-interrupt" fn unhandled_irq_bb(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xbb);
+}
+
+extern "x86-interrupt" fn unhandled_irq_bc(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xbc);
+}
+
+extern "x86-interrupt" fn unhandled_irq_bd(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xbd);
+}
+
+extern "x86-interrupt" fn unhandled_irq_be(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xbe);
+}
+
+extern "x86-interrupt" fn unhandled_irq_bf(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xbf);
+}
+
+extern "x86-interrupt" fn unhandled_irq_c0(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xc0);
+}
+
+extern "x86-interrupt" fn unhandled_irq_c1(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xc1);
+}
+
+extern "x86-interrupt" fn unhandled_irq_c2(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xc2);
+}
+
+extern "x86-interrupt" fn unhandled_irq_c3(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xc3);
+}
+
+extern "x86-interrupt" fn unhandled_irq_c4(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xc4);
+}
+
+extern "x86-interrupt" fn unhandled_irq_c5(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xc5);
+}
+
+extern "x86-interrupt" fn unhandled_irq_c6(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xc6);
+}
+
+extern "x86-interrupt" fn unhandled_irq_c7(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xc7);
+}
+
+extern "x86-interrupt" fn unhandled_irq_c8(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xc8);
+}
+
+extern "x86-interrupt" fn unhandled_irq_c9(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xc9);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ca(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xca);
+}
+
+extern "x86-interrupt" fn unhandled_irq_cb(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xcb);
+}
+
+extern "x86-interrupt" fn unhandled_irq_cc(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xcc);
+}
+
+extern "x86-interrupt" fn unhandled_irq_cd(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xcd);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ce(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xce);
+}
+
+extern "x86-interrupt" fn unhandled_irq_cf(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xcf);
+}
+
+extern "x86-interrupt" fn unhandled_irq_d0(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xd0);
+}
+
+extern "x86-interrupt" fn unhandled_irq_d1(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xd1);
+}
+
+extern "x86-interrupt" fn unhandled_irq_d2(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xd2);
+}
+
+extern "x86-interrupt" fn unhandled_irq_d3(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xd3);
+}
+
+extern "x86-interrupt" fn unhandled_irq_d4(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xd4);
+}
+
+extern "x86-interrupt" fn unhandled_irq_d5(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xd5);
+}
+
+extern "x86-interrupt" fn unhandled_irq_d6(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xd6);
+}
+
+extern "x86-interrupt" fn unhandled_irq_d7(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xd7);
+}
+
+extern "x86-interrupt" fn unhandled_irq_d8(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xd8);
+}
+
+extern "x86-interrupt" fn unhandled_irq_d9(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xd9);
+}
+
+extern "x86-interrupt" fn unhandled_irq_da(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xda);
+}
+
+extern "x86-interrupt" fn unhandled_irq_db(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xdb);
+}
+
+extern "x86-interrupt" fn unhandled_irq_dc(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xdc);
+}
+
+extern "x86-interrupt" fn unhandled_irq_dd(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xdd);
+}
+
+extern "x86-interrupt" fn unhandled_irq_de(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xde);
+}
+
+extern "x86-interrupt" fn unhandled_irq_df(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xdf);
+}
+
+extern "x86-interrupt" fn unhandled_irq_e0(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xe0);
+}
+
+extern "x86-interrupt" fn unhandled_irq_e1(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xe1);
+}
+
+extern "x86-interrupt" fn unhandled_irq_e2(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xe2);
+}
+
+extern "x86-interrupt" fn unhandled_irq_e3(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xe3);
+}
+
+extern "x86-interrupt" fn unhandled_irq_e4(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xe4);
+}
+
+extern "x86-interrupt" fn unhandled_irq_e5(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xe5);
+}
+
+extern "x86-interrupt" fn unhandled_irq_e6(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xe6);
+}
+
+extern "x86-interrupt" fn unhandled_irq_e7(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xe7);
+}
+
+extern "x86-interrupt" fn unhandled_irq_e8(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xe8);
+}
+
+extern "x86-interrupt" fn unhandled_irq_e9(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xe9);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ea(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xea);
+}
+
+extern "x86-interrupt" fn unhandled_irq_eb(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xeb);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ec(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xec);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ed(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xed);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ee(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xee);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ef(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xef);
+}
+
+extern "x86-interrupt" fn unhandled_irq_f0(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xf0);
+}
+
+extern "x86-interrupt" fn unhandled_irq_f1(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xf1);
+}
+
+extern "x86-interrupt" fn unhandled_irq_f2(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xf2);
+}
+
+extern "x86-interrupt" fn unhandled_irq_f3(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xf3);
+}
+
+extern "x86-interrupt" fn unhandled_irq_f4(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xf4);
+}
+
+extern "x86-interrupt" fn unhandled_irq_f5(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xf5);
+}
+
+extern "x86-interrupt" fn unhandled_irq_f6(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xf6);
+}
+
+extern "x86-interrupt" fn unhandled_irq_f7(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xf7);
+}
+
+extern "x86-interrupt" fn unhandled_irq_f8(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xf8);
+}
+
+extern "x86-interrupt" fn unhandled_irq_f9(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xf9);
+}
+
+extern "x86-interrupt" fn unhandled_irq_fa(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xfa);
+}
+
+extern "x86-interrupt" fn unhandled_irq_fb(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xfb);
+}
+
+extern "x86-interrupt" fn unhandled_irq_fc(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xfc);
+}
+
+extern "x86-interrupt" fn unhandled_irq_fd(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xfd);
+}
+
+extern "x86-interrupt" fn unhandled_irq_fe(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xfe);
+}
+
+extern "x86-interrupt" fn unhandled_irq_ff(exc: &mut ExceptionStackFrame) {
+ unhandled_irq(exc, 0xff);
+}
+
+
+pub fn descriptor() -> (u16, u64) {
+ ((size_of::<InterruptDescriptorTable>() - 1) as u16,
+ unsafe { &IDT } as *const _ as u64)
+
+}
+
+pub fn register_handlers() {
+ unsafe {
+ IDT[0x20].set_handler_fn(unhandled_irq_20);
+ IDT[0x21].set_handler_fn(unhandled_irq_21);
+ IDT[0x22].set_handler_fn(unhandled_irq_22);
+ IDT[0x23].set_handler_fn(unhandled_irq_23);
+ IDT[0x24].set_handler_fn(unhandled_irq_24);
+ IDT[0x25].set_handler_fn(unhandled_irq_25);
+ IDT[0x26].set_handler_fn(unhandled_irq_26);
+ IDT[0x27].set_handler_fn(unhandled_irq_27);
+ IDT[0x28].set_handler_fn(unhandled_irq_28);
+ IDT[0x29].set_handler_fn(unhandled_irq_29);
+ IDT[0x2a].set_handler_fn(unhandled_irq_2a);
+ IDT[0x2b].set_handler_fn(unhandled_irq_2b);
+ IDT[0x2c].set_handler_fn(unhandled_irq_2c);
+ IDT[0x2d].set_handler_fn(unhandled_irq_2d);
+ IDT[0x2e].set_handler_fn(unhandled_irq_2e);
+ IDT[0x2f].set_handler_fn(unhandled_irq_2f);
+ IDT[0x30].set_handler_fn(unhandled_irq_30);
+ IDT[0x31].set_handler_fn(unhandled_irq_31);
+ IDT[0x32].set_handler_fn(unhandled_irq_32);
+ IDT[0x33].set_handler_fn(unhandled_irq_33);
+ IDT[0x34].set_handler_fn(unhandled_irq_34);
+ IDT[0x35].set_handler_fn(unhandled_irq_35);
+ IDT[0x36].set_handler_fn(unhandled_irq_36);
+ IDT[0x37].set_handler_fn(unhandled_irq_37);
+ IDT[0x38].set_handler_fn(unhandled_irq_38);
+ IDT[0x39].set_handler_fn(unhandled_irq_39);
+ IDT[0x3a].set_handler_fn(unhandled_irq_3a);
+ IDT[0x3b].set_handler_fn(unhandled_irq_3b);
+ IDT[0x3c].set_handler_fn(unhandled_irq_3c);
+ IDT[0x3d].set_handler_fn(unhandled_irq_3d);
+ IDT[0x3e].set_handler_fn(unhandled_irq_3e);
+ IDT[0x3f].set_handler_fn(unhandled_irq_3f);
+ IDT[0x40].set_handler_fn(unhandled_irq_40);
+ IDT[0x41].set_handler_fn(unhandled_irq_41);
+ IDT[0x42].set_handler_fn(unhandled_irq_42);
+ IDT[0x43].set_handler_fn(unhandled_irq_43);
+ IDT[0x44].set_handler_fn(unhandled_irq_44);
+ IDT[0x45].set_handler_fn(unhandled_irq_45);
+ IDT[0x46].set_handler_fn(unhandled_irq_46);
+ IDT[0x47].set_handler_fn(unhandled_irq_47);
+ IDT[0x48].set_handler_fn(unhandled_irq_48);
+ IDT[0x49].set_handler_fn(unhandled_irq_49);
+ IDT[0x4a].set_handler_fn(unhandled_irq_4a);
+ IDT[0x4b].set_handler_fn(unhandled_irq_4b);
+ IDT[0x4c].set_handler_fn(unhandled_irq_4c);
+ IDT[0x4d].set_handler_fn(unhandled_irq_4d);
+ IDT[0x4e].set_handler_fn(unhandled_irq_4e);
+ IDT[0x4f].set_handler_fn(unhandled_irq_4f);
+ IDT[0x50].set_handler_fn(unhandled_irq_50);
+ IDT[0x51].set_handler_fn(unhandled_irq_51);
+ IDT[0x52].set_handler_fn(unhandled_irq_52);
+ IDT[0x53].set_handler_fn(unhandled_irq_53);
+ IDT[0x54].set_handler_fn(unhandled_irq_54);
+ IDT[0x55].set_handler_fn(unhandled_irq_55);
+ IDT[0x56].set_handler_fn(unhandled_irq_56);
+ IDT[0x57].set_handler_fn(unhandled_irq_57);
+ IDT[0x58].set_handler_fn(unhandled_irq_58);
+ IDT[0x59].set_handler_fn(unhandled_irq_59);
+ IDT[0x5a].set_handler_fn(unhandled_irq_5a);
+ IDT[0x5b].set_handler_fn(unhandled_irq_5b);
+ IDT[0x5c].set_handler_fn(unhandled_irq_5c);
+ IDT[0x5d].set_handler_fn(unhandled_irq_5d);
+ IDT[0x5e].set_handler_fn(unhandled_irq_5e);
+ IDT[0x5f].set_handler_fn(unhandled_irq_5f);
+ IDT[0x60].set_handler_fn(unhandled_irq_60);
+ IDT[0x61].set_handler_fn(unhandled_irq_61);
+ IDT[0x62].set_handler_fn(unhandled_irq_62);
+ IDT[0x63].set_handler_fn(unhandled_irq_63);
+ IDT[0x64].set_handler_fn(unhandled_irq_64);
+ IDT[0x65].set_handler_fn(unhandled_irq_65);
+ IDT[0x66].set_handler_fn(unhandled_irq_66);
+ IDT[0x67].set_handler_fn(unhandled_irq_67);
+ IDT[0x68].set_handler_fn(unhandled_irq_68);
+ IDT[0x69].set_handler_fn(unhandled_irq_69);
+ IDT[0x6a].set_handler_fn(unhandled_irq_6a);
+ IDT[0x6b].set_handler_fn(unhandled_irq_6b);
+ IDT[0x6c].set_handler_fn(unhandled_irq_6c);
+ IDT[0x6d].set_handler_fn(unhandled_irq_6d);
+ IDT[0x6e].set_handler_fn(unhandled_irq_6e);
+ IDT[0x6f].set_handler_fn(unhandled_irq_6f);
+ IDT[0x70].set_handler_fn(unhandled_irq_70);
+ IDT[0x71].set_handler_fn(unhandled_irq_71);
+ IDT[0x72].set_handler_fn(unhandled_irq_72);
+ IDT[0x73].set_handler_fn(unhandled_irq_73);
+ IDT[0x74].set_handler_fn(unhandled_irq_74);
+ IDT[0x75].set_handler_fn(unhandled_irq_75);
+ IDT[0x76].set_handler_fn(unhandled_irq_76);
+ IDT[0x77].set_handler_fn(unhandled_irq_77);
+ IDT[0x78].set_handler_fn(unhandled_irq_78);
+ IDT[0x79].set_handler_fn(unhandled_irq_79);
+ IDT[0x7a].set_handler_fn(unhandled_irq_7a);
+ IDT[0x7b].set_handler_fn(unhandled_irq_7b);
+ IDT[0x7c].set_handler_fn(unhandled_irq_7c);
+ IDT[0x7d].set_handler_fn(unhandled_irq_7d);
+ IDT[0x7e].set_handler_fn(unhandled_irq_7e);
+ IDT[0x7f].set_handler_fn(unhandled_irq_7f);
+ IDT[0x80].set_handler_fn(unhandled_irq_80);
+ IDT[0x81].set_handler_fn(unhandled_irq_81);
+ IDT[0x82].set_handler_fn(unhandled_irq_82);
+ IDT[0x83].set_handler_fn(unhandled_irq_83);
+ IDT[0x84].set_handler_fn(unhandled_irq_84);
+ IDT[0x85].set_handler_fn(unhandled_irq_85);
+ IDT[0x86].set_handler_fn(unhandled_irq_86);
+ IDT[0x87].set_handler_fn(unhandled_irq_87);
+ IDT[0x88].set_handler_fn(unhandled_irq_88);
+ IDT[0x89].set_handler_fn(unhandled_irq_89);
+ IDT[0x8a].set_handler_fn(unhandled_irq_8a);
+ IDT[0x8b].set_handler_fn(unhandled_irq_8b);
+ IDT[0x8c].set_handler_fn(unhandled_irq_8c);
+ IDT[0x8d].set_handler_fn(unhandled_irq_8d);
+ IDT[0x8e].set_handler_fn(unhandled_irq_8e);
+ IDT[0x8f].set_handler_fn(unhandled_irq_8f);
+ IDT[0x90].set_handler_fn(unhandled_irq_90);
+ IDT[0x91].set_handler_fn(unhandled_irq_91);
+ IDT[0x92].set_handler_fn(unhandled_irq_92);
+ IDT[0x93].set_handler_fn(unhandled_irq_93);
+ IDT[0x94].set_handler_fn(unhandled_irq_94);
+ IDT[0x95].set_handler_fn(unhandled_irq_95);
+ IDT[0x96].set_handler_fn(unhandled_irq_96);
+ IDT[0x97].set_handler_fn(unhandled_irq_97);
+ IDT[0x98].set_handler_fn(unhandled_irq_98);
+ IDT[0x99].set_handler_fn(unhandled_irq_99);
+ IDT[0x9a].set_handler_fn(unhandled_irq_9a);
+ IDT[0x9b].set_handler_fn(unhandled_irq_9b);
+ IDT[0x9c].set_handler_fn(unhandled_irq_9c);
+ IDT[0x9d].set_handler_fn(unhandled_irq_9d);
+ IDT[0x9e].set_handler_fn(unhandled_irq_9e);
+ IDT[0x9f].set_handler_fn(unhandled_irq_9f);
+ IDT[0xa0].set_handler_fn(unhandled_irq_a0);
+ IDT[0xa1].set_handler_fn(unhandled_irq_a1);
+ IDT[0xa2].set_handler_fn(unhandled_irq_a2);
+ IDT[0xa3].set_handler_fn(unhandled_irq_a3);
+ IDT[0xa4].set_handler_fn(unhandled_irq_a4);
+ IDT[0xa5].set_handler_fn(unhandled_irq_a5);
+ IDT[0xa6].set_handler_fn(unhandled_irq_a6);
+ IDT[0xa7].set_handler_fn(unhandled_irq_a7);
+ IDT[0xa8].set_handler_fn(unhandled_irq_a8);
+ IDT[0xa9].set_handler_fn(unhandled_irq_a9);
+ IDT[0xaa].set_handler_fn(unhandled_irq_aa);
+ IDT[0xab].set_handler_fn(unhandled_irq_ab);
+ IDT[0xac].set_handler_fn(unhandled_irq_ac);
+ IDT[0xad].set_handler_fn(unhandled_irq_ad);
+ IDT[0xae].set_handler_fn(unhandled_irq_ae);
+ IDT[0xaf].set_handler_fn(unhandled_irq_af);
+ IDT[0xb0].set_handler_fn(unhandled_irq_b0);
+ IDT[0xb1].set_handler_fn(unhandled_irq_b1);
+ IDT[0xb2].set_handler_fn(unhandled_irq_b2);
+ IDT[0xb3].set_handler_fn(unhandled_irq_b3);
+ IDT[0xb4].set_handler_fn(unhandled_irq_b4);
+ IDT[0xb5].set_handler_fn(unhandled_irq_b5);
+ IDT[0xb6].set_handler_fn(unhandled_irq_b6);
+ IDT[0xb7].set_handler_fn(unhandled_irq_b7);
+ IDT[0xb8].set_handler_fn(unhandled_irq_b8);
+ IDT[0xb9].set_handler_fn(unhandled_irq_b9);
+ IDT[0xba].set_handler_fn(unhandled_irq_ba);
+ IDT[0xbb].set_handler_fn(unhandled_irq_bb);
+ IDT[0xbc].set_handler_fn(unhandled_irq_bc);
+ IDT[0xbd].set_handler_fn(unhandled_irq_bd);
+ IDT[0xbe].set_handler_fn(unhandled_irq_be);
+ IDT[0xbf].set_handler_fn(unhandled_irq_bf);
+ IDT[0xc0].set_handler_fn(unhandled_irq_c0);
+ IDT[0xc1].set_handler_fn(unhandled_irq_c1);
+ IDT[0xc2].set_handler_fn(unhandled_irq_c2);
+ IDT[0xc3].set_handler_fn(unhandled_irq_c3);
+ IDT[0xc4].set_handler_fn(unhandled_irq_c4);
+ IDT[0xc5].set_handler_fn(unhandled_irq_c5);
+ IDT[0xc6].set_handler_fn(unhandled_irq_c6);
+ IDT[0xc7].set_handler_fn(unhandled_irq_c7);
+ IDT[0xc8].set_handler_fn(unhandled_irq_c8);
+ IDT[0xc9].set_handler_fn(unhandled_irq_c9);
+ IDT[0xca].set_handler_fn(unhandled_irq_ca);
+ IDT[0xcb].set_handler_fn(unhandled_irq_cb);
+ IDT[0xcc].set_handler_fn(unhandled_irq_cc);
+ IDT[0xcd].set_handler_fn(unhandled_irq_cd);
+ IDT[0xce].set_handler_fn(unhandled_irq_ce);
+ IDT[0xcf].set_handler_fn(unhandled_irq_cf);
+ IDT[0xd0].set_handler_fn(unhandled_irq_d0);
+ IDT[0xd1].set_handler_fn(unhandled_irq_d1);
+ IDT[0xd2].set_handler_fn(unhandled_irq_d2);
+ IDT[0xd3].set_handler_fn(unhandled_irq_d3);
+ IDT[0xd4].set_handler_fn(unhandled_irq_d4);
+ IDT[0xd5].set_handler_fn(unhandled_irq_d5);
+ IDT[0xd6].set_handler_fn(unhandled_irq_d6);
+ IDT[0xd7].set_handler_fn(unhandled_irq_d7);
+ IDT[0xd8].set_handler_fn(unhandled_irq_d8);
+ IDT[0xd9].set_handler_fn(unhandled_irq_d9);
+ IDT[0xda].set_handler_fn(unhandled_irq_da);
+ IDT[0xdb].set_handler_fn(unhandled_irq_db);
+ IDT[0xdc].set_handler_fn(unhandled_irq_dc);
+ IDT[0xdd].set_handler_fn(unhandled_irq_dd);
+ IDT[0xde].set_handler_fn(unhandled_irq_de);
+ IDT[0xdf].set_handler_fn(unhandled_irq_df);
+ IDT[0xe0].set_handler_fn(unhandled_irq_e0);
+ IDT[0xe1].set_handler_fn(unhandled_irq_e1);
+ IDT[0xe2].set_handler_fn(unhandled_irq_e2);
+ IDT[0xe3].set_handler_fn(unhandled_irq_e3);
+ IDT[0xe4].set_handler_fn(unhandled_irq_e4);
+ IDT[0xe5].set_handler_fn(unhandled_irq_e5);
+ IDT[0xe6].set_handler_fn(unhandled_irq_e6);
+ IDT[0xe7].set_handler_fn(unhandled_irq_e7);
+ IDT[0xe8].set_handler_fn(unhandled_irq_e8);
+ IDT[0xe9].set_handler_fn(unhandled_irq_e9);
+ IDT[0xea].set_handler_fn(unhandled_irq_ea);
+ IDT[0xeb].set_handler_fn(unhandled_irq_eb);
+ IDT[0xec].set_handler_fn(unhandled_irq_ec);
+ IDT[0xed].set_handler_fn(unhandled_irq_ed);
+ IDT[0xee].set_handler_fn(unhandled_irq_ee);
+ IDT[0xef].set_handler_fn(unhandled_irq_ef);
+ IDT[0xf0].set_handler_fn(unhandled_irq_f0);
+ IDT[0xf1].set_handler_fn(unhandled_irq_f1);
+ IDT[0xf2].set_handler_fn(unhandled_irq_f2);
+ IDT[0xf3].set_handler_fn(unhandled_irq_f3);
+ IDT[0xf4].set_handler_fn(unhandled_irq_f4);
+ IDT[0xf5].set_handler_fn(unhandled_irq_f5);
+ IDT[0xf6].set_handler_fn(unhandled_irq_f6);
+ IDT[0xf7].set_handler_fn(unhandled_irq_f7);
+ IDT[0xf8].set_handler_fn(unhandled_irq_f8);
+ IDT[0xf9].set_handler_fn(unhandled_irq_f9);
+ IDT[0xfa].set_handler_fn(unhandled_irq_fa);
+ IDT[0xfb].set_handler_fn(unhandled_irq_fb);
+ IDT[0xfc].set_handler_fn(unhandled_irq_fc);
+ IDT[0xfd].set_handler_fn(unhandled_irq_fd);
+ IDT[0xfe].set_handler_fn(unhandled_irq_fe);
+ IDT[0xff].set_handler_fn(unhandled_irq_ff);
+
+ IDT.divide_by_zero.set_handler_fn(handle_divzero);
+ IDT.invalid_tss.set_handler_fn(handle_inval_tss);
+ IDT.segment_not_present.set_handler_fn(handle_seg_not_present);
+ IDT.stack_segment_fault.set_handler_fn(handle_ss_fault);
+ IDT.general_protection_fault.set_handler_fn(handle_gp);
+ IDT.invalid_opcode.set_handler_fn(handle_iopc);
+ IDT.page_fault.set_handler_fn(handle_pagefault);
+ IDT.double_fault.set_handler_fn(handle_doublefault);
+ IDT.machine_check.set_handler_fn(handle_mce);
+ IDT.breakpoint.set_handler_fn(handle_breakpoint);
+
+ IDT[IRQ_APIC_LVT_ERROR as usize].set_handler_fn(handle_apic_error);
+
+ IDT.load();
+ }
+}