1/* 2 * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef INTERRUPTS_H 6#define INTERRUPTS_H 7 8 9#ifndef _ASSEMBLER 10 11 12#include <sys/cdefs.h> 13 14#include <SupportDefs.h> 15 16 17struct gdt_idt_descr { 18 uint16 limit; 19 void* base; 20} _PACKED; 21 22 23__BEGIN_DECLS 24 25 26void interrupts_init(); 27void set_debug_idt(); 28void restore_bios_idt(); 29 30 31__END_DECLS 32 33 34#endif // _ASSEMBLER 35 36#define INTERRUPT_FUNCTION_ERROR(vector) INTERRUPT_FUNCTION(vector) 37 38#define INTERRUPT_FUNCTIONS5(vector1, vector2, vector3, vector4, vector5) \ 39 INTERRUPT_FUNCTION(vector1) \ 40 INTERRUPT_FUNCTION(vector2) \ 41 INTERRUPT_FUNCTION(vector3) \ 42 INTERRUPT_FUNCTION(vector4) \ 43 INTERRUPT_FUNCTION(vector5) 44 45#define INTERRUPT_FUNCTIONS() \ 46 INTERRUPT_FUNCTIONS5(0, 1, 2, 3, 4) \ 47 INTERRUPT_FUNCTIONS5(5, 6, 7, 8, 9) \ 48 INTERRUPT_FUNCTION_ERROR(10) \ 49 INTERRUPT_FUNCTION_ERROR(11) \ 50 INTERRUPT_FUNCTION_ERROR(12) \ 51 INTERRUPT_FUNCTION_ERROR(13) \ 52 INTERRUPT_FUNCTION_ERROR(14) \ 53 INTERRUPT_FUNCTION(15) \ 54 INTERRUPT_FUNCTION(16) \ 55 INTERRUPT_FUNCTION_ERROR(17) \ 56 INTERRUPT_FUNCTION(18) \ 57 INTERRUPT_FUNCTION(19) 58 59#define DEBUG_IDT_SLOT_COUNT 20 60 61 62#endif // INTERRUPTS_H 63