80 lines
1.9 KiB
C
80 lines
1.9 KiB
C
|
|
#ifndef INTERRUPTS_H
|
|
#define INTERRUPTS_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
void isr(u8_t int_num, int_stack_t * int_stack);
|
|
|
|
extern void isr_0();
|
|
extern void isr_1();
|
|
extern void isr_2();
|
|
extern void isr_3();
|
|
extern void isr_4();
|
|
extern void isr_5();
|
|
extern void isr_6();
|
|
extern void isr_7();
|
|
extern void isr_8();
|
|
extern void isr_9();
|
|
extern void isr_10();
|
|
extern void isr_11();
|
|
extern void isr_12();
|
|
extern void isr_13();
|
|
extern void isr_14();
|
|
extern void isr_15();
|
|
extern void isr_16();
|
|
extern void isr_17();
|
|
extern void isr_18();
|
|
extern void isr_19();
|
|
extern void isr_20();
|
|
extern void isr_21();
|
|
extern void isr_22();
|
|
extern void isr_23();
|
|
extern void isr_24();
|
|
extern void isr_25();
|
|
extern void isr_26();
|
|
extern void isr_27();
|
|
extern void isr_28();
|
|
extern void isr_29();
|
|
extern void isr_30();
|
|
extern void isr_31();
|
|
extern void isr_32();
|
|
extern void isr_33();
|
|
extern void isr_34();
|
|
extern void isr_35();
|
|
extern void isr_36();
|
|
extern void isr_37();
|
|
extern void isr_38();
|
|
extern void isr_39();
|
|
extern void isr_40();
|
|
extern void isr_41();
|
|
extern void isr_42();
|
|
extern void isr_43();
|
|
extern void isr_44();
|
|
extern void isr_45();
|
|
extern void isr_46();
|
|
extern void isr_47();
|
|
extern void isr_48();
|
|
extern void isr_49();
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#define MAKE_IDT_DESCRIPTOR(selector, offset, dpl) \
|
|
(u64_t) ( ( (((u64_t) offset) & 0xFFFF0000ull) << 32 ) /* offset 31:16 */ \
|
|
| ( ( (u64_t) 0x1ull) << 47 ) /* present */ \
|
|
| ( (((u64_t) dpl) & 0x3) << 45 ) /* DPL */ \
|
|
| ( ( (u64_t) 0xEull) << 40 ) /* TODO: gate? */ \
|
|
| ( (((u64_t) selector) & 0xFFFFull) << 16 ) /* selector */ \
|
|
| ( (((u64_t) offset) & 0x0000FFFFull) ) ) /* offset 15:0 */
|
|
|
|
void interrupts_bootstrap();
|
|
|
|
#define interrupts_enable() __asm__ __volatile__ ("sti");
|
|
#define interrupts_disable() __asm__ __volatile__ ("cli");
|
|
|
|
#endif
|