feat(isr): learnt to do assembly

Signed-off-by: Julien CLEMENT <julien.clement@epita.fr>
This commit is contained in:
Julien CLEMENT 2021-07-16 03:03:20 +02:00
parent af24d0f18a
commit 4492b7e9d6
2 changed files with 128 additions and 107 deletions

128
k/isr.S Normal file
View File

@ -0,0 +1,128 @@
.section .text
isr:
pushal
pushl %esp
add $32, (%esp)
call interrupt_handler
add $4, %esp
popal
iret
.global isr_divide
isr_divide:
pushl $0 // error code padding
pushl $0 // int vector
jmp isr
.global isr_debug
isr_debug:
pushl $0 // error code padding
pushl $1 // int vector
jmp isr
.global isr_nmi
isr_nmi:
pushl $0 // error code padding
pushl $2 // int vector
jmp isr
.global isr_breakpoint
isr_breakpoint:
pushl $0 // error code padding
pushl $3 // int vector
jmp isr
.global isr_overflow
isr_overflow:
pushl $0 // error code padding
pushl $4 // int vector
jmp isr
.global isr_bound_range_exceeded
isr_bound_range_exceeded:
pushl $0 // error code padding
pushl $5 // int vector
jmp isr
.global isr_invalid_opcode
isr_invalid_opcode:
pushl $0 // error code padding
pushl $6 // int vector
jmp isr
.global isr_device_not_available
isr_device_not_available:
pushl $0 // error code padding
pushl $7 // int vector
jmp isr
.global isr_double_fault
isr_double_fault:
pushl $8 // int vector
jmp isr
.global isr_coprocessor_segment_overrun
isr_coprocessor_segment_overrun:
pushl $0 // error code padding
pushl $9 // int vector
jmp isr
.global isr_invalid_tss
isr_invalid_tss:
pushl $10 // int vector
jmp isr
.global isr_segment_not_present
isr_segment_not_present:
pushl $11 // int vector
jmp isr
.global isr_stack_segment_fault
isr_stack_segment_fault:
pushl $12 // int vector
jmp isr
.global isr_general_protection
isr_general_protection:
pushl $13 // int vector
jmp isr
.global isr_page_fault
isr_page_fault:
pushl $14 // int vector
jmp isr
.global isr_fpu_floating_point_error
isr_fpu_floating_point_error:
pushl $0 // error code padding
pushl $16 // int vector
jmp isr
.global isr_alignment_check
isr_alignment_check:
pushl $17 // int vector
jmp isr
.global isr_machine_check
isr_machine_check:
pushl $0 // error code padding
pushl $18 // int vector
jmp isr
.global isr_simd_floating_point_exception
isr_simd_floating_point_exception:
pushl $0 // error code padding
pushl $19 // int vector
jmp isr
.global isr_virtualization_exception
isr_virtualization_exception:
pushl $0 // error code padding
pushl $20 // int vector
jmp isr
.global isr_control_protection_exception
isr_control_protection_exception:
pushl $21 // int vector
jmp isr

107
k/isr.s
View File

@ -1,107 +0,0 @@
.section .text
isr:
pushal
pushl %esp
add $32, (%esp)
call interrupt_handler
add $4, %esp
popal
iret
.global isr_divide:
pushl $0 ; error code padding
pushl $0 ; int vector
jmp isr
.global isr_debug:
pushl $0 ; error code padding
pushl $1 ; int vector
jmp isr
.global isr_nmi:
pushl $0 ; error code padding
pushl $2 ; int vector
jmp isr
.global isr_breakpoint:
pushl $0 ; error code padding
pushl $3 ; int vector
jmp isr
.global isr_overflow:
pushl $0 ; error code padding
pushl $4 ; int vector
jmp isr
.global isr_bound_range_exceeded:
pushl $0 ; error code padding
pushl $5 ; int vector
jmp isr
.global isr_invalid_opcode:
pushl $0 ; error code padding
pushl $6 ; int vector
jmp isr
.global isr_device_not_available:
pushl $0 ; error code padding
pushl $7 ; int vector
jmp isr
.global isr_double_fault:
pushl $8 ; int vector
jmp isr
.global isr_coprocessor_segment_overrun:
pushl $0 ; error code padding
pushl $9 ; int vector
jmp isr
.global isr_invalid_tss:
pushl $10 ; int vector
jmp isr
.global isr_segment_not_present:
pushl $11 ; int vector
jmp isr
.global isr_stack_segment_fault:
pushl $12 ; int vector
jmp isr
.global isr_general_protection:
pushl $13 ; int vector
jmp isr
.global isr_page_fault:
pushl $14 ; int vector
jmp isr
.global isr_fpu_floating_point_error:
pushl $0 ; error code padding
pushl $16 ; int vector
jmp isr
.global isr_alignment_check:
pushl $17 ; int vector
jmp isr
.global isr_machine_check:
pushl $0 ; error code padding
pushl $18 ; int vector
jmp isr
.global isr_simd_floating_point_exception:
pushl $0 ; error code padding
pushl $19 ; int vector
jmp isr
.global isr_virtualization_exception:
pushl $0 ; error code padding
pushl $20 ; int vector
jmp isr
.global isr_control_protection_exception:
pushl $21 ; int vector
jmp isr