xref: /plan9-contrib/riscv/include/ape/ureg.h (revision ce95e1b3727b9cb1c223ffbed69aff21a8ced255)
1 #ifndef __UREG_H
2 #define __UREG_H
3 #if !defined(_PLAN9_SOURCE)
4     This header file is an extension to ANSI/POSIX
5 #endif
6 
7 struct Ureg
8 {
9 	union {
10 		unsigned long	pc;
11 		unsigned long regs[1];
12 	};
13 	unsigned long	r1;		/* link */
14 	union{
15 		unsigned long	r2;
16 		unsigned long	sp;
17 		unsigned long	usp;
18 	};
19 	unsigned long	r3;		/* sb */
20 	unsigned long	r4;
21 	unsigned long	r5;
22 	unsigned long	r6;		/* up in kernel */
23 	unsigned long	r7;		/* m in kernel */
24 	union{
25 		unsigned long	r8;
26 		unsigned long arg;
27 		unsigned long ret;
28 	};
29 	unsigned long	r9;
30 	unsigned long	r10;
31 	unsigned long	r11;
32 	unsigned long	r12;
33 	unsigned long	r13;
34 	unsigned long	r14;
35 	unsigned long	r15;
36 	unsigned long	r16;
37 	unsigned long	r17;
38 	unsigned long	r18;
39 	unsigned long	r19;
40 	unsigned long	r20;
41 	unsigned long	r21;
42 	unsigned long	r22;
43 	unsigned long	r23;
44 	unsigned long	r24;
45 	unsigned long	r25;
46 	unsigned long	r26;
47 	unsigned long	r27;
48 	unsigned long	r28;
49 	unsigned long	r29;
50 	unsigned long	r30;
51 	unsigned long	r31;
52 
53 	/* csrs: generally supervisor ones */
54 	unsigned long	status;
55 	unsigned long	ie;
56 	union {
57 		unsigned long	cause;
58 		unsigned long	type;
59 	};
60 	unsigned long	tval;			/* faulting address */
61 };
62 
63 #endif
64