1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
  2/*
  3 * Various register offset definitions for debuggers, core file
  4 * examiners and whatnot.
  5 *
  6 * This file is subject to the terms and conditions of the GNU General Public
  7 * License.  See the file "COPYING" in the main directory of this archive
  8 * for more details.
  9 *
 10 * Copyright (C) 1995, 1999 Ralf Baechle
 11 * Copyright (C) 1995, 1999 Silicon Graphics
 12 */
 13#ifndef __UAPI_ASM_MIPS_REG_H
 14#define __UAPI_ASM_MIPS_REG_H
 15
 16#define MIPS32_EF_R0		6
 17#define MIPS32_EF_R1		7
 18#define MIPS32_EF_R2		8
 19#define MIPS32_EF_R3		9
 20#define MIPS32_EF_R4		10
 21#define MIPS32_EF_R5		11
 22#define MIPS32_EF_R6		12
 23#define MIPS32_EF_R7		13
 24#define MIPS32_EF_R8		14
 25#define MIPS32_EF_R9		15
 26#define MIPS32_EF_R10		16
 27#define MIPS32_EF_R11		17
 28#define MIPS32_EF_R12		18
 29#define MIPS32_EF_R13		19
 30#define MIPS32_EF_R14		20
 31#define MIPS32_EF_R15		21
 32#define MIPS32_EF_R16		22
 33#define MIPS32_EF_R17		23
 34#define MIPS32_EF_R18		24
 35#define MIPS32_EF_R19		25
 36#define MIPS32_EF_R20		26
 37#define MIPS32_EF_R21		27
 38#define MIPS32_EF_R22		28
 39#define MIPS32_EF_R23		29
 40#define MIPS32_EF_R24		30
 41#define MIPS32_EF_R25		31
 42
 43/*
 44 * k0/k1 unsaved
 45 */
 46#define MIPS32_EF_R26		32
 47#define MIPS32_EF_R27		33
 48
 49#define MIPS32_EF_R28		34
 50#define MIPS32_EF_R29		35
 51#define MIPS32_EF_R30		36
 52#define MIPS32_EF_R31		37
 53
 54/*
 55 * Saved special registers
 56 */
 57#define MIPS32_EF_LO		38
 58#define MIPS32_EF_HI		39
 59
 60#define MIPS32_EF_CP0_EPC	40
 61#define MIPS32_EF_CP0_BADVADDR	41
 62#define MIPS32_EF_CP0_STATUS	42
 63#define MIPS32_EF_CP0_CAUSE	43
 64#define MIPS32_EF_UNUSED0	44
 65
 66#define MIPS32_EF_SIZE		180
 67
 68#define MIPS64_EF_R0		0
 69#define MIPS64_EF_R1		1
 70#define MIPS64_EF_R2		2
 71#define MIPS64_EF_R3		3
 72#define MIPS64_EF_R4		4
 73#define MIPS64_EF_R5		5
 74#define MIPS64_EF_R6		6
 75#define MIPS64_EF_R7		7
 76#define MIPS64_EF_R8		8
 77#define MIPS64_EF_R9		9
 78#define MIPS64_EF_R10		10
 79#define MIPS64_EF_R11		11
 80#define MIPS64_EF_R12		12
 81#define MIPS64_EF_R13		13
 82#define MIPS64_EF_R14		14
 83#define MIPS64_EF_R15		15
 84#define MIPS64_EF_R16		16
 85#define MIPS64_EF_R17		17
 86#define MIPS64_EF_R18		18
 87#define MIPS64_EF_R19		19
 88#define MIPS64_EF_R20		20
 89#define MIPS64_EF_R21		21
 90#define MIPS64_EF_R22		22
 91#define MIPS64_EF_R23		23
 92#define MIPS64_EF_R24		24
 93#define MIPS64_EF_R25		25
 94
 95/*
 96 * k0/k1 unsaved
 97 */
 98#define MIPS64_EF_R26		26
 99#define MIPS64_EF_R27		27
