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
50
typedef
struct
TrapFrame
51
{
52
uint64_t
r15
;
53
uint64_t
r14
;
54
uint64_t
r13
;
55
uint64_t
r12
;
56
uint64_t
r11
;
57
uint64_t
r10
;
58
uint64_t
r9
;
59
uint64_t
r8
;
60
uint64_t
rbp
;
61
uint64_t
rdi
;
62
uint64_t
rsi
;
63
uint64_t
rdx
;
64
uint64_t
rcx
;
65
uint64_t
rbx
;
66
uint64_t
ds
;
67
uint64_t
rax
;
68
69
uint64_t
vector
;
70
uint32_t
errcode
;
71
uint32_t
_unused0
;
72
uint64_t
rip
;
73
uint16_t
cs
;
74
uint16_t
_unused1
;
75
uint16_t
_unused2
;
76
uint16_t
_unused3
;
77
uint64_t
rflags
;
78
uint64_t
rsp
;
79
uint16_t
ss
;
80
uint16_t
_unused4
;
81
uint16_t
_unused5
;
82
uint16_t
_unused6
;
83
}
TrapFrame
;
84
85
void
Trap_Init
();
86
void
Trap_InitAP
();
87
void
Trap_Dump
(
TrapFrame
*tf);
88
void
Trap_Pop
(
TrapFrame
*tf);
89
90
#endif
/* __TRAP_H__ */
91
TrapFrame::cs
uint16_t cs
Definition:
trap.h:73
TrapFrame::r8
uint64_t r8
Definition:
trap.h:59
TrapFrame::r15
uint64_t r15
Definition:
trap.h:52
TrapFrame::rsi
uint64_t rsi
Definition:
trap.h:62
TrapFrame::rbp
uint64_t rbp
Definition:
trap.h:60
TrapFrame::ss
uint16_t ss
Definition:
trap.h:79
Trap_InitAP
void Trap_InitAP()
Definition:
trap.c:89
TrapFrame::rsp
uint64_t rsp
Definition:
trap.h:78
TrapFrame::r12
uint64_t r12
Definition:
trap.h:55
TrapFrame::rbx
uint64_t rbx
Definition:
trap.h:65
TrapFrame::rip
uint64_t rip
Definition:
trap.h:72
TrapFrame::rdi
uint64_t rdi
Definition:
trap.h:61
TrapFrame::_unused5
uint16_t _unused5
Definition:
trap.h:81
TrapFrame::rax
uint64_t rax
Definition:
trap.h:67
TrapFrame::_unused4
uint16_t _unused4
Definition:
trap.h:80
TrapFrame::r14
uint64_t r14
Definition:
trap.h:53
TrapFrame::_unused3
uint16_t _unused3
Definition:
trap.h:76
TrapFrame::vector
uint64_t vector
Definition:
trap.h:69
TrapFrame::_unused1
uint16_t _unused1
Definition:
trap.h:74
TrapFrame::_unused0
uint32_t _unused0
Definition:
trap.h:71
TrapFrame::rcx
uint64_t rcx
Definition:
trap.h:64
Trap_Dump
void Trap_Dump(TrapFrame *tf)
Definition:
trap.c:95
TrapFrame::errcode
uint32_t errcode
Definition:
trap.h:70
TrapFrame::_unused6
uint16_t _unused6
Definition:
trap.h:82
TrapFrame::r10
uint64_t r10
Definition:
trap.h:57
Trap_Pop
void Trap_Pop(TrapFrame *tf)
TrapFrame::_unused2
uint16_t _unused2
Definition:
trap.h:75
TrapFrame::r13
uint64_t r13
Definition:
trap.h:54
Trap_Init
void Trap_Init()
Definition:
trap.c:33
TrapFrame::r9
uint64_t r9
Definition:
trap.h:58
TrapFrame::rflags
uint64_t rflags
Definition:
trap.h:77
TrapFrame::ds
uint64_t ds
Definition:
trap.h:66
TrapFrame::rdx
uint64_t rdx
Definition:
trap.h:63
TrapFrame::r11
uint64_t r11
Definition:
trap.h:56
TrapFrame
Definition:
trap.h:51
uint16_t
unsigned short uint16_t
Definition:
types.h:11
uint32_t
unsigned int uint32_t
Definition:
types.h:12
uint64_t
unsigned long uint64_t
Definition:
types.h:13
sys
amd64
include
trap.h
Generated by
1.9.6