+/* Transfer a raw register [0..NUM_REGS) between core-gdb and the
+ regcache. The read variants return the status of the register. */
+
+enum register_status regcache_raw_read (struct regcache *regcache,
+ int rawnum, gdb_byte *buf);
+void regcache_raw_write (struct regcache *regcache, int rawnum,
+ const gdb_byte *buf);
+extern enum register_status
+ regcache_raw_read_signed (struct regcache *regcache,
+ int regnum, LONGEST *val);
+extern enum register_status
+ regcache_raw_read_unsigned (struct regcache *regcache,
+ int regnum, ULONGEST *val);
+extern void regcache_raw_write_signed (struct regcache *regcache,
+ int regnum, LONGEST val);
+extern void regcache_raw_write_unsigned (struct regcache *regcache,
+ int regnum, ULONGEST val);
+
+/* Partial transfer of raw registers. These perform read, modify,
+ write style operations. The read variant returns the status of the
+ register. */
+
+extern enum register_status
+ regcache_raw_read_part (struct regcache *regcache, int regnum,
+ int offset, int len, gdb_byte *buf);
+void regcache_raw_write_part (struct regcache *regcache, int regnum,
+ int offset, int len, const gdb_byte *buf);
+
+void regcache_invalidate (struct regcache *regcache, int regnum);
+
+/* Transfer of pseudo-registers. The read variants return a register
+ status, as an indication of when a ``cooked'' register was
+ constructed from valid, invalid or unavailable ``raw''
+ registers. */
+
+/* Transfer a cooked register [0..NUM_REGS+NUM_PSEUDO_REGS). */
+enum register_status regcache_cooked_read (struct regcache *regcache,
+ int rawnum, gdb_byte *buf);
+void regcache_cooked_write (struct regcache *regcache, int rawnum,
+ const gdb_byte *buf);
+
+/* Read register REGNUM from REGCACHE and return a new value. This
+ will call mark_value_bytes_unavailable as appropriate. */
+
+struct value *regcache_cooked_read_value (struct regcache *regcache,
+ int regnum);
+
+/* Read a register as a signed/unsigned quantity. */
+extern enum register_status
+ regcache_cooked_read_signed (struct regcache *regcache,
+ int regnum, LONGEST *val);
+extern enum register_status
+ regcache_cooked_read_unsigned (struct regcache *regcache,
+ int regnum, ULONGEST *val);
+extern void regcache_cooked_write_signed (struct regcache *regcache,
+ int regnum, LONGEST val);
+extern void regcache_cooked_write_unsigned (struct regcache *regcache,
+ int regnum, ULONGEST val);
+
+/* Partial transfer of a cooked register. These perform read, modify,
+ write style operations. */
+
+enum register_status regcache_cooked_read_part (struct regcache *regcache,
+ int regnum, int offset,
+ int len, gdb_byte *buf);
+void regcache_cooked_write_part (struct regcache *regcache, int regnum,
+ int offset, int len, const gdb_byte *buf);
+
+/* Special routines to read/write the PC. */
+
+extern CORE_ADDR regcache_read_pc (struct regcache *regcache);
+extern void regcache_write_pc (struct regcache *regcache, CORE_ADDR pc);
+
+/* Transfer a raw register [0..NUM_REGS) between the regcache and the
+ target. These functions are called by the target in response to a
+ target_fetch_registers() or target_store_registers(). */
+
+extern void regcache_raw_supply (struct regcache *regcache,
+ int regnum, const void *buf);
+extern void regcache_raw_collect (const struct regcache *regcache,
+ int regnum, void *buf);
+
+
+/* The type of a register. This function is slightly more efficient
+ then its gdbarch vector counterpart since it returns a precomputed
+ value stored in a table. */
+
+extern struct type *register_type (struct gdbarch *gdbarch, int regnum);
+
+
+/* Return the size of register REGNUM. All registers should have only
+ one size. */
+
+extern int register_size (struct gdbarch *gdbarch, int regnum);
+
+
+/* Save/restore a register cache. The set of registers saved /
+ restored into the DST regcache determined by the save_reggroup /
+ restore_reggroup respectively. COOKED_READ returns zero iff the
+ register's value can't be returned. */
+
+typedef enum register_status (regcache_cooked_read_ftype) (void *src,
+ int regnum,
+ gdb_byte *buf);
+
+extern void regcache_save (struct regcache *dst,
+ regcache_cooked_read_ftype *cooked_read,
+ void *cooked_read_context);