Move shared umount.c from hppa to mips.
[jlayton/glibc.git] / ports / sysdeps / unix / sysv / linux / mips / sys / user.h
1 /* Copyright (C) 2002-2014 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
8
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
13
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library.  If not, see
16    <http://www.gnu.org/licenses/>.  */
17
18 #ifndef _SYS_USER_H
19 #define _SYS_USER_H     1
20
21 #include <sgidefs.h>
22
23 /* The whole purpose of this file is for GDB and GDB only.  Don't read
24    too much into it.  Don't use it for anything other than GDB unless
25    you know what you are doing.  */
26
27 /* #include <asm/reg.h> */
28 /* Instead of including the kernel header, that will vary depending on
29    whether the 32- or the 64-bit kernel is installed, we paste its
30    contents here.  Note that the fact that the file is inline here,
31    instead of included separately, doesn't change in any way the
32    licensing status of a program that includes user.h.  Since this is
33    for gdb alone, and gdb is GPLed, no surprises here.  */
34 #if _MIPS_SIM == _ABIO32
35 /*
36  * Various register offset definitions for debuggers, core file
37  * examiners and whatnot.
38  *
39  * This file is subject to the terms and conditions of the GNU General Public
40  * License.  See the file "COPYING" in the main directory of this archive
41  * for more details.
42  *
43  * Copyright (C) 1995, 1999 by Ralf Baechle
44  */
45 #ifndef __ASM_MIPS_REG_H
46 #define __ASM_MIPS_REG_H
47
48 /*
49  * This defines/structures correspond to the register layout on stack -
50  * if the order here is changed, it needs to be updated in
51  * include/asm-mips/stackframe.h
52  */
53 #define EF_REG0                 6
54 #define EF_REG1                 7
55 #define EF_REG2                 8
56 #define EF_REG3                 9
57 #define EF_REG4                 10
58 #define EF_REG5                 11
59 #define EF_REG6                 12
60 #define EF_REG7                 13
61 #define EF_REG8                 14
62 #define EF_REG9                 15
63 #define EF_REG10                16
64 #define EF_REG11                17
65 #define EF_REG12                18
66 #define EF_REG13                19
67 #define EF_REG14                20
68 #define EF_REG15                21
69 #define EF_REG16                22
70 #define EF_REG17                23
71 #define EF_REG18                24
72 #define EF_REG19                25
73 #define EF_REG20                26
74 #define EF_REG21                27
75 #define EF_REG22                28
76 #define EF_REG23                29
77 #define EF_REG24                30
78 #define EF_REG25                31
79 /*
80  * k0/k1 unsaved
81  */
82 #define EF_REG28                34
83 #define EF_REG29                35
84 #define EF_REG30                36
85 #define EF_REG31                37
86
87 /*
88  * Saved special registers
89  */
90 #define EF_LO                   38
91 #define EF_HI                   39
92
93 #define EF_CP0_EPC              40
94 #define EF_CP0_BADVADDR         41
95 #define EF_CP0_STATUS           42
96 #define EF_CP0_CAUSE            43
97
98 #define EF_SIZE                 180     /* size in bytes */
99
100 #endif /* __ASM_MIPS_REG_H */
101
102 #else /* _MIPS_SIM != _ABIO32 */
103
104 /*
105  * Various register offset definitions for debuggers, core file
106  * examiners and whatnot.
107  *
108  * This file is subject to the terms and conditions of the GNU General Public
109  * License.  See the file "COPYING" in the main directory of this archive
110  * for more details.
111  *
112  * Copyright (C) 1995, 1999 Ralf Baechle
113  * Copyright (C) 1995, 1999 Silicon Graphics
114  */
115 #ifndef _ASM_REG_H
116 #define _ASM_REG_H
117
118 /*
119  * This defines/structures correspond to the register layout on stack -
120  * if the order here is changed, it needs to be updated in
121  * include/asm-mips/stackframe.h
122  */
123 #define EF_REG0                  0
124 #define EF_REG1                  1
125 #define EF_REG2                  2
126 #define EF_REG3                  3
127 #define EF_REG4                  4
128 #define EF_REG5                  5
129 #define EF_REG6                  6
130 #define EF_REG7                  7
131 #define EF_REG8                  8
132 #define EF_REG9                  9
133 #define EF_REG10                10
134 #define EF_REG11                11
135 #define EF_REG12                12
136 #define EF_REG13                13
137 #define EF_REG14                14
138 #define EF_REG15                15
139 #define EF_REG16                16
140 #define EF_REG17                17
141 #define EF_REG18                18
142 #define EF_REG19                19
143 #define EF_REG20                20
144 #define EF_REG21                21
145 #define EF_REG22                22
146 #define EF_REG23                23
147 #define EF_REG24                24
148 #define EF_REG25                25
149 /*
150  * k0/k1 unsaved
151  */
152 #define EF_REG28                28
153 #define EF_REG29                29
154 #define EF_REG30                30
155 #define EF_REG31                31
156
157 /*
158  * Saved special registers
159  */
160 #define EF_LO                   32
161 #define EF_HI                   33
162
163 #define EF_CP0_EPC              34
164 #define EF_CP0_BADVADDR         35
165 #define EF_CP0_STATUS           36
166 #define EF_CP0_CAUSE            37
167
168 #define EF_SIZE                 304     /* size in bytes */
169
170 #endif /* _ASM_REG_H */
171
172 #endif /* _MIPS_SIM != _ABIO32 */
173
174 #if _MIPS_SIM == _ABIO32
175
176 struct user
177 {
178   unsigned long regs[EF_SIZE/4+64];     /* integer and fp regs */
179   size_t        u_tsize;                /* text size (pages) */
180   size_t        u_dsize;                /* data size (pages) */
181   size_t        u_ssize;                /* stack size (pages) */
182   unsigned long start_code;             /* text starting address */
183   unsigned long start_data;             /* data starting address */
184   unsigned long start_stack;            /* stack starting address */
185   long int      signal;                 /* signal causing core dump */
186   void*         u_ar0;                  /* help gdb find registers */
187   unsigned long magic;                  /* identifies a core file */
188   char          u_comm[32];             /* user command name */
189 };
190
191 #else
192
193 struct user {
194   __extension__ unsigned long   regs[EF_SIZE/8+64]; /* integer and fp regs */
195   __extension__ unsigned long   u_tsize;        /* text size (pages) */
196   __extension__ unsigned long   u_dsize;        /* data size (pages) */
197   __extension__ unsigned long   u_ssize;        /* stack size (pages) */
198   __extension__ unsigned long long start_code;  /* text starting address */
199   __extension__ unsigned long long start_data;  /* data starting address */
200   __extension__ unsigned long long start_stack; /* stack starting address */
201   __extension__ long long       signal;         /* signal causing core dump */
202   __extension__ unsigned long long u_ar0;       /* help gdb find registers */
203   __extension__ unsigned long long magic;       /* identifies a core file */
204   char          u_comm[32];             /* user command name */
205 };
206
207 #endif
208
209 #define PAGE_SHIFT              12
210 #define PAGE_SIZE               (1UL << PAGE_SHIFT)
211 #define PAGE_MASK               (~(PAGE_SIZE-1))
212 #define NBPG                    PAGE_SIZE
213 #define UPAGES                  1
214 #define HOST_TEXT_START_ADDR    (u.start_code)
215 #define HOST_DATA_START_ADDR    (u.start_data)
216 #define HOST_STACK_END_ADDR     (u.start_stack + u.u_ssize * NBPG)
217
218 #endif  /* _SYS_USER_H */