Use std::set in mi-main.c
[deliverable/binutils-gdb.git] / gdb / ppc-tdep.h
index 84d4f9014c3921736e6ac7165dcc22027de2a40b..4ae5c7f66e60ce91af583947cecbd0ba80ec094e 100644 (file)
@@ -1,7 +1,6 @@
 /* Target-dependent code for GDB, the GNU debugger.
 
-   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010,
-   2011 Free Software Foundation, Inc.
+   Copyright (C) 2000-2017 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -29,13 +28,13 @@ struct type;
 
 /* From ppc-sysv-tdep.c ...  */
 enum return_value_convention ppc_sysv_abi_return_value (struct gdbarch *gdbarch,
-                                                       struct type *func_type,
+                                                       struct value *function,
                                                        struct type *valtype,
                                                        struct regcache *regcache,
                                                        gdb_byte *readbuf,
                                                        const gdb_byte *writebuf);
 enum return_value_convention ppc_sysv_abi_broken_return_value (struct gdbarch *gdbarch,
-                                                              struct type *func_type,
+                                                              struct value *function,
                                                               struct type *valtype,
                                                               struct regcache *regcache,
                                                               gdb_byte *readbuf,
@@ -55,7 +54,7 @@ CORE_ADDR ppc64_sysv_abi_push_dummy_call (struct gdbarch *gdbarch,
                                          int struct_return,
                                          CORE_ADDR struct_addr);
 enum return_value_convention ppc64_sysv_abi_return_value (struct gdbarch *gdbarch,
-                                                         struct type *func_type,
+                                                         struct value *function,
                                                          struct type *valtype,
                                                          struct regcache *regcache,
                                                          gdb_byte *readbuf,
@@ -77,7 +76,8 @@ int ppc_altivec_support_p (struct gdbarch *gdbarch);
 /* Return non-zero if the architecture described by GDBARCH has
    VSX registers (vsr0 --- vsr63).  */
 int vsx_support_p (struct gdbarch *gdbarch);
-int ppc_deal_with_atomic_sequence (struct frame_info *frame);
+std::vector<CORE_ADDR> ppc_deal_with_atomic_sequence
+  (struct regcache *regcache);
 
 
 /* Register set description.  */
@@ -183,6 +183,15 @@ extern void ppc_collect_vsxregset (const struct regset *regset,
 
 /* Private data that this module attaches to struct gdbarch.  */
 
+/* ELF ABI version used by the inferior.  */
+enum powerpc_elf_abi
+{
+  POWERPC_ELF_AUTO,
+  POWERPC_ELF_V1,
+  POWERPC_ELF_V2,
+  POWERPC_ELF_LAST
+};
+
 /* Vector ABI used by the inferior.  */
 enum powerpc_vector_abi
 {
@@ -198,6 +207,8 @@ struct gdbarch_tdep
     int wordsize;              /* Size in bytes of fixed-point word.  */
     int soft_float;            /* Avoid FP registers for arguments?  */
 
+    enum powerpc_elf_abi elf_abi;      /* ELF ABI version.  */
+
     /* How to pass vector arguments.  Never set to AUTO or LAST.  */
     enum powerpc_vector_abi vector_abi;
 
@@ -249,6 +260,8 @@ struct gdbarch_tdep
     /* ISA-specific types.  */
     struct type *ppc_builtin_type_vec64;
     struct type *ppc_builtin_type_vec128;
+
+    int (*ppc_syscall_record) (struct regcache *regcache);
 };
 
 
@@ -292,6 +305,27 @@ enum {
   PPC_NUM_REGS
 };
 
+/* Big enough to hold the size of the largest register in bytes.  */
+#define PPC_MAX_REGISTER_SIZE  64
+
+/* An instruction to match.  */
+
+struct ppc_insn_pattern
+{
+  unsigned int mask;            /* mask the insn with this...  */
+  unsigned int data;            /* ...and see if it matches this.  */
+  int optional;                 /* If non-zero, this insn may be absent.  */
+};
+
+extern int ppc_insns_match_pattern (struct frame_info *frame, CORE_ADDR pc,
+                                   struct ppc_insn_pattern *pattern,
+                                   unsigned int *insns);
+extern CORE_ADDR ppc_insn_d_field (unsigned int insn);
+
+extern CORE_ADDR ppc_insn_ds_field (unsigned int insn);
+
+extern int ppc_process_record (struct gdbarch *gdbarch,
+                              struct regcache *regcache, CORE_ADDR addr);
 
 /* Instruction size.  */
 #define PPC_INSN_SIZE 4
This page took 0.026228 seconds and 4 git commands to generate.