#ifndef _KERNEL_AMD64_INTR_H
#define _KERNEL_AMD64_INTR_H

#include <aux/compiler.h>
#include <libk/std.h>

struct saved_regs {
  /* regs */
  uint64_t r15;
  uint64_t r14;
  uint64_t r13;
  uint64_t r12;
  uint64_t r11;
  uint64_t r10;
  uint64_t r9;
  uint64_t r8;
  uint64_t rbx;
  uint64_t rbp;
  uint64_t rdi;
  uint64_t rsi;
  uint64_t rdx;
  uint64_t rcx;
  uint64_t rax;
  /* interrupt stuff */
  uint64_t trap;
  uint64_t error;
  uint64_t rip;
  uint64_t cs;
  uint64_t rflags;
  uint64_t rsp;
  uint64_t ss;
} PACKED;

void idt_load (void);
void intr_init (void);

#endif // _KERNEL_AMD64_INTR_H
