/* Manage register sets.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010, 2011
+ Free Software Foundation, Inc.
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef REGSET_H
#define REGSET_H 1
struct gdbarch;
struct regcache;
+/* Data structure for the supported register notes in a core file. */
+struct core_regset_section
+{
+ const char *sect_name;
+ int size;
+ const char *human_name;
+};
+
/* Data structure describing a register set. */
+typedef void (supply_regset_ftype) (const struct regset *, struct regcache *,
+ int, const void *, size_t);
+typedef void (collect_regset_ftype) (const struct regset *,
+ const struct regcache *,
+ int, void *, size_t);
+
struct regset
{
/* Data pointer for private use by the methods below, presumably
providing some sort of description of the register set. */
const void *descr;
- /* Function supplying a register set to a register cache. */
- void (*supply_regset) (const struct regset *, struct regcache *,
- int, const void *, size_t);
+ /* Function supplying values in a register set to a register cache. */
+ supply_regset_ftype *supply_regset;
+
+ /* Function collecting values in a register set from a register cache. */
+ collect_regset_ftype *collect_regset;
+
+ /* Architecture associated with the register set. */
+ struct gdbarch *arch;
};
+/* Allocate a fresh 'struct regset' whose supply_regset function is
+ SUPPLY_REGSET, and whose collect_regset function is COLLECT_REGSET.
+ If the regset has no collect_regset function, pass NULL for
+ COLLECT_REGSET.
+
+ The object returned is allocated on ARCH's obstack. */
+
+extern struct regset *regset_alloc (struct gdbarch *arch,
+ supply_regset_ftype *supply_regset,
+ collect_regset_ftype *collect_regset);
+
#endif /* regset.h */