*** empty log message ***
[deliverable/binutils-gdb.git] / gdb / hppa-hpux-nat.c
index fcf681c6a40c6cd27d70a0667884a5d1416faa62..e5947a9f07f6a3b8ab2ed9a841de80da98b25b08 100644 (file)
@@ -1,12 +1,13 @@
 /* Native-dependent code for PA-RISC HP-UX.
 
 /* Native-dependent code for PA-RISC HP-UX.
 
-   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010
+   Free Software Foundation, Inc.
 
    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
 
    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
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -15,9 +16,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    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., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
 #include "inferior.h"
 
 #include "defs.h"
 #include "inferior.h"
@@ -89,6 +88,8 @@ hppa_hpux_save_state_offset (struct regcache *regcache, int regnum)
 static void
 hppa_hpux_fetch_register (struct regcache *regcache, int regnum)
 {
 static void
 hppa_hpux_fetch_register (struct regcache *regcache, int regnum)
 {
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   CORE_ADDR addr;
   size_t size;
   PTRACE_TYPE_RET *buf;
   CORE_ADDR addr;
   size_t size;
   PTRACE_TYPE_RET *buf;
@@ -99,7 +100,7 @@ hppa_hpux_fetch_register (struct regcache *regcache, int regnum)
 
   /* This isn't really an address, but ptrace thinks of it as one.  */
   addr = hppa_hpux_save_state_offset (regcache, regnum);
 
   /* This isn't really an address, but ptrace thinks of it as one.  */
   addr = hppa_hpux_save_state_offset (regcache, regnum);
-  size = register_size (current_gdbarch, regnum);
+  size = register_size (gdbarch, regnum);
 
   gdb_assert (size == 4 || size == 8);
   buf = alloca (size);
 
   gdb_assert (size == 4 || size == 8);
   buf = alloca (size);
@@ -110,7 +111,8 @@ hppa_hpux_fetch_register (struct regcache *regcache, int regnum)
 
     if (ttrace (TT_LWP_RUREGS, pid, lwp, addr, size, (uintptr_t)buf) == -1)
       error (_("Couldn't read register %s (#%d): %s"),
 
     if (ttrace (TT_LWP_RUREGS, pid, lwp, addr, size, (uintptr_t)buf) == -1)
       error (_("Couldn't read register %s (#%d): %s"),
-            REGISTER_NAME (regnum), regnum, safe_strerror (errno));
+            gdbarch_register_name (gdbarch, regnum),
+            regnum, safe_strerror (errno));
   }
 #else
   {
   }
 #else
   {
@@ -123,7 +125,8 @@ hppa_hpux_fetch_register (struct regcache *regcache, int regnum)
        buf[i] = ptrace (PT_RUREGS, pid, (PTRACE_TYPE_ARG3) addr, 0, 0);
        if (errno != 0)
          error (_("Couldn't read register %s (#%d): %s"),
        buf[i] = ptrace (PT_RUREGS, pid, (PTRACE_TYPE_ARG3) addr, 0, 0);
        if (errno != 0)
          error (_("Couldn't read register %s (#%d): %s"),
-                REGISTER_NAME (regnum), regnum, safe_strerror (errno));
+                gdbarch_register_name (gdbarch, regnum),
+                regnum, safe_strerror (errno));
 
        addr += sizeof (PTRACE_TYPE_RET);
       }
 
        addr += sizeof (PTRACE_TYPE_RET);
       }
@@ -134,18 +137,22 @@ hppa_hpux_fetch_register (struct regcache *regcache, int regnum)
      `struct save_state', even for 64-bit code.  */
   if (regnum == HPPA_FLAGS_REGNUM && size == 8)
     {
      `struct save_state', even for 64-bit code.  */
   if (regnum == HPPA_FLAGS_REGNUM && size == 8)
     {
-      ULONGEST flags = extract_unsigned_integer ((gdb_byte *)buf, 4);
-      store_unsigned_integer ((gdb_byte *)buf, 8, flags);
+      ULONGEST flags;
+      flags = extract_unsigned_integer ((gdb_byte *)buf, 4, byte_order);
+      store_unsigned_integer ((gdb_byte *)buf, 8, byte_order, flags);
     }
 
   regcache_raw_supply (regcache, regnum, buf);
 }
 
 static void
     }
 
   regcache_raw_supply (regcache, regnum, buf);
 }
 
 static void