100
101
102#define MIPS64_EF_R28		28
103#define MIPS64_EF_R29		29
104#define MIPS64_EF_R30		30
105#define MIPS64_EF_R31		31
106
107/*
108 * Saved special registers
109 */
110#define MIPS64_EF_LO		32
111#define MIPS64_EF_HI		33
112
113#define MIPS64_EF_CP0_EPC	34
114#define MIPS64_EF_CP0_BADVADDR	35
115#define MIPS64_EF_CP0_STATUS	36
116#define MIPS64_EF_CP0_CAUSE	37
117
118#define MIPS64_EF_SIZE		304	/* size in bytes */
119
120#if _MIPS_SIM == _MIPS_SIM_ABI32
121
122#define EF_R0			MIPS32_EF_R0
123#define EF_R1			MIPS32_EF_R1
124#define EF_R2			MIPS32_EF_R2
125#define EF_R3			MIPS32_EF_R3
126#define EF_R4			MIPS32_EF_R4
127#define EF_R5			MIPS32_EF_R5
128#define EF_R6			MIPS32_EF_R6
129#define EF_R7			MIPS32_EF_R7
130#define EF_R8			MIPS32_EF_R8
131#define EF_R9			MIPS32_EF_R9
132#define EF_R10			MIPS32_EF_R10
133#define EF_R11			MIPS32_EF_R11
134#define EF_R12			MIPS32_EF_R12
135#define EF_R13			MIPS32_EF_R13
136#define EF_R14			MIPS32_EF_R14
137#define EF_R15			MIPS32_EF_R15
138#define EF_R16			MIPS32_EF_R16
139#define EF_R17			MIPS32_EF_R17
140#define EF_R18			MIPS32_EF_R18
141#define EF_R19			MIPS32_EF_R19
142#define EF_R20			MIPS32_EF_R20
143#define EF_R21			MIPS32_EF_R21
144#define EF_R22			MIPS32_EF_R22
145#define EF_R23			MIPS32_EF_R23
146#define EF_R24			MIPS32_EF_R24
147#define EF_R25			MIPS32_EF_R25
148#define EF_R26			MIPS32_EF_R26
149#define EF_R27			MIPS32_EF_R27
150#define EF_R28			MIPS32_EF_R28
151#define EF_R29			MIPS32_EF_R29
152#define EF_R30			MIPS32_EF_R30
153#define EF_R31			MIPS32_EF_R31
154#define EF_LO			MIPS32_EF_LO
155#define EF_HI			MIPS32_EF_HI
156#define EF_CP0_EPC		MIPS32_EF_CP0_EPC
157#define EF_CP0_BADVADDR		MIPS32_EF_CP0_BADVADDR
158#define EF_CP0_STATUS		MIPS32_EF_CP0_STATUS
159#define EF_CP0_CAUSE		MIPS32_EF_CP0_CAUSE
160#define EF_UNUSED0		MIPS32_EF_UNUSED0
161#define EF_SIZE			MIPS32_EF_SIZE
162
163#elif _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32
164
165#define EF_R0			MIPS64_EF_R0
166#define EF_R1			MIPS64_EF_R1
167#define EF_R2			MIPS64_EF_R2
168#define EF_R3			MIPS64_EF_R3
169#define EF_R4			MIPS64_EF_R4
170#define EF_R5			MIPS64_EF_R5
171#define EF_R6			MIPS64_EF_R6
172#define EF_R7			MIPS64_EF_R7
173#define EF_R8			MIPS64_EF_R8
174#define EF_R9			MIPS64_EF_R9
175#define EF_R10			MIPS64_EF_R10
176#define EF_R11			MIPS64_EF_R11
177#define EF_R12			MIPS64_EF_R12
178#define EF_R13			MIPS64_EF_R13
179#define EF_R14			MIPS64_EF_R14
180#define EF_R15			MIPS64_EF_R15
181#define EF_R16			MIPS64_EF_R16
182#define EF_R17			MIPS64_EF_R17
183#define EF_R18			MIPS64_EF_R18
184#define EF_R19			MIPS64_EF_R19
185#define EF_R20			MIPS64_EF_R20
186#define EF_R21			MIPS64_EF_R21
187#define EF_R22			MIPS64_EF_R22
188#define EF_R23			MIPS64_EF_R23
189#define EF_R24			MIPS64_EF_R24
190#define EF_R25			MIPS64_EF_R25
191#define EF_R26			MIPS64_EF_R26
192#define EF_R27			MIPS64_EF_R27
193#define EF_R28			MIPS64_EF_R28
194#define EF_R29			MIPS64_EF_R29
195#define EF_R30			MIPS64_EF_R30
196#define EF_R31			MIPS64_EF_R31
197#define EF_LO			MIPS64_EF_LO
198#define EF_HI			MIPS64_EF_HI
199#define EF_CP0_EPC		MIPS64_EF_CP0_EPC
200#define EF_CP0_BADVADDR		MIPS64_EF_CP0_BADVADDR
201#define EF_CP0_STATUS		MIPS64_EF_CP0_STATUS
202#define EF_CP0_CAUSE		MIPS64_EF_CP0_CAUSE
203#define EF_SIZE			MIPS64_EF_SIZE
204
205#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32 */
206
207#endif /* __UAPI_ASM_MIPS_REG_H */