diff options
author | Andrew Cagney <cagney@redhat.com> | 2000-07-11 05:42:25 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2000-07-11 05:42:25 +0000 |
commit | 173155e86672ba4294d2687fe1758137b80b6d61 (patch) | |
tree | 2afe9926a7ddf82940e64c4537a08e784bd28fb7 /gdb/regcache.c | |
parent | b71e277823b0b8e12b2f53f6fe77a9b401357407 (diff) | |
download | fsf-binutils-gdb-173155e86672ba4294d2687fe1758137b80b6d61.zip fsf-binutils-gdb-173155e86672ba4294d2687fe1758137b80b6d61.tar.gz fsf-binutils-gdb-173155e86672ba4294d2687fe1758137b80b6d61.tar.bz2 |
Add read_signed_register{,_pid}(). Change return type of
read_register{,_pid}() to ULONGEST.
Diffstat (limited to 'gdb/regcache.c')
-rw-r--r-- | gdb/regcache.c | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/gdb/regcache.c b/gdb/regcache.c index 3cfafa8..ec64eac 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -497,10 +497,9 @@ write_register_bytes (int myregstart, char *myaddr, int inlen) /* Return the raw contents of register REGNO, regarding it as an - integer. This probably should be returning LONGEST rather than - CORE_ADDR. */ + UNSIGNED integer. */ -CORE_ADDR +ULONGEST read_register (int regno) { if (registers_pid != inferior_pid) @@ -512,12 +511,11 @@ read_register (int regno) if (!register_valid[regno]) target_fetch_registers (regno); - return ((CORE_ADDR) - extract_unsigned_integer (®isters[REGISTER_BYTE (regno)], + return (extract_unsigned_integer (®isters[REGISTER_BYTE (regno)], REGISTER_RAW_SIZE (regno))); } -CORE_ADDR +ULONGEST read_register_pid (int regno, int pid) { int save_pid; @@ -537,6 +535,45 @@ read_register_pid (int regno, int pid) return retval; } +/* Return the raw contents of register REGNO, regarding it a SIGNED + integer. */ + +LONGEST +read_signed_register (int regno) +{ + if (registers_pid != inferior_pid) + { + registers_changed (); + registers_pid = inferior_pid; + } + + if (!register_valid[regno]) + target_fetch_registers (regno); + + return (extract_signed_integer (®isters[REGISTER_BYTE (regno)], + REGISTER_RAW_SIZE (regno))); +} + +LONGEST +read_signed_register_pid (int regno, int pid) +{ + int save_pid; + LONGEST retval; + + if (pid == inferior_pid) + return read_signed_register (regno); + + save_pid = inferior_pid; + + inferior_pid = pid; + + retval = read_signed_register (regno); + + inferior_pid = save_pid; + + return retval; +} + /* Store VALUE, into the raw contents of register number REGNO. */ void |