feat(isr): add basic isr wrappers
Signed-off-by: Julien CLEMENT <julien.clement@epita.fr>
This commit is contained in:
parent
96610353c8
commit
10896fe2e9
32
k/isr.h
Normal file
32
k/isr.h
Normal file
@ -0,0 +1,32 @@
|
||||
#ifndef ISR_H
|
||||
#define ISR_H
|
||||
|
||||
struct isr_param
|
||||
{
|
||||
uint32_t int_vector;
|
||||
uint32_t error_code;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
void isr_divide(void);
|
||||
void isr_debug(void);
|
||||
void isr_nmi(void);
|
||||
void isr_breakpoint(void);
|
||||
void isr_overflow(void);
|
||||
void isr_bound_range_exceeded(void);
|
||||
void isr_invalid_opcode(void);
|
||||
void isr_device_not_available(void);
|
||||
void isr_double_fault(void);
|
||||
void isr_coprocessor_segment_overrun(void);
|
||||
void isr_invalid_tss(void);
|
||||
void isr_segment_not_present(void);
|
||||
void isr_stack_segment_fault(void);
|
||||
void isr_general_protection(void);
|
||||
void isr_page_fault(void);
|
||||
void isr_fpu_floating_point_error(void);
|
||||
void isr_alignment_check(void);
|
||||
void isr_machine_check(void);
|
||||
void isr_simd_floating_point_exception(void);
|
||||
void isr_virtualization_exception(void);
|
||||
void isr_control_protection_exception(void);
|
||||
|
||||
#endif /* !ISR_H */
|
107
k/isr.s
Normal file
107
k/isr.s
Normal file
@ -0,0 +1,107 @@
|
||||
.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
|
Loading…
Reference in New Issue
Block a user