2007-06-13 Claudio Fontana <claudio.fontana@gmail.com>
[deliverable/binutils-gdb.git] / gdb / arm-tdep.h
index 5217ff6a3dd91cf884d06a691bf4ce349d5f51b5..46894abba42c00e46f527d848cafa71e9e96a6c6 100644 (file)
@@ -1,5 +1,5 @@
 /* Common target dependent code for GDB on ARM systems.
-   Copyright 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 
    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., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
-/* 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
-   numbers which are too large to be actual register numbers as far as
-   the user is concerned but do serve to get the desired values when
-   passed to read_register.  */
+#ifndef ARM_TDEP_H
+#define ARM_TDEP_H
+
+/* Forward declarations.  */
+struct gdbarch;
+struct regset;
+
+/* Register numbers of various important registers.  */
 
 enum gdb_regnum {
   ARM_A1_REGNUM = 0,           /* first integer-like argument */
@@ -37,6 +39,19 @@ enum gdb_regnum {
   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, 
@@ -59,7 +74,7 @@ enum gdb_regnum {
 #define STATUS_REGISTER_SIZE   4
 
 /* Number of machine registers.  The only define actually required 
-   is NUM_REGS.  The other definitions are used for documentation
+   is gdbarch_num_regs.  The other definitions are used for documentation
    purposes and code readability.  */
 /* For 26 bit ARM code, a fake copy of the PC is placed in register 25 (PS)
    (and called PS for processor status) so the status bits can be cleared
@@ -122,6 +137,14 @@ enum arm_abi_kind
   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
 {
@@ -131,6 +154,8 @@ 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.  */
 
@@ -143,17 +168,29 @@ struct gdbarch_tdep
                                   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);
+int arm_software_single_step (struct regcache *);
+
+/* 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 */
This page took 0.024821 seconds and 4 git commands to generate.