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
|
.section .text
.global kernelvec
.align 4
kernelvec:
addi sp, sp, -256
sd ra, 40(sp)
sd sp, 48(sp)
sd gp, 56(sp)
sd tp, 64(sp)
sd t0, 72(sp)
sd t1, 80(sp)
sd t2, 88(sp)
sd s0, 96(sp)
sd s1, 104(sp)
sd a0, 112(sp)
sd a1, 120(sp)
sd a2, 128(sp)
sd a3, 136(sp)
sd a4, 144(sp)
sd a5, 152(sp)
sd a6, 160(sp)
sd a7, 168(sp)
sd s2, 176(sp)
sd s3, 184(sp)
sd s4, 192(sp)
sd s5, 200(sp)
sd s6, 208(sp)
sd s7, 216(sp)
sd s8, 224(sp)
sd s9, 232(sp)
sd s10, 240(sp)
sd s11, 248(sp)
sd t3, 256(sp)
sd t4, 264(sp)
sd t5, 272(sp)
sd t6, 280(sp)
csrr t0, sepc
csrr t1, sstatus
sd t0, 24(sp) # Trapframe.epc
sd t1, 32(sp) # Trapframe.kernel_hartid
mv a0, sp
call kerneltrap
ld t0, 24(sp)
ld t1, 32(sp)
csrw sepc, t0
csrw sstatus, t1
ld ra, 40(sp)
ld gp, 56(sp)
ld tp, 64(sp)
ld t0, 72(sp)
ld t1, 80(sp)
ld t2, 88(sp)
ld s0, 96(sp)
ld s1, 104(sp)
ld a0, 112(sp)
ld a1, 120(sp)
ld a2, 128(sp)
ld a3, 136(sp)
ld a4, 144(sp)
ld a5, 152(sp)
ld a6, 160(sp)
ld a7, 168(sp)
ld s2, 176(sp)
ld s3, 184(sp)
ld s4, 192(sp)
ld s5, 200(sp)
ld s6, 208(sp)
ld s7, 216(sp)
ld s8, 224(sp)
ld s9, 232(sp)
ld s10, 240(sp)
ld s11, 248(sp)
ld t3, 256(sp)
ld t4, 264(sp)
ld t5, 272(sp)
ld t6, 280(sp)
addi sp, sp, 256
sret
|