-hppa_hpux_fetch_inferior_registers (struct regcache *regcache, int regnum)
+hppa_hpux_fetch_inferior_registers (struct target_ops *ops,
+                                   struct regcache *regcache, int regnum)
 {
   if (regnum == -1)
 {
   if (regnum == -1)
-    for (regnum = 0; regnum < NUM_REGS; regnum++)
+    for (regnum = 0;
+        regnum < gdbarch_num_regs (get_regcache_arch (regcache));
+        regnum++)
       hppa_hpux_fetch_register (regcache, regnum);
   else
     hppa_hpux_fetch_register (regcache, regnum);
       hppa_hpux_fetch_register (regcache, regnum);
   else
     hppa_hpux_fetch_register (regcache, regnum);
@@ -156,6 +163,8 @@ hppa_hpux_fetch_inferior_registers (struct regcache *regcache, int regnum)
 static void
 hppa_hpux_store_register (struct regcache *regcache, int regnum)
 {
 static void
 hppa_hpux_store_register (struct regcache *regcache, int regnum)
 {
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   CORE_ADDR addr;
   size_t size;
   PTRACE_TYPE_RET *buf;
   CORE_ADDR addr;
   size_t size;
   PTRACE_TYPE_RET *buf;
@@ -165,7 +174,7 @@ hppa_hpux_store_register (struct regcache *regcache, int regnum)
 
   /* This isn't really an address, but ptrace thinks of it as one.  */
   addr = hppa_hpux_save_state_offset (regcache, regnum);
 
   /* This isn't really an address, but ptrace thinks of it as one.  */
   addr = hppa_hpux_save_state_offset (regcache, regnum);
-  size = register_size (current_gdbarch, regnum);
+  size = register_size (gdbarch, regnum);
 
   gdb_assert (size == 4 || size == 8);
   buf = alloca (size);
 
   gdb_assert (size == 4 || size == 8);
   buf = alloca (size);
@@ -176,8 +185,9 @@ hppa_hpux_store_register (struct regcache *regcache, int regnum)
      `struct save_state', even for 64-bit code.  */
   if (regnum == HPPA_FLAGS_REGNUM && size == 8)
     {
      `struct save_state', even for 64-bit code.  */
   if (regnum == HPPA_FLAGS_REGNUM && size == 8)
     {
-      ULONGEST flags = extract_unsigned_integer ((gdb_byte *)buf, 8);
-      store_unsigned_integer ((gdb_byte *)buf, 4, flags);
+      ULONGEST flags;
+      flags = extract_unsigned_integer ((gdb_byte *)buf, 8, byte_order);
+      store_unsigned_integer ((gdb_byte *)buf, 4, byte_order, flags);
       size = 4;
     }
 
       size = 4;
     }
 
@@ -187,7 +197,8 @@ hppa_hpux_store_register (struct regcache *regcache, int regnum)
 
     if (ttrace (TT_LWP_WUREGS, pid, lwp, addr, size, (uintptr_t)buf) == -1)
       error (_("Couldn't write register %s (#%d): %s"),
 
     if (ttrace (TT_LWP_WUREGS, pid, lwp, addr, size, (uintptr_t)buf) == -1)
       error (_("Couldn't write register %s (#%d): %s"),
-            REGISTER_NAME (regnum), regnum, safe_strerror (errno));
+            gdbarch_register_name (gdbarch, regnum),
+            regnum, safe_strerror (errno));
   }
 #else
   {
   }
 #else
   {
@@ -200,7 +211,8 @@ hppa_hpux_store_register (struct regcache *regcache, int regnum)
        ptrace (PT_WUREGS, pid, (PTRACE_TYPE_ARG3) addr, buf[i], 0);
        if (errno != 0)
          error (_("Couldn't write register %s (#%d): %s"),
        ptrace (PT_WUREGS, pid, (PTRACE_TYPE_ARG3) addr, buf[i], 0);
        if (errno != 0)
          error (_("Couldn't write register %s (#%d): %s"),
-                REGISTER_NAME (regnum), regnum, safe_strerror (errno));
+                gdbarch_register_name (gdbarch, regnum),
+                regnum, safe_strerror (errno));
 
        addr += sizeof (PTRACE_TYPE_RET);
       }
 
        addr += sizeof (PTRACE_TYPE_RET);
       }
@@ -212,10 +224,13 @@ hppa_hpux_store_register (struct regcache *regcache, int regnum)
    this for all registers (including the floating point registers).  */
 
 static void
    this for all registers (including the floating point registers).  */
 
 static void
-hppa_hpux_store_inferior_registers (struct regcache *regcache, int regnum)
+hppa_hpux_store_inferior_registers (struct target_ops *ops,
+                                   struct regcache *regcache, int regnum)
 {
   if (regnum == -1)
 {
   if (regnum == -1)
-    for (regnum = 0; regnum < NUM_REGS; regnum++)
+    for (regnum = 0;
+        regnum < gdbarch_num_regs (get_regcache_arch (regcache));
+        regnum++)
       hppa_hpux_store_register (regcache, regnum);
   else
     hppa_hpux_store_register (regcache, regnum);
       hppa_hpux_store_register (regcache, regnum);
   else
     hppa_hpux_store_register (regcache, regnum);
This page took 0.026101 seconds and 4 git commands to generate.