2011-01-28 Pedro Alves <pedro@codesourcery.com>
[deliverable/binutils-gdb.git] / gdb / gdbserver / regcache.h
index 48782ffb84b12c29437c959015fdb78ecb17d4a3..df3b2615bc5ef998b6e41019b5097d7f41b93e8d 100644 (file)
@@ -1,5 +1,6 @@
 /* Register support routines for the remote server for GDB.
-   Copyright (C) 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2007, 2008, 2009, 2010, 2011
+   Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #define REGCACHE_H
 
 struct inferior_list_entry;
+struct thread_info;
+
+/* The data for the register cache.  Note that we have one per
+   inferior; this is primarily for simplicity, as the performance
+   benefit is minimal.  */
+
+struct regcache
+{
+  int registers_valid;
+  int registers_owned;
+  unsigned char *registers;
+};
+
+struct regcache *init_register_cache (struct regcache *regcache,
+                                     unsigned char *regbuf);
+
+void regcache_cpy (struct regcache *dst, struct regcache *src);
 
 /* Create a new register cache for INFERIOR.  */
 
-void *new_register_cache (void);
+struct regcache *new_register_cache (void);
+
+struct regcache *get_thread_regcache (struct thread_info *thread, int fetch);
 
 /* Release all memory associated with the register cache for INFERIOR.  */
 
-void free_register_cache (void *regcache);
+void free_register_cache (struct regcache *regcache);
 
 /* Invalidate cached registers for one or all threads.  */
 
@@ -37,11 +57,15 @@ void regcache_invalidate (void);
 /* Convert all registers to a string in the currently specified remote
    format.  */
 
-void registers_to_string (char *buf);
+void registers_to_string (struct regcache *regcache, char *buf);
 
 /* Convert a string to register values and fill our register cache.  */
 
-void registers_from_string (char *buf);
+void registers_from_string (struct regcache *regcache, char *buf);
+
+CORE_ADDR regcache_read_pc (struct regcache *regcache);
+
+void regcache_write_pc (struct regcache *regcache, CORE_ADDR pc);
 
 /* Return a pointer to the description of register ``n''.  */
 
@@ -49,6 +73,8 @@ struct reg *find_register_by_number (int n);
 
 int register_size (int n);
 
+int register_cache_size (void);
+
 int find_regno (const char *name);
 
 /* The following two variables are set by auto-generated
@@ -56,14 +82,18 @@ int find_regno (const char *name);
 extern const char **gdbserver_expedite_regs;
 extern const char *gdbserver_xmltarget;
 
-void supply_register (int n, const void *buf);
+void supply_register (struct regcache *regcache, int n, const void *buf);
+
+void supply_register_by_name (struct regcache *regcache,
+                             const char *name, const void *buf);
 
-void supply_register_by_name (const char *name, const void *buf);
+void supply_regblock (struct regcache *regcache, const void *buf);
 
-void collect_register (int n, void *buf);
+void collect_register (struct regcache *regcache, int n, void *buf);
 
-void collect_register_as_string (int n, char *buf);
+void collect_register_as_string (struct regcache *regcache, int n, char *buf);
 
-void collect_register_by_name (const char *name, void *buf);
+void collect_register_by_name (struct regcache *regcache,
+                              const char *name, void *buf);
 
 #endif /* REGCACHE_H */
This page took 0.055397 seconds and 4 git commands to generate.