#ifndef IDT_HPP
#define IDT_HPP

#include <cstddef>
#include <cstdint>

struct Registers
{
    std::uint32_t inum;
    std::uint32_t edi, esi, ebp, esp, ebx, edx, ecx, eax;
    std::uint32_t error;
    std::uint32_t eip, cs, eflags;
} __attribute__((packed));

using Callback = void (*)(const Registers&);

void idt_initialize();
void idt_register_callback(std::size_t num, Callback cb);

#endif // IDT_HPP