Add read_signed_register{,_pid}(). Change return type of
authorAndrew Cagney <cagney@redhat.com>
Tue, 11 Jul 2000 05:42:25 +0000 (05:42 +0000)
committerAndrew Cagney <cagney@redhat.com>
Tue, 11 Jul 2000 05:42:25 +0000 (05:42 +0000)
read_register{,_pid}() to ULONGEST.

gdb/ChangeLog
gdb/regcache.c
gdb/value.h

index 06d4b1bb592042500f222f5ba7567644be11ab65..fb767fd920247186ad3eb037961f40a31e508374 100644 (file)
@@ -1,3 +1,12 @@
+Tue Jul 11 12:52:31 2000  Andrew Cagney  <cagney@b1.cygnus.com>
+
+       * value.h (read_register, read_signed_register): Change return
+       type to ULONGEST.
+       (read_signed_register, read_signed_register_pid): Declare.
+
+       * regcache.c (read_register, read_register_pid): Update.
+       (read_signed_register_pid, read_signed_register): New functions.
+       
 Mon Jul 10 18:06:18 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * mips-tdep.c (mips_push_arguments): Always align struct_addr on a
index 3cfafa82d6e8de146a9d752f6231f50ac6b76bb5..ec64eac8447bb7f6ab3764e3505cbcf210820c2a 100644 (file)
@@ -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 (&registers[REGISTER_BYTE (regno)],
+  return (extract_unsigned_integer (&registers[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 (&registers[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
index 95f5a2c79919808d4d0e92bef5793fd1871d7f8b..e87582e579c76bb36f6e570167c91a93ecec2102 100644 (file)
@@ -461,9 +461,15 @@ extern void read_register_gen (int regno, char *myaddr);
 
 extern void write_register_gen (int regno, char *myaddr);
 
-extern CORE_ADDR read_register (int regno);
+/* Rename to read_unsigned_register()? */
+extern ULONGEST read_register (int regno);
 
-extern CORE_ADDR read_register_pid (int regno, int pid);
+extern LONGEST read_signed_register (int regno);
+
+/* Rename to read_unsigned_register_pid()? */
+extern ULONGEST read_register_pid (int regno, int pid);
+
+extern LONGEST read_signed_register_pid (int regno, int pid);
 
 extern void write_register (int regno, LONGEST val);