1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef HEXAGON_ASM_USER_H
3 #define HEXAGON_ASM_USER_H
4 
5 /*
6  * Layout for registers passed in elf core dumps to userspace.
7  *
8  * Basically a rearranged subset of "pt_regs".
9  *
10  * Interested parties:  libc, gdb...
11  */
12 
13 struct user_regs_struct {
14 	unsigned long r0;
15 	unsigned long r1;
16 	unsigned long r2;
17 	unsigned long r3;
18 	unsigned long r4;
19 	unsigned long r5;
20 	unsigned long r6;
21 	unsigned long r7;
22 	unsigned long r8;
23 	unsigned long r9;
24 	unsigned long r10;
25 	unsigned long r11;
26 	unsigned long r12;
27 	unsigned long r13;
28 	unsigned long r14;
29 	unsigned long r15;
30 	unsigned long r16;
31 	unsigned long r17;
32 	unsigned long r18;
33 	unsigned long r19;
34 	unsigned long r20;
35 	unsigned long r21;
36 	unsigned long r22;
37 	unsigned long r23;
38 	unsigned long r24;
39 	unsigned long r25;
40 	unsigned long r26;
41 	unsigned long r27;
42 	unsigned long r28;
43 	unsigned long r29;
44 	unsigned long r30;
45 	unsigned long r31;
46 	unsigned long sa0;
47 	unsigned long lc0;
48 	unsigned long sa1;
49 	unsigned long lc1;
50 	unsigned long m0;
51 	unsigned long m1;
52 	unsigned long usr;
53 	unsigned long p3_0;
54 	unsigned long gp;
55 	unsigned long ugp;
56 	unsigned long pc;
57 	unsigned long cause;
58 	unsigned long badva;
59 #if CONFIG_HEXAGON_ARCH_VERSION < 4
60 	unsigned long pad1;  /* pad out to 48 words total */
61 	unsigned long pad2;  /* pad out to 48 words total */
62 	unsigned long pad3;  /* pad out to 48 words total */
63 #else
64 	unsigned long cs0;
65 	unsigned long cs1;
66 	unsigned long pad1;  /* pad out to 48 words total */
67 #endif
68 };
69 
70 #endif
71