7 #ifndef INTERRUPTS_ISR_H 8 #define INTERRUPTS_ISR_H 12 #define ISR_EXCEPTION(ex) (0x00 + (ex)) 13 #define ISR_IRQ(irq) (0x20 + (irq)) 14 #define ISR_SYSCALL 0x30 37 } __attribute__((packed)) bits;
107 uint32_t esi, uint32_t edi, cpu_state_t** cpu);
void isr_dump_cpu(cpu_state_t *cpu)
Dumps a CPU state.
uint8_t isr_enable_interrupts(uint8_t enable)
Enables or disables interrupts.
general purpose registers
cpu_state_t *(* isr_handler_t)(cpu_state_t *cpu)
Handles a specific interrupt.
The CPU's state when an interrupt occurs.
uint16_t vm86_gs
GS register (only pushed and popped in VM86 mode)
uint32_t esp
stack pointer register
uint32_t user_ss
stack segment (only pushed and popped in user space)
void isr_register_handler(size_t intr, isr_handler_t handler)
Registers a handler to call whenever a given interrupt is fired.
void isr_init()
Initializes syscalls and enables interrupts.
void isr_register_syscall(size_t id, void *syscall)
Registers a syscall handler to call whenever a specified syscall is requested.
uint16_t isr_eflags_t eflags
the EFLAGS register before the interrupt was fired
uint32_t intr
the interrupt vector of the fired interrupt
uint32_t(* isr_syscall_t)(uint32_t ebx, uint32_t ecx, uint32_t edx, uint32_t esi, uint32_t edi, cpu_state_t **cpu)
Handles a specific syscall.
uint8_t isr_get_interrupts()
Returns whether interrupts are enabled or disabled.
uint16_t isr_registers_t r
The general purpose registers.