/* Cache and manage the values of registers for GDB, the GNU debugger.
Copyright (C) 1986, 1987, 1989, 1991, 1994, 1995, 1996, 1998, 2000, 2001,
- 2002, 2007, 2008 Free Software Foundation, Inc.
+ 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GDB.
struct regcache;
struct gdbarch;
+struct address_space;
extern struct regcache *get_current_regcache (void);
extern struct regcache *get_thread_regcache (ptid_t ptid);
+extern struct regcache *get_thread_arch_regcache (ptid_t, struct gdbarch *);
void regcache_xfree (struct regcache *regcache);
struct cleanup *make_cleanup_regcache_xfree (struct regcache *regcache);
-struct regcache *regcache_xmalloc (struct gdbarch *gdbarch);
+struct regcache *regcache_xmalloc (struct gdbarch *gdbarch,
+ struct address_space *aspace);
/* Return REGCACHE's architecture. */
extern struct gdbarch *get_regcache_arch (const struct regcache *regcache);
+/* Return REGCACHE's address space. */
+
+extern struct address_space *get_regcache_aspace (const struct regcache *regcache);
+
/* Transfer a raw register [0..NUM_REGS) between core-gdb and the
regcache. */
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(). */
int regnum, void *buf);
-/* The register's ``offset''.
-
- FIXME: cagney/2002-11-07: The frame_register() function, when
- specifying the real location of a register, does so using that
- registers offset in the register cache. That offset is then used
- by valops.c to determine the location of the register. The code
- should instead use the register's number and a location expression
- to describe a value spread across multiple registers or memory. */
-
-extern int register_offset_hack (struct gdbarch *gdbarch, int regnum);
-
-
/* 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 void regcache_cpy_no_passthrough (struct regcache *dest, struct regcache *src);
extern void registers_changed (void);
+extern void registers_changed_ptid (ptid_t);
#endif /* REGCACHE_H */