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 | 893691a276602c6f990c851393362bc596cda7d3 (patch) | |
tree | 929b46e60eca0ae21ec5fd86a90c8ea4a472bfc3 /gdb/regcache.c | |
parent | daa3ca32274622d34739a72f3c4c17a63d5868b9 (diff) | |
download | gdb-893691a276602c6f990c851393362bc596cda7d3.tar.gz |
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 3cfafa82d6e..ec64eac8447 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 |