/* Common target dependent code for GDB on ARM systems.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
This file is part of GDB.
Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA. */
+#ifndef ARM_TDEP_H
+#define ARM_TDEP_H
+
+/* Forward declarations. */
+struct gdbarch;
+struct regset;
+
/* Register numbers of various important registers. Note that some of
these values are "real" register numbers, and correspond to the
general registers of the machine, and some are "phony" register
ARM_F7_REGNUM = 23, /* last floating point register */
ARM_FPS_REGNUM = 24, /* floating point status register */
ARM_PS_REGNUM = 25, /* Contains processor status */
+ ARM_WR0_REGNUM, /* WMMX data registers. */
+ ARM_WR15_REGNUM = ARM_WR0_REGNUM + 15,
+ ARM_WC0_REGNUM, /* WMMX control registers. */
+ ARM_WCSSF_REGNUM = ARM_WC0_REGNUM + 2,
+ ARM_WCASF_REGNUM = ARM_WC0_REGNUM + 3,
+ ARM_WC7_REGNUM = ARM_WC0_REGNUM + 7,
+ ARM_WCGR0_REGNUM, /* WMMX general purpose registers. */
+ ARM_WCGR3_REGNUM = ARM_WCGR0_REGNUM + 3,
+ ARM_WCGR7_REGNUM = ARM_WCGR0_REGNUM + 7,
+
+ ARM_NUM_REGS,
+
+ /* Other useful registers. */
ARM_FP_REGNUM = 11, /* Frame register in ARM code, if used. */
THUMB_FP_REGNUM = 7, /* Frame register in Thumb code, if used. */
ARM_NUM_ARG_REGS = 4,
ARM_ABI_LAST
};
+/* Convention for returning structures. */
+
+enum struct_return
+{
+ pcc_struct_return, /* Return "short" structures in memory. */
+ reg_struct_return /* Return "short" structures in registers. */
+};
+
/* Target-dependent structure in gdbarch. */
struct gdbarch_tdep
{
enum arm_float_model fp_model; /* Floating point calling conventions. */
+ int have_fpa_registers; /* Does the target report the FPA registers? */
+
CORE_ADDR lowest_pc; /* Lowest address at which instructions
will appear. */
If this is negative, longjmp support
will be disabled. */
size_t jb_elt_size; /* And the size of each entry in the buf. */
+
+ /* Convention for returning structures. */
+ enum struct_return struct_return;
+
+ /* Cached core file helpers. */
+ struct regset *gregset, *fpregset;
};
+
+
#ifndef LOWEST_PC
#define LOWEST_PC (gdbarch_tdep (current_gdbarch)->lowest_pc)
#endif
-/* Prototypes for internal interfaces needed by more than one MD file. */
-int arm_pc_is_thumb_dummy (CORE_ADDR);
+/* Functions exported from armbsd-tdep.h. */
-int arm_pc_is_thumb (CORE_ADDR);
+/* Return the appropriate register set for the core section identified
+ by SECT_NAME and SECT_SIZE. */
-CORE_ADDR thumb_get_next_pc (CORE_ADDR);
+extern const struct regset *
+ armbsd_regset_from_core_section (struct gdbarch *gdbarch,
+ const char *sect_name, size_t sect_size);
-CORE_ADDR arm_get_next_pc (CORE_ADDR);
+#endif /* arm-tdep.h */