1*b725ae77Skettenis /* Target-dependent header for the MIPS architecture, for GDB, the GNU Debugger. 2*b725ae77Skettenis 3*b725ae77Skettenis Copyright 2002, 2003 Free Software Foundation, Inc. 4*b725ae77Skettenis 5*b725ae77Skettenis This file is part of GDB. 6*b725ae77Skettenis 7*b725ae77Skettenis This program is free software; you can redistribute it and/or modify 8*b725ae77Skettenis it under the terms of the GNU General Public License as published by 9*b725ae77Skettenis the Free Software Foundation; either version 2 of the License, or 10*b725ae77Skettenis (at your option) any later version. 11*b725ae77Skettenis 12*b725ae77Skettenis This program is distributed in the hope that it will be useful, 13*b725ae77Skettenis but WITHOUT ANY WARRANTY; without even the implied warranty of 14*b725ae77Skettenis MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*b725ae77Skettenis GNU General Public License for more details. 16*b725ae77Skettenis 17*b725ae77Skettenis You should have received a copy of the GNU General Public License 18*b725ae77Skettenis along with this program; if not, write to the Free Software 19*b725ae77Skettenis Foundation, Inc., 59 Temple Place - Suite 330, 20*b725ae77Skettenis Boston, MA 02111-1307, USA. */ 21*b725ae77Skettenis 22*b725ae77Skettenis #ifndef MIPS_TDEP_H 23*b725ae77Skettenis #define MIPS_TDEP_H 24*b725ae77Skettenis 25*b725ae77Skettenis struct gdbarch; 26*b725ae77Skettenis 27*b725ae77Skettenis /* All the possible MIPS ABIs. */ 28*b725ae77Skettenis enum mips_abi 29*b725ae77Skettenis { 30*b725ae77Skettenis MIPS_ABI_UNKNOWN = 0, 31*b725ae77Skettenis MIPS_ABI_N32, 32*b725ae77Skettenis MIPS_ABI_O32, 33*b725ae77Skettenis MIPS_ABI_N64, 34*b725ae77Skettenis MIPS_ABI_O64, 35*b725ae77Skettenis MIPS_ABI_EABI32, 36*b725ae77Skettenis MIPS_ABI_EABI64, 37*b725ae77Skettenis MIPS_ABI_LAST 38*b725ae77Skettenis }; 39*b725ae77Skettenis 40*b725ae77Skettenis /* Return the MIPS ABI associated with GDBARCH. */ 41*b725ae77Skettenis enum mips_abi mips_abi (struct gdbarch *gdbarch); 42*b725ae77Skettenis 43*b725ae77Skettenis /* For wince :-(. */ 44*b725ae77Skettenis extern CORE_ADDR mips_next_pc (CORE_ADDR pc); 45*b725ae77Skettenis 46*b725ae77Skettenis /* Return the "MIPS" register size. Just a short cut to the BFD 47*b725ae77Skettenis architecture's word size. */ 48*b725ae77Skettenis extern int mips_regsize (struct gdbarch *gdbarch); 49*b725ae77Skettenis 50*b725ae77Skettenis /* Return the current index for various MIPS registers. */ 51*b725ae77Skettenis struct mips_regnum 52*b725ae77Skettenis { 53*b725ae77Skettenis int pc; 54*b725ae77Skettenis int fp0; 55*b725ae77Skettenis int fp_implementation_revision; 56*b725ae77Skettenis int fp_control_status; 57*b725ae77Skettenis int badvaddr; /* Bad vaddr for addressing exception. */ 58*b725ae77Skettenis int cause; /* Describes last exception. */ 59*b725ae77Skettenis int hi; /* Multiply/divide temp. */ 60*b725ae77Skettenis int lo; /* ... */ 61*b725ae77Skettenis }; 62*b725ae77Skettenis extern const struct mips_regnum *mips_regnum (struct gdbarch *gdbarch); 63*b725ae77Skettenis 64*b725ae77Skettenis enum { 65*b725ae77Skettenis MIPS_EMBED_LO_REGNUM = 33, 66*b725ae77Skettenis MIPS_EMBED_HI_REGNUM = 34, 67*b725ae77Skettenis MIPS_EMBED_BADVADDR_REGNUM = 35, 68*b725ae77Skettenis MIPS_EMBED_CAUSE_REGNUM = 36, 69*b725ae77Skettenis MIPS_EMBED_PC_REGNUM = 37, 70*b725ae77Skettenis MIPS_EMBED_FP0_REGNUM = 38 71*b725ae77Skettenis }; 72*b725ae77Skettenis 73*b725ae77Skettenis /* Defined in mips-tdep.c and used in remote-mips.c */ 74*b725ae77Skettenis extern void deprecated_mips_set_processor_regs_hack (void); 75*b725ae77Skettenis 76*b725ae77Skettenis 77*b725ae77Skettenis #endif /* MIPS_TDEP_H */ 78