summaryrefslogtreecommitdiffhomepage
path: root/src/loader/int.asm
blob: 4805448a9fec76646761d9fbe0e4ff8b5d464c85 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
; MIT License, Copyright (c) 2021 Marvin Borner

%macro INT_REGISTER 1
dd int%1
%endmacro

%macro INT_ERR 1
int%1:
	push %1
	jmp int_common
%endmacro

%macro INT_NOERR 1
int%1:
	push 0
	push %1
	jmp int_common
%endmacro

extern int_handler
int_common:
	cld

	pushad
	push ds
	push es
	push fs
	push gs

	mov ax, 0x20
	mov ds, ax
	mov es, ax
	mov fs, ax
	mov gs, ax

	push esp
	call int_handler
	mov esp, eax

	pop gs
	pop fs
	pop es
	pop ds
	popad

	add esp, 8
	iret

INT_NOERR 0
INT_NOERR 1
INT_NOERR 2
INT_NOERR 3
INT_NOERR 4
INT_NOERR 5
INT_NOERR 6
INT_NOERR 7
INT_ERR   8
INT_NOERR 9
INT_ERR   10
INT_ERR   11
INT_ERR   12
INT_ERR   13
INT_ERR   14
INT_NOERR 15
INT_NOERR 16
INT_ERR 17
INT_NOERR 18
INT_NOERR 19
INT_NOERR 20
INT_NOERR 21
INT_NOERR 22
INT_NOERR 23
INT_NOERR 24
INT_NOERR 25
INT_NOERR 26
INT_NOERR 27
INT_NOERR 28
INT_NOERR 29
INT_ERR   30
INT_NOERR 31

INT_NOERR 32
INT_NOERR 33
INT_NOERR 34
INT_NOERR 35
INT_NOERR 36
INT_NOERR 37
INT_NOERR 38
INT_NOERR 39
INT_NOERR 40
INT_NOERR 41
INT_NOERR 42
INT_NOERR 43
INT_NOERR 44
INT_NOERR 45
INT_NOERR 46
INT_NOERR 47

global int_table
int_table:
	INT_REGISTER 0
	INT_REGISTER 1
	INT_REGISTER 2
	INT_REGISTER 3
	INT_REGISTER 4
	INT_REGISTER 5
	INT_REGISTER 6
	INT_REGISTER 7
	INT_REGISTER 8
	INT_REGISTER 9
	INT_REGISTER 10
	INT_REGISTER 11
	INT_REGISTER 12
	INT_REGISTER 13
	INT_REGISTER 14
	INT_REGISTER 15
	INT_REGISTER 16
	INT_REGISTER 17
	INT_REGISTER 18
	INT_REGISTER 19
	INT_REGISTER 20
	INT_REGISTER 21
	INT_REGISTER 22
	INT_REGISTER 23
	INT_REGISTER 24
	INT_REGISTER 25
	INT_REGISTER 26
	INT_REGISTER 27
	INT_REGISTER 28
	INT_REGISTER 29
	INT_REGISTER 30
	INT_REGISTER 31

	INT_REGISTER 32
	INT_REGISTER 33
	INT_REGISTER 34
	INT_REGISTER 35
	INT_REGISTER 36
	INT_REGISTER 37
	INT_REGISTER 38
	INT_REGISTER 39
	INT_REGISTER 40
	INT_REGISTER 41
	INT_REGISTER 42
	INT_REGISTER 43
	INT_REGISTER 44
	INT_REGISTER 45
	INT_REGISTER 46
	INT_REGISTER 47