-
Notifications
You must be signed in to change notification settings - Fork 2
/
exception_wrappers.S
186 lines (139 loc) · 3.71 KB
/
exception_wrappers.S
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
.global divide_error_wrapper, reserved_wrapper, nmi_wrapper
.global breakpoint_wrapper, overflow_wrapper,bound_range_exceeded_wrapper, invalid_opcode_wrapper
.global device_not_available_wrapper, double_fault_wrapper, coprocessor_segment_overrun_wrapper
.global invalid_tss_wrapper, segment_not_present_wrapper, stack_segment_falut_wrapper
.global general_protection_wrapper, page_fault_wrapper, floating_point_error_wrapper
.global alignment_check_wrapper, machine_check_wrapper, simd_float_point_exception_wrapper
divide_error_wrapper:
pushal # push all registers
pushfl # push all flags
call divide_error
popfl # pop all flags
popal # pop all registers
iret
reserved_wrapper:
pushal # push all registers
pushfl # push all flags
call reserved
popfl # pop all flags
popal # pop all registers
iret
nmi_wrapper:
pushal # push all registers
pushfl # push all flags
call nmi
popfl # pop all flags
popal # pop all registers
iret
breakpoint_wrapper:
pushal # push all registers
pushfl # push all flags
call breakpoint
popfl # pop all flags
popal # pop all registers
iret
overflow_wrapper:
pushal # push all registers
pushfl # push all flags
call overflow
popfl # pop all flags
popal # pop all registers
iret
bound_range_exceeded_wrapper:
pushal # push all registers
pushfl # push all flags
call bound_range_exceeded
popfl # pop all flags
popal # pop all registers
iret
invalid_opcode_wrapper:
pushal # push all registers
pushfl # push all flags
call invalid_opcode
popfl # pop all flags
popal # pop all registers
iret
device_not_available_wrapper:
pushal # push all registers
pushfl # push all flags
call device_not_available
popfl # pop all flags
popal # pop all registers
iret
double_fault_wrapper:
pushal # push all registers
pushfl # push all flags
call double_fault
popfl # pop all flags
popal # pop all registers
iret
coprocessor_segment_overrun_wrapper:
pushal # push all registers
pushfl # push all flags
call coprocessor_segment_overrun
popfl # pop all flags
popal # pop all registers
iret
invalid_tss_wrapper:
pushal # push all registers
pushfl # push all flags
call invalid_tss
popfl # pop all flags
popal # pop all registers
iret
segment_not_present_wrapper:
pushal # push all registers
pushfl # push all flags
call segment_not_present
popfl # pop all flags
popal # pop all registers
iret
stack_segment_falut_wrapper:
pushal # push all registers
pushfl # push all flags
call stack_segment_falut
popfl # pop all flags
popal # pop all registers
iret
general_protection_wrapper:
pushal # push all registers
pushfl # push all flags
call general_protection
popfl # pop all flags
popal # pop all registers
iret
page_fault_wrapper:
pushal # push all registers
pushfl # push all flags
call page_fault
popfl # pop all flags
popal # pop all registers
iret
floating_point_error_wrapper:
pushal # push all registers
pushfl # push all flags
call floating_point_error
popfl # pop all flags
popal # pop all registers
iret
alignment_check_wrapper:
pushal # push all registers
pushfl # push all flags
call alignment_check
popfl # pop all flags
popal # pop all registers
iret
machine_check_wrapper:
pushal # push all registers
pushfl # push all flags
call machine_check
popfl # pop all flags
popal # pop all registers
iret
simd_float_point_exception_wrapper:
pushal # push all registers
pushfl # push all flags
call simd_float_point_exception
popfl # pop all flags
popal # pop all registers
iret