2019-04-27 09:51:32 -05:00
|
|
|
#ifndef ISR_H
|
|
|
|
#define ISR_H
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
/* Struct which aggregates many registers */
|
|
|
|
typedef struct {
|
|
|
|
uint64_t r15,r14,r13,r12,r11,r10,r9,r8,rdi,rsi,rbp,rsp,rbx,rdx,rcx,rax; /* Pushed by our code. */
|
|
|
|
uint64_t int_no,err_code; /* Interrupt number and error code (if applicable) */
|
|
|
|
uint64_t rip,cs,rflags,userrsp,ss; /* Pushed by the processor automatically */
|
|
|
|
} registers_t;
|
|
|
|
|
2020-07-22 19:26:55 -05:00
|
|
|
typedef void (*isr_t)(registers_t*);
|
2019-04-27 09:51:32 -05:00
|
|
|
|
|
|
|
void isr_install();
|
|
|
|
void isr_register_handler(uint8_t n,isr_t handler);
|
|
|
|
|
|
|
|
#endif
|