diff options
author | Andrew Cagney <cagney@redhat.com> | 2003-07-07 14:36:58 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2003-07-07 14:36:58 +0000 |
commit | eb8bc2821737a21e228c59dfce228e03cb7586a8 (patch) | |
tree | 814fd415266ca957741bcbd1850b95ece7b06164 /gdb/user-regs.h | |
parent | 15f8604d21deffab6450bd32418774857104503d (diff) | |
download | gdb-eb8bc2821737a21e228c59dfce228e03cb7586a8.zip gdb-eb8bc2821737a21e228c59dfce228e03cb7586a8.tar.gz gdb-eb8bc2821737a21e228c59dfce228e03cb7586a8.tar.bz2 |
2003-07-07 Andrew Cagney <cagney@redhat.com>
* expprint.c: Include "user-regs.h" instead of "frame.h".
(print_subexp): Use user_reg_map_regnum_to_name, instead of
frame_map_regnum_to_name.
* frame.c: Include "user-regs.h" instead of "builtin-regs.h".
(frame_map_name_to_regnum): Simplify, call
user_reg_map_name_to_regnum.
(frame_map_regnum_to_name): Simplify, call
user_reg_map_regnum_to_name.
(frame_register_unwind): Update.
* std-regs.c: Include "user-regs.h" instead of "builtin-regs.h".
(_initialize_frame_reg): Call user_reg_add_builtin.
* findvar.c: Include "user-regs.h" instead of "builtin-regs.h".
(value_of_register): Use value_of_user_reg.
* eval.c (evaluate_subexp_standard): Update.
* parse.c (write_dollar_variable): Update.
* d10v-tdep.c (d10v_print_registers_info): Update.
* infcmd.c (registers_info): Update.
* Makefile.in (SFILES): Delete "builtin-regs.c", add "user-regs.c".
(builtin_regs_h): Delete macro.
(user_regs_h): Define.
(COMMON_OBS): Delete "builtin-regs.o", add "user-regs.o".
(builtin-regs.o): Delete target.
(user-regs.o): Specify dependencies.
(expprint.o): Update dependencies.
(findvar.o): Update dependencies.
(frame.o): Update dependencies.
(std-regs.o): Update dependencies.
Diffstat (limited to 'gdb/user-regs.h')
-rw-r--r-- | gdb/user-regs.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/gdb/user-regs.h b/gdb/user-regs.h new file mode 100644 index 0000000..efc5530 --- /dev/null +++ b/gdb/user-regs.h @@ -0,0 +1,70 @@ +/* Per-frame user registers, for GDB, the GNU debugger. + + Copyright 2002, 2003 Free Software Foundation, Inc. + + Contributed by Red Hat. + + 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 + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 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. */ + +#ifndef USER_REGS_H +#define USER_REGS_H + +/* Implement both builtin, and architecture specific, per-frame user + visible registers. + + Builtin registers apply to all architectures, where as architecture + specific registers are present when the architecture is selected. + + These registers are assigned register numbers outside the + architecture's register range [0 .. NUM_REGS + NUM_PSEUDO_REGS). + Their values should be constructed using per-frame information. */ + +/* TODO: cagney/2003-06-27: Need to think more about how these + registers are added, read, and modified. At present they are kind + of assumed to be read-only. Should it, for instance, return a + register descriptor that contains all the relvent access methods. */ + +struct frame_info; + +/* Given an architecture, map a user visible register name onto its + index. */ + +extern int user_reg_map_name_to_regnum (struct gdbarch *gdbarch, + const char *str, int len); + +extern const char *user_reg_map_regnum_to_name (struct gdbarch *gdbarch, + int regnum); + +/* Return the value of the frame register in the specified frame. + + Note; These methods return a "struct value" instead of the raw + bytes as, at the time the register is being added, the type needed + to describe the register has not bee initialized. */ + +typedef struct value *(user_reg_read_ftype) (struct frame_info *frame); +extern struct value *value_of_user_reg (int regnum, struct frame_info *frame); + +/* Add a builtin register (present in all architectures). */ +extern void user_reg_add_builtin (const char *name, + user_reg_read_ftype *read); + +/* Add a per-architecture frame register. */ +extern void user_reg_add (struct gdbarch *gdbarch, const char *name, + user_reg_read_ftype *read); + +#endif |