Update copyright year range in all GDB files
[external/binutils.git] / gdb / common / common-regcache.h
1 /* Cache and manage the values of registers
2
3    Copyright (C) 2014-2018 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #ifndef COMMON_REGCACHE_H
21 #define COMMON_REGCACHE_H
22
23 /* This header is a stopgap until we have an independent regcache.  */
24
25 enum register_status
26   {
27     /* The register value is not in the cache, and we don't know yet
28        whether it's available in the target (or traceframe).  */
29     REG_UNKNOWN = 0,
30
31     /* The register value is valid and cached.  */
32     REG_VALID = 1,
33
34     /* The register value is unavailable.  E.g., we're inspecting a
35        traceframe, and this register wasn't collected.  Note that this
36        is different a different "unavailable" from saying the register
37        does not exist in the target's architecture --- in that case,
38        the target should have given us a target description that does
39        not include the register in the first place.  */
40     REG_UNAVAILABLE = -1
41   };
42
43 /* Return a pointer to the register cache associated with the
44    thread specified by PTID.  This function must be provided by
45    the client.  */
46
47 extern struct regcache *get_thread_regcache_for_ptid (ptid_t ptid);
48
49 /* Return the size of register numbered N in REGCACHE.  This function
50    must be provided by the client.  */
51
52 extern int regcache_register_size (const struct regcache *regcache, int n);
53
54 /* Read the PC register.  This function must be provided by the
55    client.  */
56
57 extern CORE_ADDR regcache_read_pc (struct regcache *regcache);
58
59 /* Read a raw register into a unsigned integer.  */
60 extern enum register_status regcache_raw_read_unsigned
61   (struct regcache *regcache, int regnum, ULONGEST *val);
62
63 ULONGEST regcache_raw_get_unsigned (struct regcache *regcache, int regnum);
64
65 #endif /* COMMON_REGCACHE_H */