OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gdb-6.8/] [pre-binutils-2.20.1-sync/] [gdb/] [mips-tdep.h] - Diff between revs 157 and 223

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 157 Rev 223
/* Target-dependent header for the MIPS architecture, for GDB, the GNU Debugger.
/* Target-dependent header for the MIPS architecture, for GDB, the GNU Debugger.
 
 
   Copyright (C) 2002, 2003, 2007, 2008 Free Software Foundation, Inc.
   Copyright (C) 2002, 2003, 2007, 2008 Free Software Foundation, Inc.
 
 
   This file is part of GDB.
   This file is part of GDB.
 
 
   This program is free software; you can redistribute it and/or modify
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.
   (at your option) any later version.
 
 
   This program is distributed in the hope that it will be useful,
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
   GNU General Public License for more details.
 
 
   You should have received a copy of the GNU General Public License
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
#ifndef MIPS_TDEP_H
#ifndef MIPS_TDEP_H
#define MIPS_TDEP_H
#define MIPS_TDEP_H
 
 
struct gdbarch;
struct gdbarch;
 
 
/* All the possible MIPS ABIs. */
/* All the possible MIPS ABIs. */
enum mips_abi
enum mips_abi
  {
  {
    MIPS_ABI_UNKNOWN = 0,
    MIPS_ABI_UNKNOWN = 0,
    MIPS_ABI_N32,
    MIPS_ABI_N32,
    MIPS_ABI_O32,
    MIPS_ABI_O32,
    MIPS_ABI_N64,
    MIPS_ABI_N64,
    MIPS_ABI_O64,
    MIPS_ABI_O64,
    MIPS_ABI_EABI32,
    MIPS_ABI_EABI32,
    MIPS_ABI_EABI64,
    MIPS_ABI_EABI64,
    MIPS_ABI_LAST
    MIPS_ABI_LAST
  };
  };
 
 
/* Return the MIPS ABI associated with GDBARCH.  */
/* Return the MIPS ABI associated with GDBARCH.  */
enum mips_abi mips_abi (struct gdbarch *gdbarch);
enum mips_abi mips_abi (struct gdbarch *gdbarch);
 
 
/* Return the MIPS ISA's register size.  Just a short cut to the BFD
/* Return the MIPS ISA's register size.  Just a short cut to the BFD
   architecture's word size.  */
   architecture's word size.  */
