* ada-lang.c (ada_exception_breakpoint_ops): Fix typo in function name.
[deliverable/binutils-gdb.git] / gdb / m88k-tdep.c
index 42a702d064f4bd7804c64be8d092ab4d63f667cf..1810f770953803e102daccf85d2f9ad43f6ae006 100644 (file)
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Motorola 88000 series.
 
-   Copyright 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,8 +16,8 @@
 
    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., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 #include "defs.h"
 #include "arch-utils.h"
@@ -102,11 +102,11 @@ m88k_addr_bits_remove (CORE_ADDR addr)
    *LEN and optionally adjust *PC to point to the correct memory
    location for inserting the breakpoint.  */
    
-static const unsigned char *
+static const gdb_byte *
 m88k_breakpoint_from_pc (CORE_ADDR *pc, int *len)
 {
   /* tb 0,r0,511 */
-  static unsigned char break_insn[] = { 0xf0, 0x00, 0xd1, 0xff };
+  static gdb_byte break_insn[] = { 0xf0, 0x00, 0xd1, 0xff };
 
   *len = sizeof (break_insn);
   return break_insn;
@@ -266,13 +266,13 @@ m88k_store_arguments (struct regcache *regcache, int nargs,
 
   for (i = 0; i < nargs; i++)
     {
-      struct type *type = VALUE_TYPE (args[i]);
+      struct type *type = value_type (args[i]);
       int len = TYPE_LENGTH (type);
 
       if (m88k_integral_or_pointer_p (type) && len < 4)
        {
          args[i] = value_cast (builtin_type_int32, args[i]);
-         type = VALUE_TYPE (args[i]);
+         type = value_type (args[i]);
          len = TYPE_LENGTH (type);
        }
 
@@ -306,8 +306,8 @@ m88k_store_arguments (struct regcache *regcache, int nargs,
 
   for (i = 0; i < nargs; i++)
     {
-      char *valbuf = VALUE_CONTENTS (args[i]);
-      struct type *type = VALUE_TYPE (args[i]);
+      const bfd_byte *valbuf = value_contents (args[i]);
+      struct type *type = value_type (args[i]);
       int len = TYPE_LENGTH (type);
       int stack_word = num_stack_words;
 
@@ -344,7 +344,7 @@ m88k_store_arguments (struct regcache *regcache, int nargs,
 }
 
 static CORE_ADDR
-m88k_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
+m88k_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
                      struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
                      struct value **args, CORE_ADDR sp, int struct_return,
                      CORE_ADDR struct_addr)
@@ -384,11 +384,11 @@ m88k_unwind_dummy_id (struct gdbarch *arch, struct frame_info *next_frame)
 
 static enum return_value_convention
 m88k_return_value (struct gdbarch *gdbarch, struct type *type,
-                  struct regcache *regcache, void *readbuf,
-                  const void *writebuf)
+                  struct regcache *regcache, gdb_byte *readbuf,
+                  const gdb_byte *writebuf)
 {
   int len = TYPE_LENGTH (type);
-  char buf[8];
+  gdb_byte buf[8];
 
   if (!m88k_integral_or_pointer_p (type) && !m88k_floating_p (type))
     return RETURN_VALUE_STRUCT_CONVENTION;
@@ -607,7 +607,7 @@ m88k_analyze_prologue (CORE_ADDR pc, CORE_ADDR limit,
              the instruction in the delay slot might be.  Limit the
              prologue analysis to the delay slot and record the branch
              instruction as the end of the prologue.  */
-         limit = pc + M88K_INSN_SIZE;
+         limit = min (limit, pc + 2 * M88K_INSN_SIZE);
          end = pc;
          break;
 
@@ -721,7 +721,7 @@ static void
 m88k_frame_prev_register (struct frame_info *next_frame, void **this_cache,
                          int regnum, int *optimizedp,
                          enum lval_type *lvalp, CORE_ADDR *addrp,
-                         int *realnump, void *valuep)
+                         int *realnump, gdb_byte *valuep)
 {
   struct m88k_frame_cache *cache = m88k_frame_cache (next_frame, this_cache);
 
@@ -731,16 +731,14 @@ m88k_frame_prev_register (struct frame_info *next_frame, void **this_cache,
        {
          CORE_ADDR pc;
 
-         trad_frame_prev_register (next_frame, cache->saved_regs,
-                                   M88K_SXIP_REGNUM, optimizedp,
-                                   lvalp, addrp, realnump, valuep);
+         trad_frame_get_prev_register (next_frame, cache->saved_regs,
+                                       M88K_SXIP_REGNUM, optimizedp,
+                                       lvalp, addrp, realnump, valuep);
 
          pc = extract_unsigned_integer (valuep, 4);
-         if (regnum == M88K_SNIP_REGNUM)
+         if (regnum == M88K_SFIP_REGNUM)
            pc += 4;
-         else if (regnum == M88K_SFIP_REGNUM)
-           pc += 8;
-         store_unsigned_integer (valuep, 4, pc);
+         store_unsigned_integer (valuep, 4, pc + 4);
        }
 
       /* It's a computed value.  */
@@ -751,8 +749,8 @@ m88k_frame_prev_register (struct frame_info *next_frame, void **this_cache,
       return;
     }
 
-  trad_frame_prev_register (next_frame, cache->saved_regs, regnum,
-                           optimizedp, lvalp, addrp, realnump, valuep);
+  trad_frame_get_prev_register (next_frame, cache->saved_regs, regnum,
+                               optimizedp, lvalp, addrp, realnump, valuep);
 }
 
 static const struct frame_unwind m88k_frame_unwind =
@@ -800,7 +798,7 @@ m88k_supply_gregset (const struct regset *regset,
                     struct regcache *regcache,
                     int regnum, const void *gregs, size_t len)
 {
-  const char *regs = gregs;
+  const gdb_byte *regs = gregs;
   int i;
 
   for (i = 0; i < M88K_NUM_REGS; i++)
This page took 0.026743 seconds and 4 git commands to generate.