-
Notifications
You must be signed in to change notification settings - Fork 2
/
vectors.S
185 lines (163 loc) · 2.15 KB
/
vectors.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
.macro movi reg, val
lui \reg, %hi(\val)
ori \reg, \reg, %lo(\val)
.endm
.macro STUB num
.align 4
.section .vector_new_\num,"ax",@progbits
.global __vector_\num
__vector_\num:
movi $k0, _isr_primary_install
lw $k0, \num * 4($k0)
jr $k0
.endm
.align 4
.global __use_isr_install
__use_isr_install:
STUB 0
STUB 1
STUB 2
STUB 3
STUB 4
STUB 5
STUB 6
STUB 7
STUB 8
STUB 9
STUB 10
STUB 11
STUB 12
STUB 13
STUB 14
STUB 15
STUB 16
STUB 17
STUB 18
STUB 19
STUB 20
STUB 21
STUB 22
STUB 23
STUB 24
STUB 25
STUB 26
STUB 27
STUB 28
STUB 29
STUB 30
STUB 31
STUB 32
STUB 33
STUB 34
STUB 35
STUB 36
STUB 37
STUB 38
STUB 39
STUB 40
STUB 41
STUB 42
STUB 43
STUB 44
STUB 45
STUB 46
STUB 47
STUB 48
STUB 49
STUB 50
STUB 51
STUB 52
STUB 53
STUB 54
STUB 55
STUB 56
STUB 57
STUB 58
STUB 59
STUB 60
STUB 61
STUB 62
STUB 63
.section .text
.align 4
.global _isr_stub
_isr_stub:
eret
nop
.align 4
.global _isr_primary_install
_isr_primary_install:
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
.word _isr_stub
# Exceptions are handled here (trap, syscall, etc)
.section .gen_handler,"ax",@progbits
.set noreorder
.ent _gen_exception
_gen_exception:
mfc0 $k0, $14, 0
addi $k0, $k0, 4
mtc0 $k0, $14, 0
eret
.end _gen_exception