Files
my-os-project2/kernel/intr/intr.h

48 lines
823 B
C

#ifndef INTR_INTR_H_
#define INTR_INTR_H_
#include <stdint.h>
#include <stdbool.h>
#include "compiler/attr.h"
#define INTR_IRQBASE 0x20
#define INTR_OK 1
#define INTR_NOEOI 2
typedef struct {
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 rbp;
uint64_t rdi;
uint64_t rsi;
uint64_t rdx;
uint64_t rcx;
uint64_t rax;
} PACKED SavedRegs;
typedef struct {
SavedRegs regs;
uint64_t trapnum;
uint64_t errnum;
uint64_t rip;
uint64_t cs;
uint64_t rflags;
uint64_t rsp;
uint64_t ss;
} PACKED IntrStackFrame;
void intr_attchhandler(int (*fn)(IntrStackFrame *frame), int irq);
int32_t intr_dttchhandler(int irq);
void intr_disable(void);
void intr_enable(void);
void intr_init(void);
#endif // INTR_INTR_H_