OSDN Git Service

* infttrace.h (ttrace_write_reg_64): Add prototype.
authordanglin <danglin>
Sat, 20 Nov 2004 23:56:17 +0000 (23:56 +0000)
committerdanglin <danglin>
Sat, 20 Nov 2004 23:56:17 +0000 (23:56 +0000)
* hppah-nat.c (store_inferior_registers): Fix warning from ambiguous
expression.
(store_inferior_registers): Correct formatting.  Replace uses of
deprecated_registers with calls to regcache_raw_read,
regcache_raw_write_part and regcache_raw_read_part.

gdb/ChangeLog
gdb/hppah-nat.c
gdb/infttrace.h

index 9c5ffe4..da62708 100644 (file)
@@ -1,3 +1,12 @@
+2004-11-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * infttrace.h (ttrace_write_reg_64): Add prototype.
+       * hppah-nat.c (store_inferior_registers): Fix warning from ambiguous
+       expression.  
+       (store_inferior_registers): Correct formatting.  Replace uses of
+       deprecated_registers with calls to regcache_raw_read,
+       regcache_raw_write_part and regcache_raw_read_part.
+
 2004-11-21  Mark Kettenis  <kettenis@gnu.org>
 
        * config/pa/hppahpux.mh: Remove file.
index 3979ece..2a79b61 100644 (file)
@@ -141,11 +141,11 @@ store_inferior_registers (int regno)
         layering will not allow us to perform a 64bit register store.
 
         What a crock.  */
-      if (regno == HPPA_PCOQ_HEAD_REGNUM || regno == HPPA_PCOQ_TAIL_REGNUM && len == 8)
+      if ((regno == HPPA_PCOQ_HEAD_REGNUM || regno == HPPA_PCOQ_TAIL_REGNUM) && len == 8)
        {
          CORE_ADDR temp;
 
-         temp = *(CORE_ADDR *)&deprecated_registers[DEPRECATED_REGISTER_BYTE (regno)];
+         regcache_raw_read (current_regcache, regno, &temp);
 
          /* Set the priv level (stored in the low two bits of the PC.  */
          temp |= 0x3;
@@ -155,7 +155,7 @@ store_inferior_registers (int regno)
 
          /* If we fail to write the PC, give a true error instead of
             just a warning.  */
-         if (errno != 0)
+          if (errno != 0)
            {
              char *err = safe_strerror (errno);
              char *msg = alloca (strlen (err) + 128);
@@ -170,15 +170,24 @@ store_inferior_registers (int regno)
         the high part of IPSW.  What will it take for HP to catch a
         clue about building sensible interfaces?  */
      if (regno == HPPA_IPSW_REGNUM && len == 8)
-       *(int *)&deprecated_registers[DEPRECATED_REGISTER_BYTE (regno)] = 0;
+       {
+         int temp = 0;
+
+         regcache_raw_write_part (current_regcache, regno, 0,
+                                  sizeof (int), &temp);
+       }
 #endif
 
       for (i = 0; i < len; i += sizeof (int))
        {
+         int temp;
+
          errno = 0;
+         regcache_raw_read_part (current_regcache, regno, i,
+                                 sizeof (int), &temp);
          call_ptrace (PT_WUREGS, PIDGET (inferior_ptid),
                       (PTRACE_ARG3_TYPE) addr + i,
-                      *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (regno) + i]);
+                      temp);
          if (errno != 0)
            {
              /* Warning, not error, in case we are attached; sometimes
index c947cc0..c505b64 100644 (file)
@@ -31,5 +31,6 @@ extern int hpux_has_vforked (int pid, int *childpid);
 extern int hpux_has_execd (int pid, char **execd_pathname);
 extern int hpux_has_syscall_event (int pid, enum target_waitkind *kind,
                                   int *syscall_id);
+extern int ttrace_write_reg_64 (int, CORE_ADDR, CORE_ADDR);
 
 #endif