]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/mips-tdep.h
* inferior.h (read_sp): Remove prototype.
[thirdparty/binutils-gdb.git] / gdb / mips-tdep.h
CommitLineData
d1973055
KB
1/* Target-dependent header for the MIPS architecture, for GDB, the GNU Debugger.
2
6aba47ca 3 Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
d1973055
KB
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
9 the Free Software Foundation; either version 2 of the License, or
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
18 along with this program; if not, write to the Free Software
197e01b6
EZ
19 Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 Boston, MA 02110-1301, USA. */
d1973055
KB
21
22#ifndef MIPS_TDEP_H
23#define MIPS_TDEP_H
24
da3331ec
AC
25struct gdbarch;
26
d1973055
KB
27/* All the possible MIPS ABIs. */
28enum mips_abi
29 {
30 MIPS_ABI_UNKNOWN = 0,
31 MIPS_ABI_N32,
32 MIPS_ABI_O32,
33 MIPS_ABI_N64,
34 MIPS_ABI_O64,
35 MIPS_ABI_EABI32,
36 MIPS_ABI_EABI64,
37 MIPS_ABI_LAST
38 };
39
40/* Return the MIPS ABI associated with GDBARCH. */
41enum mips_abi mips_abi (struct gdbarch *gdbarch);
42
1b13c4f6 43/* Return the MIPS ISA's register size. Just a short cut to the BFD
4246e332 44 architecture's word size. */
1b13c4f6 45extern int mips_isa_regsize (struct gdbarch *gdbarch);
4246e332 46
56cea623
AC
47/* Return the current index for various MIPS registers. */
48struct mips_regnum
49{
50 int pc;
51 int fp0;
52 int fp_implementation_revision;
53 int fp_control_status;
54 int badvaddr; /* Bad vaddr for addressing exception. */
55 int cause; /* Describes last exception. */
56 int hi; /* Multiply/divide temp. */
57 int lo; /* ... */
58};
59extern const struct mips_regnum *mips_regnum (struct gdbarch *gdbarch);
60
613e114f
AC
61/* Register numbers of various important registers. Note that some of
62 these values are "real" register numbers, and correspond to the
63 general registers of the machine, and some are "phony" register
64 numbers which are too large to be actual register numbers as far as
65 the user is concerned but do serve to get the desired values when
66 passed to read_register. */
67
9c46b6f0
MK
68enum
69{
613e114f 70 MIPS_ZERO_REGNUM = 0, /* Read-only register, always 0. */
9c46b6f0 71 MIPS_AT_REGNUM = 1,
613e114f
AC
72 MIPS_V0_REGNUM = 2, /* Function integer return value. */
73 MIPS_A0_REGNUM = 4, /* Loc of first arg during a subr call */
74 MIPS_T9_REGNUM = 25, /* Contains address of callee in PIC. */
f10683bb 75 MIPS_SP_REGNUM = 29,
9c46b6f0 76 MIPS_RA_REGNUM = 31,
24e05951 77 MIPS_PS_REGNUM = 32, /* Contains processor status. */
56cea623
AC
78 MIPS_EMBED_LO_REGNUM = 33,
79 MIPS_EMBED_HI_REGNUM = 34,
80 MIPS_EMBED_BADVADDR_REGNUM = 35,
81 MIPS_EMBED_CAUSE_REGNUM = 36,
82 MIPS_EMBED_PC_REGNUM = 37,
613e114f 83 MIPS_EMBED_FP0_REGNUM = 38,
607fc93c
AC
84 MIPS_UNUSED_REGNUM = 73, /* Never used, FIXME */
85 MIPS_FIRST_EMBED_REGNUM = 74, /* First CP0 register for embedded use. */
a5c9623c 86 MIPS_PRID_REGNUM = 89, /* Processor ID. */
607fc93c 87 MIPS_LAST_EMBED_REGNUM = 89 /* Last one. */
56cea623
AC
88};
89
691c0433
AC
90/* Defined in mips-tdep.c and used in remote-mips.c */
91extern void deprecated_mips_set_processor_regs_hack (void);
92
95ac2dcf
AC
93/* Instruction sizes and other useful constants. */
94enum
9c46b6f0 95{
95ac2dcf
AC
96 MIPS_INSN16_SIZE = 2,
97 MIPS_INSN32_SIZE = 4,
98 /* The number of floating-point or integer registers. */
99 MIPS_NUMREGS = 32
9c46b6f0
MK
100};
101
0d0266c6 102/* Single step based on where the current instruction will take us. */
e0cd558a 103extern int mips_software_single_step (struct regcache *regcache);
691c0433 104
0fe7e7c8
AC
105/* Tell if the program counter value in MEMADDR is in a MIPS16
106 function. */
107extern int mips_pc_is_mips16 (bfd_vma memaddr);
108
e6bc2e8a
AC
109/* Return the currently configured (or set) saved register size. */
110extern unsigned int mips_abi_regsize (struct gdbarch *gdbarch);
111
d1973055 112#endif /* MIPS_TDEP_H */