#pragma once
#include <stdint.h>

#define IDT_TA_InterruptGate 0b10001110
#define IDT_TA_InterruptGateUser 0b11101110
#define IDT_TA_TrapGate 0b10001111

struct IDTR
{
    uint16_t limit;
    uint64_t offset;
} __attribute__((packed));

namespace IDT
{
    void add_handler(short interrupt_number, void* handler, uint8_t type_attr);
    void load();
}