Skip to content

Commit edeba67

Browse files
authored
Merge pull request #151 from YuzukiHD/dev
[driver] fix irq handler
2 parents aaf142b + 2a77eba commit edeba67

File tree

1 file changed

+88
-2
lines changed

1 file changed

+88
-2
lines changed

board/avaota-cam/start.S

+88-2
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ _start:
6060
csrw mtvec, a0
6161

6262
/* Setup int vectors */
63-
la a0, vectors
63+
la a0, irq_handler
6464
csrw mtvt, a0
6565

6666
/* Setup stack */
@@ -168,4 +168,90 @@ vectors:
168168
LREG x30, 30 * REGSZ(a0)
169169
LREG x31, 31 * REGSZ(a0)
170170
LREG x10, 10 * REGSZ(a0)
171-
mret
171+
mret
172+
173+
/*
174+
* IRQ vectors.
175+
*/
176+
.align 6
177+
.globl irq_handler
178+
irq_handler:
179+
csrw mscratch, sp
180+
addi sp, sp, -(37 * REGSZ)
181+
SREG x1, 1 * REGSZ(x2)
182+
SREG x3, 3 * REGSZ(x2)
183+
SREG x4, 4 * REGSZ(x2)
184+
SREG x5, 5 * REGSZ(x2)
185+
SREG x6, 6 * REGSZ(x2)
186+
SREG x7, 7 * REGSZ(x2)
187+
SREG x8, 8 * REGSZ(x2)
188+
SREG x9, 9 * REGSZ(x2)
189+
SREG x10, 10 * REGSZ(x2)
190+
SREG x11, 11 * REGSZ(x2)
191+
SREG x12, 12 * REGSZ(x2)
192+
SREG x13, 13 * REGSZ(x2)
193+
SREG x14, 14 * REGSZ(x2)
194+
SREG x15, 15 * REGSZ(x2)
195+
SREG x16, 16 * REGSZ(x2)
196+
SREG x17, 17 * REGSZ(x2)
197+
SREG x18, 18 * REGSZ(x2)
198+
SREG x19, 19 * REGSZ(x2)
199+
SREG x20, 20 * REGSZ(x2)
200+
SREG x21, 21 * REGSZ(x2)
201+
SREG x22, 22 * REGSZ(x2)
202+
SREG x23, 23 * REGSZ(x2)
203+
SREG x24, 24 * REGSZ(x2)
204+
SREG x25, 25 * REGSZ(x2)
205+
SREG x26, 26 * REGSZ(x2)
206+
SREG x27, 27 * REGSZ(x2)
207+
SREG x28, 28 * REGSZ(x2)
208+
SREG x29, 29 * REGSZ(x2)
209+
SREG x30, 30 * REGSZ(x2)
210+
SREG x31, 31 * REGSZ(x2)
211+
csrrw t0, mscratch, x0
212+
csrr s0, mstatus
213+
csrr t1, mepc
214+
csrr t2, mbadaddr
215+
csrr t3, mcause
216+
SREG t0, 2 * REGSZ(x2)
217+
SREG s0, 32 * REGSZ(x2)
218+
SREG t1, 33 * REGSZ(x2)
219+
SREG t2, 34 * REGSZ(x2)
220+
SREG t3, 35 * REGSZ(x2)
221+
li x5, -1
222+
SREG x5, 36 * REGSZ(x2)
223+
move a0, sp
224+
jal riscv_handle_exception
225+
csrr a0, mscratch
226+
LREG x1, 1 * REGSZ(a0)
227+
LREG x2, 2 * REGSZ(a0)
228+
LREG x3, 3 * REGSZ(a0)
229+
LREG x4, 4 * REGSZ(a0)
230+
LREG x5, 5 * REGSZ(a0)
231+
LREG x6, 6 * REGSZ(a0)
232+
LREG x7, 7 * REGSZ(a0)
233+
LREG x8, 8 * REGSZ(a0)
234+
LREG x9, 9 * REGSZ(a0)
235+
LREG x11, 11 * REGSZ(a0)
236+
LREG x12, 12 * REGSZ(a0)
237+
LREG x13, 13 * REGSZ(a0)
238+
LREG x14, 14 * REGSZ(a0)
239+
LREG x15, 15 * REGSZ(a0)
240+
LREG x16, 16 * REGSZ(a0)
241+
LREG x17, 17 * REGSZ(a0)
242+
LREG x18, 18 * REGSZ(a0)
243+
LREG x19, 19 * REGSZ(a0)
244+
LREG x20, 20 * REGSZ(a0)
245+
LREG x21, 21 * REGSZ(a0)
246+
LREG x22, 22 * REGSZ(a0)
247+
LREG x23, 23 * REGSZ(a0)
248+
LREG x24, 24 * REGSZ(a0)
249+
LREG x25, 25 * REGSZ(a0)
250+
LREG x26, 26 * REGSZ(a0)
251+
LREG x27, 27 * REGSZ(a0)
252+
LREG x28, 28 * REGSZ(a0)
253+
LREG x29, 29 * REGSZ(a0)
254+
LREG x30, 30 * REGSZ(a0)
255+
LREG x31, 31 * REGSZ(a0)
256+
LREG x10, 10 * REGSZ(a0)
257+
mret

0 commit comments

Comments
 (0)