.section .text .global kernelvec .global uservec .global userret .align 12 kernelvec: addi sp, sp, -288 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, 288 sret