CS350 COS
COS
Loading...
Searching...
No Matches
trap.h
Go to the documentation of this file.
1
2#ifndef __TRAP_H__
3#define __TRAP_H__
4
5#define T_DE 0 /* Divide Error Exception */
6#define T_DB 1 /* Debug Exception */
7#define T_NMI 2 /* NMI Interrupt */
8#define T_BP 3 /* Breakpoint Exception */
9#define T_OF 4 /* Overflow Exception */
10#define T_BR 5 /* BOUND Range Exceeded Exception */
11#define T_UD 6 /* Invalid Opcode Exception */
12#define T_NM 7 /* Device Not Available Exception */
13#define T_DF 8 /* Double Fault Exception */
14#define T_TS 10 /* Invalid TSS Exception */
15#define T_NP 11 /* Segment Not Present */
16#define T_SS 12 /* Stack Fault Exception */
17#define T_GP 13 /* General Protection Exception */
18#define T_PF 14 /* Page-Fault Exception */
19#define T_MF 16 /* x87 FPU Floating-Point Error */
20#define T_AC 17 /* Alignment Check Exception */
21#define T_MC 18 /* Machine-Check Exception */
22#define T_XF 19 /* SIMB Floating-Point Exception */
23#define T_VE 20 /* Virtualization Exception */
24
25#define T_CPU_LAST T_VE
26
27// IRQs
28#define T_IRQ_BASE 32
29#define T_IRQ_LEN 24
30#define T_IRQ_MAX (T_IRQ_BASE + T_IRQ_LEN - 1)
31
32#define T_IRQ_TIMER (T_IRQ_BASE + 0)
33#define T_IRQ_KBD (T_IRQ_BASE + 1)
34#define T_IRQ_COM1 (T_IRQ_BASE + 4)
35#define T_IRQ_MOUSE (T_IRQ_BASE + 12)
36
37// LAPIC Special Vectors
38#define T_IRQ_SPURIOUS (T_IRQ_BASE + 24)
39#define T_IRQ_ERROR (T_IRQ_BASE + 25)
40#define T_IRQ_THERMAL (T_IRQ_BASE + 26)
41
42#define T_SYSCALL 60 /* System Call */
43#define T_CROSSCALL 61 /* Cross Call (IPI) */
44#define T_DEBUGIPI 62 /* Kernel Debugger Halt (IPI) */
45
46#define T_UNKNOWN 63 /* Unknown Trap */
47
48#define T_MAX 64
49
50typedef struct TrapFrame
51{
68
84
85void Trap_Init();
86void Trap_InitAP();
87void Trap_Dump(TrapFrame *tf);
89
90#endif /* __TRAP_H__ */
91
uint16_t cs
Definition: trap.h:73
uint64_t r8
Definition: trap.h:59
uint64_t r15
Definition: trap.h:52
uint64_t rsi
Definition: trap.h:62
uint64_t rbp
Definition: trap.h:60
uint16_t ss
Definition: trap.h:79
void Trap_InitAP()
Definition: trap.c:89
uint64_t rsp
Definition: trap.h:78
uint64_t r12
Definition: trap.h:55
uint64_t rbx
Definition: trap.h:65
uint64_t rip
Definition: trap.h:72
uint64_t rdi
Definition: trap.h:61
uint16_t _unused5
Definition: trap.h:81
uint64_t rax
Definition: trap.h:67
uint16_t _unused4
Definition: trap.h:80
uint64_t r14
Definition: trap.h:53
uint16_t _unused3
Definition: trap.h:76
uint64_t vector
Definition: trap.h:69
uint16_t _unused1
Definition: trap.h:74
uint32_t _unused0
Definition: trap.h:71
uint64_t rcx
Definition: trap.h:64
void Trap_Dump(TrapFrame *tf)
Definition: trap.c:95
uint32_t errcode
Definition: trap.h:70
uint16_t _unused6
Definition: trap.h:82
uint64_t r10
Definition: trap.h:57
void Trap_Pop(TrapFrame *tf)
uint16_t _unused2
Definition: trap.h:75
uint64_t r13
Definition: trap.h:54
void Trap_Init()
Definition: trap.c:33
uint64_t r9
Definition: trap.h:58
uint64_t rflags
Definition: trap.h:77
uint64_t ds
Definition: trap.h:66
uint64_t rdx
Definition: trap.h:63
uint64_t r11
Definition: trap.h:56
Definition: trap.h:51
unsigned short uint16_t
Definition: types.h:11
unsigned int uint32_t
Definition: types.h:12
unsigned long uint64_t
Definition: types.h:13