gdb/testsuite/
[deliverable/binutils-gdb.git] / gdb / mips-linux-tdep.h
CommitLineData
d37eb719
DJ
1/* Target-dependent code for GNU/Linux on MIPS processors.
2
0b302171 3 Copyright 2006-2012 Free Software Foundation, Inc.
d37eb719
DJ
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
d37eb719
DJ
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
d37eb719
DJ
19
20/* Copied from <asm/elf.h>. */
21#define ELF_NGREG 45
22#define ELF_NFPREG 33
23
24typedef unsigned char mips_elf_greg_t[4];
25typedef mips_elf_greg_t mips_elf_gregset_t[ELF_NGREG];
26
27typedef unsigned char mips_elf_fpreg_t[8];
28typedef mips_elf_fpreg_t mips_elf_fpregset_t[ELF_NFPREG];
29
30/* 0 - 31 are integer registers, 32 - 63 are fp registers. */
dc29a156
MR
31#define FPR_BASE 32
32#define PC 64
33#define CAUSE 65
34#define BADVADDR 66
35#define MMHI 67
36#define MMLO 68
37#define FPC_CSR 69
38#define FPC_EIR 70
1faeff08
MR
39#define DSP_BASE 71
40#define DSP_CONTROL 77
d37eb719
DJ
41
42#define EF_REG0 6
43#define EF_REG31 37
44#define EF_LO 38
45#define EF_HI 39
46#define EF_CP0_EPC 40
47#define EF_CP0_BADVADDR 41
48#define EF_CP0_STATUS 42
49#define EF_CP0_CAUSE 43
50
51#define EF_SIZE 180
52
28f5035f
UW
53void mips_supply_gregset (struct regcache *, const mips_elf_gregset_t *);
54void mips_fill_gregset (const struct regcache *, mips_elf_gregset_t *, int);
55void mips_supply_fpregset (struct regcache *, const mips_elf_fpregset_t *);
56void mips_fill_fpregset (const struct regcache *, mips_elf_fpregset_t *, int);
d37eb719
DJ
57
58/* 64-bit support. */
59
60/* Copied from <asm/elf.h>. */
61#define MIPS64_ELF_NGREG 45
62#define MIPS64_ELF_NFPREG 33
63
64typedef unsigned char mips64_elf_greg_t[8];
65typedef mips64_elf_greg_t mips64_elf_gregset_t[MIPS64_ELF_NGREG];
66
67typedef unsigned char mips64_elf_fpreg_t[8];
68typedef mips64_elf_fpreg_t mips64_elf_fpregset_t[MIPS64_ELF_NFPREG];
69
70/* 0 - 31 are integer registers, 32 - 63 are fp registers. */
71#define MIPS64_FPR_BASE 32
72#define MIPS64_PC 64
73#define MIPS64_CAUSE 65
74#define MIPS64_BADVADDR 66
75#define MIPS64_MMHI 67
76#define MIPS64_MMLO 68
77#define MIPS64_FPC_CSR 69
78#define MIPS64_FPC_EIR 70
79
80#define MIPS64_EF_REG0 0
81#define MIPS64_EF_REG31 31
82#define MIPS64_EF_LO 32
83#define MIPS64_EF_HI 33
84#define MIPS64_EF_CP0_EPC 34
85#define MIPS64_EF_CP0_BADVADDR 35
86#define MIPS64_EF_CP0_STATUS 36
87#define MIPS64_EF_CP0_CAUSE 37
88
89#define MIPS64_EF_SIZE 304
90
28f5035f 91void mips64_supply_gregset (struct regcache *, const mips64_elf_gregset_t *);
025bb325
MS
92void mips64_fill_gregset (const struct regcache *,
93 mips64_elf_gregset_t *, int);
94void mips64_supply_fpregset (struct regcache *,
95 const mips64_elf_fpregset_t *);
96void mips64_fill_fpregset (const struct regcache *,
97 mips64_elf_fpregset_t *, int);
822b6570
DJ
98
99enum {
100 /* The Linux kernel stores an error code from any interrupted
101 syscall in a "register" (in $0's save slot). */
1faeff08 102 MIPS_RESTART_REGNUM = 79
822b6570
DJ
103};
104
105/* Return 1 if MIPS_RESTART_REGNUM is usable. */
106
107int mips_linux_restart_reg_p (struct gdbarch *gdbarch);
232b8704
ME
108
109/* MIPS Signals -- adapted from linux/arch/mips/include/asm/signal.h. */
110
111enum mips_signals
112 {
113 MIPS_SIGHUP = 1, /* Hangup (POSIX). */
114 MIPS_SIGINT = 2, /* Interrupt (ANSI). */
115 MIPS_SIGQUIT = 3, /* Quit (POSIX). */
116 MIPS_SIGILL = 4, /* Illegal instruction (ANSI). */
117 MIPS_SIGTRAP = 5, /* Trace trap (POSIX). */
118 MIPS_SIGIOT = 6, /* IOT trap (4.2 BSD). */
119 MIPS_SIGABRT = MIPS_SIGIOT, /* Abort (ANSI). */
120 MIPS_SIGEMT = 7,
121 MIPS_SIGFPE = 8, /* Floating-point exception (ANSI). */
122 MIPS_SIGKILL = 9, /* Kill, unblockable (POSIX). */
123 MIPS_SIGBUS = 10, /* BUS error (4.2 BSD). */
124 MIPS_SIGSEGV = 11, /* Segmentation violation (ANSI). */
125 MIPS_SIGSYS = 12,
126 MIPS_SIGPIPE = 13, /* Broken pipe (POSIX). */
127 MIPS_SIGALRM = 14, /* Alarm clock (POSIX). */
128 MIPS_SIGTERM = 15, /* Termination (ANSI). */
129 MIPS_SIGUSR1 = 16, /* User-defined signal 1 (POSIX). */
130 MIPS_SIGUSR2 = 17, /* User-defined signal 2 (POSIX). */
131 MIPS_SIGCHLD = 18, /* Child status has changed (POSIX). */
132 MIPS_SIGCLD = MIPS_SIGCHLD, /* Same as SIGCHLD (System V). */
133 MIPS_SIGPWR = 19, /* Power failure restart (System V). */
134 MIPS_SIGWINCH = 20, /* Window size change (4.3 BSD, Sun). */
135 MIPS_SIGURG = 21, /* Urgent condition on socket (4.2 BSD). */
136 MIPS_SIGIO = 22, /* I/O now possible (4.2 BSD). */
137 MIPS_SIGPOLL = MIPS_SIGIO, /* Pollable event occurred (System V). */
138 MIPS_SIGSTOP = 23, /* Stop, unblockable (POSIX). */
139 MIPS_SIGTSTP = 24, /* Keyboard stop (POSIX). */
140 MIPS_SIGCONT = 25, /* Continue (POSIX). */
141 MIPS_SIGTTIN = 26, /* Background read from tty (POSIX). */
142 MIPS_SIGTTOU = 27, /* Background write to tty (POSIX). */
143 MIPS_SIGVTALRM = 28, /* Virtual alarm clock (4.2 BSD). */
144 MIPS_SIGPROF = 29, /* Profiling alarm clock (4.2 BSD). */
145 MIPS_SIGXCPU = 30, /* CPU limit exceeded (4.2 BSD). */
146 MIPS_SIGXFSZ = 31, /* File size limit exceeded (4.2 BSD). */
147 MIPS_SIGRTMIN = 32, /* Minimum RT signal. */
148 MIPS_SIGRTMAX = 128 - 1 /* Maximum RT signal. */
149 };
This page took 0.525847 seconds and 4 git commands to generate.