1b725ae77Skettenis /* Manage register sets. 2b725ae77Skettenis 3*11efff7fSkettenis Copyright 2003, 2004 Free Software Foundation, Inc. 4b725ae77Skettenis 5b725ae77Skettenis This file is part of GDB. 6b725ae77Skettenis 7b725ae77Skettenis This program is free software; you can redistribute it and/or modify 8b725ae77Skettenis it under the terms of the GNU General Public License as published by 9b725ae77Skettenis the Free Software Foundation; either version 2 of the License, or 10b725ae77Skettenis (at your option) any later version. 11b725ae77Skettenis 12b725ae77Skettenis This program is distributed in the hope that it will be useful, 13b725ae77Skettenis but WITHOUT ANY WARRANTY; without even the implied warranty of 14b725ae77Skettenis MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15b725ae77Skettenis GNU General Public License for more details. 16b725ae77Skettenis 17b725ae77Skettenis You should have received a copy of the GNU General Public License 18b725ae77Skettenis along with this program; if not, write to the Free Software 19b725ae77Skettenis Foundation, Inc., 59 Temple Place - Suite 330, 20b725ae77Skettenis Boston, MA 02111-1307, USA. */ 21b725ae77Skettenis 22b725ae77Skettenis #ifndef REGSET_H 23b725ae77Skettenis #define REGSET_H 1 24b725ae77Skettenis 25b725ae77Skettenis struct gdbarch; 26b725ae77Skettenis struct regcache; 27b725ae77Skettenis 28b725ae77Skettenis /* Data structure describing a register set. */ 29b725ae77Skettenis 30*11efff7fSkettenis typedef void (supply_regset_ftype) (const struct regset *, struct regcache *, 31*11efff7fSkettenis int, const void *, size_t); 32*11efff7fSkettenis typedef void (collect_regset_ftype) (const struct regset *, 33*11efff7fSkettenis const struct regcache *, 34*11efff7fSkettenis int, void *, size_t); 35*11efff7fSkettenis 36b725ae77Skettenis struct regset 37b725ae77Skettenis { 38b725ae77Skettenis /* Data pointer for private use by the methods below, presumably 39b725ae77Skettenis providing some sort of description of the register set. */ 40b725ae77Skettenis const void *descr; 41b725ae77Skettenis 42*11efff7fSkettenis /* Function supplying values in a register set to a register cache. */ 43*11efff7fSkettenis supply_regset_ftype *supply_regset; 44*11efff7fSkettenis 45*11efff7fSkettenis /* Function collecting values in a register set from a register cache. */ 46*11efff7fSkettenis collect_regset_ftype *collect_regset; 47*11efff7fSkettenis 48*11efff7fSkettenis /* Architecture associated with the register set. */ 49*11efff7fSkettenis struct gdbarch *arch; 50b725ae77Skettenis }; 51b725ae77Skettenis 52*11efff7fSkettenis /* Allocate a fresh 'struct regset' whose supply_regset function is 53*11efff7fSkettenis SUPPLY_REGSET, and whose collect_regset function is COLLECT_REGSET. 54*11efff7fSkettenis If the regset has no collect_regset function, pass NULL for 55*11efff7fSkettenis COLLECT_REGSET. 56*11efff7fSkettenis 57*11efff7fSkettenis The object returned is allocated on ARCH's obstack. */ 58*11efff7fSkettenis 59*11efff7fSkettenis extern struct regset *regset_alloc (struct gdbarch *arch, 60*11efff7fSkettenis supply_regset_ftype *supply_regset, 61*11efff7fSkettenis collect_regset_ftype *collect_regset); 62*11efff7fSkettenis 63b725ae77Skettenis #endif /* regset.h */ 64