extern int mips_isa_regsize (struct gdbarch *gdbarch);
extern int mips_isa_regsize (struct gdbarch *gdbarch);
 
 
/* Return the current index for various MIPS registers.  */
/* Return the current index for various MIPS registers.  */
struct mips_regnum
struct mips_regnum
{
{
  int pc;
  int pc;
  int fp0;
  int fp0;
  int fp_implementation_revision;
  int fp_implementation_revision;
  int fp_control_status;
  int fp_control_status;
  int badvaddr;         /* Bad vaddr for addressing exception.  */
  int badvaddr;         /* Bad vaddr for addressing exception.  */
  int cause;            /* Describes last exception.  */
  int cause;            /* Describes last exception.  */
  int hi;               /* Multiply/divide temp.  */
  int hi;               /* Multiply/divide temp.  */
  int lo;               /* ...  */
  int lo;               /* ...  */
};
};
extern const struct mips_regnum *mips_regnum (struct gdbarch *gdbarch);
extern const struct mips_regnum *mips_regnum (struct gdbarch *gdbarch);
 
 
/* Register numbers of various important registers.  */
/* Register numbers of various important registers.  */
 
 
enum
enum
{
{
  MIPS_ZERO_REGNUM = 0,          /* Read-only register, always 0.  */
  MIPS_ZERO_REGNUM = 0,          /* Read-only register, always 0.  */
  MIPS_AT_REGNUM = 1,
  MIPS_AT_REGNUM = 1,
  MIPS_V0_REGNUM = 2,           /* Function integer return value.  */
  MIPS_V0_REGNUM = 2,           /* Function integer return value.  */
  MIPS_A0_REGNUM = 4,           /* Loc of first arg during a subr call */
  MIPS_A0_REGNUM = 4,           /* Loc of first arg during a subr call */
  MIPS_T9_REGNUM = 25,          /* Contains address of callee in PIC.  */
  MIPS_T9_REGNUM = 25,          /* Contains address of callee in PIC.  */
  MIPS_SP_REGNUM = 29,
  MIPS_SP_REGNUM = 29,
  MIPS_RA_REGNUM = 31,
  MIPS_RA_REGNUM = 31,
  MIPS_PS_REGNUM = 32,          /* Contains processor status.  */
  MIPS_PS_REGNUM = 32,          /* Contains processor status.  */
  MIPS_EMBED_LO_REGNUM = 33,
  MIPS_EMBED_LO_REGNUM = 33,
  MIPS_EMBED_HI_REGNUM = 34,
  MIPS_EMBED_HI_REGNUM = 34,
  MIPS_EMBED_BADVADDR_REGNUM = 35,
  MIPS_EMBED_BADVADDR_REGNUM = 35,
  MIPS_EMBED_CAUSE_REGNUM = 36,
  MIPS_EMBED_CAUSE_REGNUM = 36,
  MIPS_EMBED_PC_REGNUM = 37,
  MIPS_EMBED_PC_REGNUM = 37,
  MIPS_EMBED_FP0_REGNUM = 38,
  MIPS_EMBED_FP0_REGNUM = 38,
  MIPS_UNUSED_REGNUM = 73,      /* Never used, FIXME */
  MIPS_UNUSED_REGNUM = 73,      /* Never used, FIXME */
  MIPS_FIRST_EMBED_REGNUM = 74, /* First CP0 register for embedded use.  */
  MIPS_FIRST_EMBED_REGNUM = 74, /* First CP0 register for embedded use.  */
  MIPS_PRID_REGNUM = 89,        /* Processor ID.  */
  MIPS_PRID_REGNUM = 89,        /* Processor ID.  */
  MIPS_LAST_EMBED_REGNUM = 89   /* Last one.  */
  MIPS_LAST_EMBED_REGNUM = 89   /* Last one.  */
};
};
 
 
/* Defined in mips-tdep.c and used in remote-mips.c */
/* Defined in mips-tdep.c and used in remote-mips.c */
extern void deprecated_mips_set_processor_regs_hack (void);
extern void deprecated_mips_set_processor_regs_hack (void);
 
 
/* Instruction sizes and other useful constants.  */
/* Instruction sizes and other useful constants.  */
enum
enum
{
{
  MIPS_INSN16_SIZE = 2,
  MIPS_INSN16_SIZE = 2,
  MIPS_INSN32_SIZE = 4,
  MIPS_INSN32_SIZE = 4,
  /* The number of floating-point or integer registers.  */
  /* The number of floating-point or integer registers.  */
  MIPS_NUMREGS = 32
  MIPS_NUMREGS = 32
};
};
 
 
/* Single step based on where the current instruction will take us.  */
/* Single step based on where the current instruction will take us.  */
extern int mips_software_single_step (struct frame_info *frame);
extern int mips_software_single_step (struct frame_info *frame);
 
 
/* Tell if the program counter value in MEMADDR is in a MIPS16
/* Tell if the program counter value in MEMADDR is in a MIPS16
   function.  */
   function.  */
extern int mips_pc_is_mips16 (bfd_vma memaddr);
extern int mips_pc_is_mips16 (bfd_vma memaddr);
 
 
/* Return the currently configured (or set) saved register size. */
/* Return the currently configured (or set) saved register size. */
extern unsigned int mips_abi_regsize (struct gdbarch *gdbarch);
extern unsigned int mips_abi_regsize (struct gdbarch *gdbarch);
 
 
/* Target descriptions which only indicate the size of general
/* Target descriptions which only indicate the size of general
   registers.  */
   registers.  */
extern struct target_desc *mips_tdesc_gp32;
extern struct target_desc *mips_tdesc_gp32;
extern struct target_desc *mips_tdesc_gp64;
extern struct target_desc *mips_tdesc_gp64;
 
 
#endif /* MIPS_TDEP_H */
#endif /* MIPS_TDEP_H */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.