+enum register_status regcache_register_status (const struct regcache *regcache,
+ int regnum);
+
+/* 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. */
+
+/* For regcache_read_pc see common/common-regcache.h. */
+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);
+
+/* Mapping between register numbers and offsets in a buffer, for use
+ in the '*regset' functions below. In an array of
+ 'regcache_map_entry' each element is interpreted like follows:
+
+ - If 'regno' is a register number: Map register 'regno' to the
+ current offset (starting with 0) and increase the current offset
+ by 'size' (or the register's size, if 'size' is zero). Repeat
+ this with consecutive register numbers up to 'regno+count-1'.
+
+ - If 'regno' is REGCACHE_MAP_SKIP: Add 'count*size' to the current
+ offset.
+
+ - If count=0: End of the map. */
+
+struct regcache_map_entry
+{
+ int count;
+ int regno;
+ int size;
+};
+
+/* Special value for the 'regno' field in the struct above. */
+
+enum
+ {
+ REGCACHE_MAP_SKIP = -1,
+ };
+
+/* Transfer a set of registers (as described by REGSET) between
+ REGCACHE and BUF. If REGNUM == -1, transfer all registers
+ belonging to the regset, otherwise just the register numbered
+ REGNUM. The REGSET's 'regmap' field must point to an array of
+ 'struct regcache_map_entry'.