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