0b1b3e423a
FRAME argument. * gdbarch.c, gdbarch.h: Regenerate. * infrun.c (resume): Pass current frame to SOFTWARE_SINGLE_STEP. * alpha-tdep.c (alpha_next_pc): Add FRAME argument. Retrieve registers from FRAME instead of using read_register. (alpha_software_single_step): Replace REGCACHE by FRAME. Pass FRAME to alpha_next_pc. Use get_frame_pc instead of read_pc. * alpha-tdep.h (alpha_software_single_step): Replace REGCACHE argument by FRAME. * arm-tdep.c (shifted_reg_val): Add FRAME argument. Read registers from FRAME instead of using read_register. (thumb_get_next_pc): Likewise. (arm_get_next_pc): Likewise. (arm_software_single_step): Replace REGCACHE by FRAME. Pass FRAME to arm_get_next_pc. Use get_frame_pc instead of read_register. * arm-tdep.h (arm_software_single_step): Replace REGCACHE argument by FRAME. * cris-tdep.c (find_step_target): Add FRAME argument. Read registers from FRAME instead of using read_register. (cris_software_single_step): Replace REGCACHE by FRAME. Pass FRAME to find_step_target. * mips-tdep.c (mips32_next_pc): Add FRAME argument. Read registers from FRAME instead of using read_register / read_signed_register. (extended_mips16_next_pc): Likewise. (mips16_next_pc): Likewise. (mips_next_pc): Likewise. (mips_software_single_step): Replace REGCACHE by FRAME. Pass FRAME to mips_next_pc. Use get_frame_pc instead of read_pc. * mips-tdep.h (mips_software_single_step): Replace REGCACHE argument by FRAME. * rs6000-tdep.c (branch_dest): Add FRAME argument. Use it instead of current frame. Read registers from FRAME. (deal_with_atomic_sequence): Add FRAME argument. Pass it to branch_dest. Use get_frame_pc instead of read_pc. (rs6000_software_single_step): Likewise. (bl_to_blrl_insn_p): Do not call branch_dest. * rs6000-tdep.h (rs6000_software_single_step): Replace REGCACHE argument by FRAME. * sparc64-linux-tdep.c (sparc64_linux_step_trap): Add FRAME argument. Read registers from FRAME instead of current regcache. * sparc-linux-tdep.c (sparc32_linux_step_trap): Likewise. * sparcnbsd-tdep.c (sparcnbsd_step_trap): Likewise. * sparc-tdep.c (sparc_address_from_register): Remove. (sparc_analyze_control_transfer): Pass FRAME argument instead of GDBARCH. Pass FRAME to step_trap callback. (sparc_step_trap): Add FRAME argument. (space_software_single_step): Replace REGCACHE by FRAME. Pass FRAME to sparc_analyze_control_transfer. Read registers from FRAME instead of calling sparc_address_from_register. * sparc-tdep.h (struct gdbarch_tdep): Add FRAME argument to step_trap callback. (sparc_address_from_register): Remove prototype. (sparc_software_single_step): Replace REGCACHE argument by FRAME. (sparcnbsd_step_trap): Add FRAME argument. * spu-tdep.c (spu_software_single_step): Replace REGCACHE argument by FRAME. Read registers from FRAME instead of REGCACHE.
108 lines
3.3 KiB
C
108 lines
3.3 KiB
C
/* Target-dependent header for the MIPS architecture, for GDB, the GNU Debugger.
|
|
|
|
Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
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
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA. */
|
|
|
|
#ifndef MIPS_TDEP_H
|
|
#define MIPS_TDEP_H
|
|
|
|
struct gdbarch;
|
|
|
|
/* All the possible MIPS ABIs. */
|
|
enum mips_abi
|
|
{
|
|
MIPS_ABI_UNKNOWN = 0,
|
|
MIPS_ABI_N32,
|
|
MIPS_ABI_O32,
|
|
MIPS_ABI_N64,
|
|
MIPS_ABI_O64,
|
|
MIPS_ABI_EABI32,
|
|
MIPS_ABI_EABI64,
|
|
MIPS_ABI_LAST
|
|
};
|
|
|
|
/* Return the MIPS ABI associated with GDBARCH. */
|
|
enum mips_abi mips_abi (struct gdbarch *gdbarch);
|
|
|
|
/* Return the MIPS ISA's register size. Just a short cut to the BFD
|
|
architecture's word size. */
|
|
extern int mips_isa_regsize (struct gdbarch *gdbarch);
|
|
|
|
/* Return the current index for various MIPS registers. */
|
|
struct mips_regnum
|
|
{
|
|
int pc;
|
|
int fp0;
|
|
int fp_implementation_revision;
|
|
int fp_control_status;
|
|
int badvaddr; /* Bad vaddr for addressing exception. */
|
|
int cause; /* Describes last exception. */
|
|
int hi; /* Multiply/divide temp. */
|
|
int lo; /* ... */
|
|
};
|
|
extern const struct mips_regnum *mips_regnum (struct gdbarch *gdbarch);
|
|
|
|
/* Register numbers of various important registers. */
|
|
|
|
enum
|
|
{
|
|
MIPS_ZERO_REGNUM = 0, /* Read-only register, always 0. */
|
|
MIPS_AT_REGNUM = 1,
|
|
MIPS_V0_REGNUM = 2, /* Function integer return value. */
|
|
MIPS_A0_REGNUM = 4, /* Loc of first arg during a subr call */
|
|
MIPS_T9_REGNUM = 25, /* Contains address of callee in PIC. */
|
|
MIPS_SP_REGNUM = 29,
|
|
MIPS_RA_REGNUM = 31,
|
|
MIPS_PS_REGNUM = 32, /* Contains processor status. */
|
|
MIPS_EMBED_LO_REGNUM = 33,
|
|
MIPS_EMBED_HI_REGNUM = 34,
|
|
MIPS_EMBED_BADVADDR_REGNUM = 35,
|
|
MIPS_EMBED_CAUSE_REGNUM = 36,
|
|
MIPS_EMBED_PC_REGNUM = 37,
|
|
MIPS_EMBED_FP0_REGNUM = 38,
|
|
MIPS_UNUSED_REGNUM = 73, /* Never used, FIXME */
|
|
MIPS_FIRST_EMBED_REGNUM = 74, /* First CP0 register for embedded use. */
|
|
MIPS_PRID_REGNUM = 89, /* Processor ID. */
|
|
MIPS_LAST_EMBED_REGNUM = 89 /* Last one. */
|
|
};
|
|
|
|
/* Defined in mips-tdep.c and used in remote-mips.c */
|
|
extern void deprecated_mips_set_processor_regs_hack (void);
|
|
|
|
/* Instruction sizes and other useful constants. */
|
|
enum
|
|
{
|
|
MIPS_INSN16_SIZE = 2,
|
|
MIPS_INSN32_SIZE = 4,
|
|
/* The number of floating-point or integer registers. */
|
|
MIPS_NUMREGS = 32
|
|
};
|
|
|
|
/* Single step based on where the current instruction will take us. */
|
|
extern int mips_software_single_step (struct frame_info *frame);
|
|
|
|
/* Tell if the program counter value in MEMADDR is in a MIPS16
|
|
function. */
|
|
extern int mips_pc_is_mips16 (bfd_vma memaddr);
|
|
|
|
/* Return the currently configured (or set) saved register size. */
|
|
extern unsigned int mips_abi_regsize (struct gdbarch *gdbarch);
|
|
|
|
#endif /* MIPS_TDEP_H */
|