xref: /haiku/headers/private/kernel/arch/riscv64/arch_traps.h (revision f0e1bca09c3659b22615c642b24624e3d56144ed)
1*f0e1bca0SX512 /*
2*f0e1bca0SX512  * Copyright 2021, Haiku, Inc.
3*f0e1bca0SX512  * Distributed under the terms of the MIT License.
4*f0e1bca0SX512  */
5*f0e1bca0SX512 
6*f0e1bca0SX512 
7*f0e1bca0SX512 #ifndef _ARCH_TRAPS_H_
8*f0e1bca0SX512 #define _ARCH_TRAPS_H_
9*f0e1bca0SX512 
10*f0e1bca0SX512 
11*f0e1bca0SX512 # NOTE: this macro don't save SP, it should be saved manually
12*f0e1bca0SX512 .macro PushTrapFrame
13*f0e1bca0SX512 	addi sp, sp, -256
14*f0e1bca0SX512 
15*f0e1bca0SX512 	sd ra,   0*8(sp)
16*f0e1bca0SX512 	sd t6,   1*8(sp)
17*f0e1bca0SX512 #	sd sp,   2*8(sp) # sp
18*f0e1bca0SX512 	sd gp,   3*8(sp)
19*f0e1bca0SX512 	sd tp,   4*8(sp)
20*f0e1bca0SX512 	sd t0,   5*8(sp)
21*f0e1bca0SX512 	sd t1,   6*8(sp)
22*f0e1bca0SX512 	sd t2,   7*8(sp)
23*f0e1bca0SX512 	sd t5,   8*8(sp)
24*f0e1bca0SX512 	sd s1,   9*8(sp)
25*f0e1bca0SX512 	sd a0,  10*8(sp)
26*f0e1bca0SX512 	sd a1,  11*8(sp)
27*f0e1bca0SX512 	sd a2,  12*8(sp)
28*f0e1bca0SX512 	sd a3,  13*8(sp)
29*f0e1bca0SX512 	sd a4,  14*8(sp)
30*f0e1bca0SX512 	sd a5,  15*8(sp)
31*f0e1bca0SX512 	sd a6,  16*8(sp)
32*f0e1bca0SX512 	sd a7,  17*8(sp)
33*f0e1bca0SX512 	sd s2,  18*8(sp)
34*f0e1bca0SX512 	sd s3,  19*8(sp)
35*f0e1bca0SX512 	sd s4,  20*8(sp)
36*f0e1bca0SX512 	sd s5,  21*8(sp)
37*f0e1bca0SX512 	sd s6,  22*8(sp)
38*f0e1bca0SX512 	sd s7,  23*8(sp)
39*f0e1bca0SX512 	sd s8,  24*8(sp)
40*f0e1bca0SX512 	sd s9,  25*8(sp)
41*f0e1bca0SX512 	sd s10, 26*8(sp)
42*f0e1bca0SX512 	sd s11, 27*8(sp)
43*f0e1bca0SX512 	sd t3,  28*8(sp)
44*f0e1bca0SX512 	sd t4,  29*8(sp)
45*f0e1bca0SX512 	sd fp,  30*8(sp)
46*f0e1bca0SX512 
47*f0e1bca0SX512 	addi fp, sp, 256
48*f0e1bca0SX512 .endm
49*f0e1bca0SX512 
50*f0e1bca0SX512 
51*f0e1bca0SX512 .macro PopTrapFrame
52*f0e1bca0SX512 	ld ra,   0*8(sp)
53*f0e1bca0SX512 	ld t6,   1*8(sp)
54*f0e1bca0SX512 #	ld sp,   2*8(sp) restore later
55*f0e1bca0SX512 	ld gp,   3*8(sp)
56*f0e1bca0SX512 #	ld tp,   4*8(sp)
57*f0e1bca0SX512 	ld t0,   5*8(sp)
58*f0e1bca0SX512 	ld t1,   6*8(sp)
59*f0e1bca0SX512 	ld t2,   7*8(sp)
60*f0e1bca0SX512 	ld t5,   8*8(sp)
61*f0e1bca0SX512 	ld s1,   9*8(sp)
62*f0e1bca0SX512 	ld a0,  10*8(sp)
63*f0e1bca0SX512 	ld a1,  11*8(sp)
64*f0e1bca0SX512 	ld a2,  12*8(sp)
65*f0e1bca0SX512 	ld a3,  13*8(sp)
66*f0e1bca0SX512 	ld a4,  14*8(sp)
67*f0e1bca0SX512 	ld a5,  15*8(sp)
68*f0e1bca0SX512 	ld a6,  16*8(sp)
69*f0e1bca0SX512 	ld a7,  17*8(sp)
70*f0e1bca0SX512 	ld s2,  18*8(sp)
71*f0e1bca0SX512 	ld s3,  19*8(sp)
72*f0e1bca0SX512 	ld s4,  20*8(sp)
73*f0e1bca0SX512 	ld s5,  21*8(sp)
74*f0e1bca0SX512 	ld s6,  22*8(sp)
75*f0e1bca0SX512 	ld s7,  23*8(sp)
76*f0e1bca0SX512 	ld s8,  24*8(sp)
77*f0e1bca0SX512 	ld s9,  25*8(sp)
78*f0e1bca0SX512 	ld s10, 26*8(sp)
79*f0e1bca0SX512 	ld s11, 27*8(sp)
80*f0e1bca0SX512 	ld t3,  28*8(sp)
81*f0e1bca0SX512 	ld t4,  29*8(sp)
82*f0e1bca0SX512 	ld fp,  30*8(sp)
83*f0e1bca0SX512 
84*f0e1bca0SX512 	ld sp,   2*8(sp)
85*f0e1bca0SX512 .endm
86*f0e1bca0SX512 
87*f0e1bca0SX512 
88*f0e1bca0SX512 #endif	// _ARCH_TRAPS_H_
89