@@ -14,6 +14,8 @@ See the License for the specific language governing permissions and
14
14
limitations under the License.
15
15
*/
16
16
17
+ use hyperlight_common:: outb:: Exception ;
18
+
17
19
use crate :: interrupt_entry:: {
18
20
_do_excp0, _do_excp1, _do_excp10, _do_excp11, _do_excp12, _do_excp13, _do_excp14, _do_excp15,
19
21
_do_excp16, _do_excp17, _do_excp18, _do_excp19, _do_excp2, _do_excp20, _do_excp3, _do_excp30,
@@ -70,28 +72,28 @@ impl IdtEntry {
70
72
pub ( crate ) static mut IDT : [ IdtEntry ; 256 ] = unsafe { core:: mem:: zeroed ( ) } ;
71
73
72
74
pub ( crate ) fn init_idt ( ) {
73
- set_idt_entry ( 0 , _do_excp0) ; // Divide by zero
74
- set_idt_entry ( 1 , _do_excp1) ; // Debug
75
- set_idt_entry ( 2 , _do_excp2) ; // Non-maskable interrupt
76
- set_idt_entry ( 3 , _do_excp3) ; // Breakpoint
77
- set_idt_entry ( 4 , _do_excp4) ; // Overflow
78
- set_idt_entry ( 5 , _do_excp5) ; // Bound Range Exceeded
79
- set_idt_entry ( 6 , _do_excp6) ; // Invalid Opcode
80
- set_idt_entry ( 7 , _do_excp7) ; // Device Not Available
81
- set_idt_entry ( 8 , _do_excp8) ; // Double Fault
82
- set_idt_entry ( 9 , _do_excp9) ; // Coprocessor Segment Overrun
83
- set_idt_entry ( 10 , _do_excp10) ; // Invalid TSS
84
- set_idt_entry ( 11 , _do_excp11) ; // Segment Not Present
85
- set_idt_entry ( 12 , _do_excp12) ; // Stack-Segment Fault
86
- set_idt_entry ( 13 , _do_excp13) ; // General Protection Fault
87
- set_idt_entry ( 14 , _do_excp14) ; // Page Fault
88
- set_idt_entry ( 15 , _do_excp15) ; // Reserved
89
- set_idt_entry ( 16 , _do_excp16) ; // x87 Floating-Point Exception
90
- set_idt_entry ( 17 , _do_excp17) ; // Alignment Check
91
- set_idt_entry ( 18 , _do_excp18) ; // Machine Check
92
- set_idt_entry ( 19 , _do_excp19) ; // SIMD Floating-Point Exception
93
- set_idt_entry ( 20 , _do_excp20) ; // Virtualization Exception
94
- set_idt_entry ( 30 , _do_excp30) ; // Security Exception
75
+ set_idt_entry ( Exception :: DivideByZero as usize , _do_excp0) ; // Divide by zero
76
+ set_idt_entry ( Exception :: Debug as usize , _do_excp1) ; // Debug
77
+ set_idt_entry ( Exception :: NonMaskableInterrupt as usize , _do_excp2) ; // Non-maskable interrupt
78
+ set_idt_entry ( Exception :: Breakpoint as usize , _do_excp3) ; // Breakpoint
79
+ set_idt_entry ( Exception :: Overflow as usize , _do_excp4) ; // Overflow
80
+ set_idt_entry ( Exception :: BoundRangeExceeded as usize , _do_excp5) ; // Bound Range Exceeded
81
+ set_idt_entry ( Exception :: InvalidOpcode as usize , _do_excp6) ; // Invalid Opcode
82
+ set_idt_entry ( Exception :: DeviceNotAvailable as usize , _do_excp7) ; // Device Not Available
83
+ set_idt_entry ( Exception :: DoubleFault as usize , _do_excp8) ; // Double Fault
84
+ set_idt_entry ( Exception :: CoprocessorSegmentOverrun as usize , _do_excp9) ; // Coprocessor Segment Overrun
85
+ set_idt_entry ( Exception :: InvalidTSS as usize , _do_excp10) ; // Invalid TSS
86
+ set_idt_entry ( Exception :: SegmentNotPresent as usize , _do_excp11) ; // Segment Not Present
87
+ set_idt_entry ( Exception :: StackSegmentFault as usize , _do_excp12) ; // Stack-Segment Fault
88
+ set_idt_entry ( Exception :: GeneralProtectionFault as usize , _do_excp13) ; // General Protection Fault
89
+ set_idt_entry ( Exception :: PageFault as usize , _do_excp14) ; // Page Fault
90
+ set_idt_entry ( Exception :: Reserved as usize , _do_excp15) ; // Reserved
91
+ set_idt_entry ( Exception :: X87FloatingPointException as usize , _do_excp16) ; // x87 Floating-Point Exception
92
+ set_idt_entry ( Exception :: AlignmentCheck as usize , _do_excp17) ; // Alignment Check
93
+ set_idt_entry ( Exception :: MachineCheck as usize , _do_excp18) ; // Machine Check
94
+ set_idt_entry ( Exception :: SIMDFloatingPointException as usize , _do_excp19) ; // SIMD Floating-Point Exception
95
+ set_idt_entry ( Exception :: VirtualizationException as usize , _do_excp20) ; // Virtualization Exception
96
+ set_idt_entry ( Exception :: SecurityException as usize , _do_excp30) ; // Security Exception
95
97
}
96
98
97
99
fn set_idt_entry ( index : usize , handler : unsafe extern "sysv64" fn ( ) ) {
0 commit comments