Add OpenBSD/powerpc support.
[deliverable/binutils-gdb.git] / gdb / ppc-tdep.h
index 346ac8ebc5fb64adc17a3eaf74d047e44b276f71..70465530452073070be0c4cd305bd5514995ac62 100644 (file)
@@ -1,6 +1,7 @@
 /* Target-dependent code for GDB, the GNU debugger.
-   Copyright 2000, 2001, 2002, 2003
-   Free Software Foundation, Inc.
+
+   Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation,
+   Inc.
 
    This file is part of GDB.
 
@@ -29,24 +30,16 @@ struct regcache;
 struct type;
 
 /* From ppc-linux-tdep.c... */
-CORE_ADDR ppc_linux_frame_saved_pc (struct frame_info *fi);
-void ppc_linux_init_extra_frame_info (int fromleaf, struct frame_info *);
-int ppc_linux_frameless_function_invocation (struct frame_info *);
-void ppc_linux_frame_init_saved_regs (struct frame_info *);
-CORE_ADDR ppc_linux_frame_chain (struct frame_info *);
-int ppc_sysv_abi_use_struct_convention (int, struct type *);
-void ppc_sysv_abi_store_return_value (struct type *type,
-                                     struct regcache *regcache,
-                                     const void *valbuf);
-void ppc_sysv_abi_extract_return_value (struct type *type,
-                                       struct regcache *regcache,
-                                       void *valbuf);
-void ppc_sysv_abi_broken_store_return_value (struct type *type,
-                                            struct regcache *regcache,
-                                            const void *valbuf);
-void ppc_sysv_abi_broken_extract_return_value (struct type *type,
-                                              struct regcache *regcache,
-                                              void *valbuf);
+enum return_value_convention ppc_sysv_abi_return_value (struct gdbarch *gdbarch,
+                                                       struct type *valtype,
+                                                       struct regcache *regcache,
+                                                       void *readbuf,
+                                                       const void *writebuf);
+enum return_value_convention ppc_sysv_abi_broken_return_value (struct gdbarch *gdbarch,
+                                                              struct type *valtype,
+                                                              struct regcache *regcache,
+                                                              void *readbuf,
+                                                              const void *writebuf);
 CORE_ADDR ppc_sysv_abi_push_dummy_call (struct gdbarch *gdbarch,
                                        CORE_ADDR func_addr,
                                        struct regcache *regcache,
@@ -65,31 +58,84 @@ CORE_ADDR ppc64_sysv_abi_adjust_breakpoint_address (struct gdbarch *gdbarch,
                                                    CORE_ADDR bpaddr);
 int ppc_linux_memory_remove_breakpoint (CORE_ADDR addr, char *contents_cache);
 struct link_map_offsets *ppc_linux_svr4_fetch_link_map_offsets (void);
-void ppc_linux_supply_gregset (char *buf);
-void ppc_linux_supply_fpregset (char *buf);
-
-int ppc64_sysv_abi_use_struct_convention (int gcc_p, struct type *value_type);
-void ppc64_sysv_abi_extract_return_value (struct type *valtype,
-                                         struct regcache *regbuf,
-                                         void *valbuf);
-void ppc64_sysv_abi_store_return_value (struct type *valtype,
-                                       struct regcache *regbuf,
-                                       const void *valbuf);
+void ppc_linux_supply_gregset (struct regcache *regcache,
+                              int regnum, const void *gregs, size_t size,
+                              int wordsize);
+void ppc_linux_supply_fpregset (const struct regset *regset,
+                               struct regcache *regcache,
+                               int regnum, const void *gregs, size_t size);
 
+enum return_value_convention ppc64_sysv_abi_return_value (struct gdbarch *gdbarch,
+                                                         struct type *valtype,
+                                                         struct regcache *regcache,
+                                                         void *readbuf,
+                                                         const void *writebuf);
 
 /* From rs6000-tdep.c... */
-CORE_ADDR rs6000_frame_saved_pc (struct frame_info *fi);
-void rs6000_init_extra_frame_info (int fromleaf, struct frame_info *);
-int rs6000_frameless_function_invocation (struct frame_info *);
-void rs6000_frame_init_saved_regs (struct frame_info *);
-CORE_ADDR rs6000_frame_chain (struct frame_info *);
 int altivec_register_p (int regno);
 
-
 /* Return non-zero when the architecture has an FPU (or at least when
    the ABI is using the FPU).  */
 int ppc_floating_point_unit_p (struct gdbarch *gdbarch);
 
+/* Register set description.  */
+
+struct ppc_reg_offsets
+{
+  /* General-purpose registers.  */
+  int r0_offset;
+  int pc_offset;
+  int ps_offset;
+  int cr_offset;
+  int lr_offset;
+  int ctr_offset;
+  int xer_offset;
+  int mq_offset;
+
+  /* Floating-point registers.  */
+  int f0_offset;
+  int fpscr_offset;
+
+  /* AltiVec registers.  */
+  int vr0_offset;
+  int vscr_offset;
+  int vrsave_offset;
+};
+
+/* Supply register REGNUM in the general-purpose register set REGSET
+   from the buffer specified by GREGS and LEN to register cache
+   REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
+
+extern void ppc_supply_gregset (const struct regset *regset,
+                               struct regcache *regcache,
+                               int regnum, const void *gregs, size_t len);
+
+/* Supply register REGNUM in the floating-point register set REGSET
+   from the buffer specified by FPREGS and LEN to register cache
+   REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
+
+extern void ppc_supply_fpregset (const struct regset *regset,
+                                struct regcache *regcache,
+                                int regnum, const void *fpregs, size_t len);
+
+/* Collect register REGNUM in the general-purpose register set
+   REGSET. from register cache REGCACHE into the buffer specified by
+   GREGS and LEN.  If REGNUM is -1, do this for all registers in
+   REGSET.  */
+
+extern void ppc_collect_gregset (const struct regset *regset,
+                                const struct regcache *regcache,
+                                int regnum, void *gregs, size_t len);
+
+/* Collect register REGNUM in the floating-point register set
+   REGSET. from register cache REGCACHE into the buffer specified by
+   FPREGS and LEN.  If REGNUM is -1, do this for all registers in
+   REGSET.  */
+
+extern void ppc_collect_fpregset (const struct regset *regset,
+                                 const struct regcache *regcache,
+                                 int regnum, void *fpregs, size_t len);
+
 /* Private data that this module attaches to struct gdbarch. */
 
 struct gdbarch_tdep
This page took 0.02726 seconds and 4 git commands to generate.