* config/tc-alpha.c (O_samegp): New.
[external/binutils.git] / gdb / d30v-tdep.c
index 50b3d0d..ede8dd8 100644 (file)
@@ -1,21 +1,23 @@
 /* Target-dependent code for Mitsubishi D30V, for GDB.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright 1996, 1997, 1998, 1999, 2000, 2001
+   Free Software Foundation, Inc.
 
-This file is part of GDB.
+   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
-(at your option) any later version.
+   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
+   (at your option) any later version.
 
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   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.  */
 
 /*  Contributed by Martin Hunt, hunt@cygnus.com */
 
@@ -29,53 +31,59 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "gdb_string.h"
 #include "value.h"
 #include "inferior.h"
-#include "dis-asm.h"  
+#include "dis-asm.h"
 #include "symfile.h"
 #include "objfiles.h"
+#include "regcache.h"
 
-void d30v_frame_find_saved_regs PARAMS ((struct frame_info *fi,
-                                        struct frame_saved_regs *fsr));
-static void d30v_pop_dummy_frame PARAMS ((struct frame_info *fi));
-static void d30v_print_flags PARAMS ((void));
-static void print_flags_command PARAMS ((char *, int));
+#include "language.h" /* For local_hex_string() */
+
+void d30v_frame_find_saved_regs (struct frame_info *fi,
+                                struct frame_saved_regs *fsr);
+void d30v_frame_find_saved_regs_offsets (struct frame_info *fi,
+                                        struct frame_saved_regs *fsr);
+static void d30v_pop_dummy_frame (struct frame_info *fi);
+static void d30v_print_flags (void);
+static void print_flags_command (char *, int);
 
 /* the following defines assume:
    fp is r61, lr is r62, sp is r63, and ?? is r22
    if that changes, they will need to be updated */
 
-#define OP_MASK_ALL_BUT_RA     0x0ffc0fff /* throw away Ra, keep the rest */
+#define OP_MASK_ALL_BUT_RA     0x0ffc0fff      /* throw away Ra, keep the rest */
 
-#define OP_STW_SPM             0x054c0fc0 /* stw Ra, @(sp-) */
-#define OP_STW_SP_R0           0x05400fc0 /* stw Ra, @(sp,r0) */
-#define OP_STW_SP_IMM0         0x05480fc0 /* st Ra, @(sp, 0x0) */
-#define OP_STW_R22P_R0         0x05440580 /* stw Ra, @(r22+,r0) */
+#define OP_STW_SPM             0x054c0fc0      /* stw Ra, @(sp-) */
+#define OP_STW_SP_R0           0x05400fc0      /* stw Ra, @(sp,r0) */
+#define OP_STW_SP_IMM0         0x05480fc0      /* st Ra, @(sp, 0x0) */
+#define OP_STW_R22P_R0         0x05440580      /* stw Ra, @(r22+,r0) */
 
-#define OP_ST2W_SPM            0x056c0fc0 /* st2w Ra, @(sp-) */
-#define OP_ST2W_SP_R0          0x05600fc0 /* st2w Ra, @(sp, r0) */
-#define OP_ST2W_SP_IMM0                0x05680fc0 /* st2w Ra, @(sp, 0x0) */
-#define OP_ST2W_R22P_R0                0x05640580 /* st2w Ra, @(r22+, r0) */
+#define OP_ST2W_SPM            0x056c0fc0      /* st2w Ra, @(sp-) */
+#define OP_ST2W_SP_R0          0x05600fc0      /* st2w Ra, @(sp, r0) */
+#define OP_ST2W_SP_IMM0                0x05680fc0      /* st2w Ra, @(sp, 0x0) */
+#define OP_ST2W_R22P_R0                0x05640580      /* st2w Ra, @(r22+, r0) */
 
-#define OP_MASK_OPCODE         0x0ffc0000 /* just the opcode, ign operands */
-#define OP_NOP                 0x00f00000 /* nop */
+#define OP_MASK_OPCODE         0x0ffc0000      /* just the opcode, ign operands */
+#define OP_NOP                 0x00f00000      /* nop */
 
-#define OP_MASK_ALL_BUT_IMM    0x0fffffc0 /* throw away imm, keep the rest */
-#define OP_SUB_SP_IMM          0x082bffc0 /* sub sp,sp,imm */
-#define OP_ADD_SP_IMM          0x080bffc0 /* add sp,sp,imm */
-#define OP_ADD_R22_SP_IMM      0x08096fc0 /* add r22,sp,imm */
-#define OP_STW_FP_SP_IMM       0x054bdfc0 /* stw fp,@(sp,imm) */
+#define OP_MASK_ALL_BUT_IMM    0x0fffffc0      /* throw away imm, keep the rest */
+#define OP_SUB_SP_IMM          0x082bffc0      /* sub sp,sp,imm */
+#define OP_ADD_SP_IMM          0x080bffc0      /* add sp,sp,imm */
+#define OP_ADD_R22_SP_IMM      0x08096fc0      /* add r22,sp,imm */
+#define OP_STW_FP_SP_IMM       0x054bdfc0      /* stw fp,@(sp,imm) */
+#define OP_OR_SP_R0_IMM                0x03abf000      /* or sp,r0,imm */
 
 /* no mask */
-#define OP_OR_FP_R0_SP         0x03a3d03f /* or fp,r0,sp */
-#define OP_OR_FP_SP_R0         0x03a3dfc0 /* or fp,sp,r0 */
-#define OP_OR_FP_IMM0_SP       0x03abd03f /* or fp,0x0,sp */
-#define OP_STW_FP_R22P_R0      0x0547d580 /* stw fp,@(r22+,r0) */
-#define OP_STW_LR_R22P_R0      0x0547e580 /* stw lr,@(r22+,r0) */
-
-#define OP_MASK_OP_AND_RB      0x0ff80fc0 /* keep op and rb,throw away rest */
-#define OP_STW_SP_IMM          0x05480fc0 /* stw Ra,@(sp,imm) */
-#define OP_ST2W_SP_IMM         0x05680fc0 /* st2w Ra,@(sp,imm) */
-#define OP_STW_FP_IMM          0x05480f40 /* stw Ra,@(fp,imm) */
-#define OP_STW_FP_R0           0x05400f40 /* stw Ra,@(fp,r0) */
+#define OP_OR_FP_R0_SP         0x03a3d03f      /* or fp,r0,sp */
+#define OP_OR_FP_SP_R0         0x03a3dfc0      /* or fp,sp,r0 */
+#define OP_OR_FP_IMM0_SP       0x03abd03f      /* or fp,0x0,sp */
+#define OP_STW_FP_R22P_R0      0x0547d580      /* stw fp,@(r22+,r0) */
+#define OP_STW_LR_R22P_R0      0x0547e580      /* stw lr,@(r22+,r0) */
+
+#define OP_MASK_OP_AND_RB      0x0ff80fc0      /* keep op and rb,throw away rest */
+#define OP_STW_SP_IMM          0x05480fc0      /* stw Ra,@(sp,imm) */
+#define OP_ST2W_SP_IMM         0x05680fc0      /* st2w Ra,@(sp,imm) */
+#define OP_STW_FP_IMM          0x05480f40      /* stw Ra,@(fp,imm) */
+#define OP_STW_FP_R0           0x05400f40      /* stw Ra,@(fp,r0) */
 
 #define OP_MASK_FM_BIT         0x80000000
 #define OP_MASK_CC_BITS                0x70000000
@@ -89,11 +97,22 @@ static void print_flags_command PARAMS ((char *, int));
 #define EXTRACT_IMM26(op)      ((((op)&0x0ff00000) >> 2) | ((op)&0x0003ffff))
 #define EXTRACT_IMM32(opl, opr)        ((EXTRACT_UIMM6(opl) << 26)|EXTRACT_IMM26(opr))
 
+
+int
+d30v_frame_chain_valid (CORE_ADDR chain, struct frame_info *fi)
+{
+#if 0
+  return ((chain) != 0 && (fi) != 0 && (fi)->return_pc != 0);
+#else
+  return ((chain) != 0 && (fi) != 0 && (fi)->frame <= chain);
+#endif
+}
+
 /* Discard from the stack the innermost frame, restoring all saved
    registers.  */
 
 void
-d30v_pop_frame ()
+d30v_pop_frame (void)
 {
   struct frame_info *frame = get_current_frame ();
   CORE_ADDR fp;
@@ -104,16 +123,16 @@ d30v_pop_frame ()
   fp = FRAME_FP (frame);
   if (frame->dummy)
     {
-      d30v_pop_dummy_frame(frame);
+      d30v_pop_dummy_frame (frame);
       return;
     }
 
   /* fill out fsr with the address of where each */
   /* register was stored in the frame */
   get_frame_saved_regs (frame, &fsr);
-  
+
   /* now update the current registers with the old values */
-  for (regnum = A0_REGNUM; regnum < A0_REGNUM+2 ; regnum++)
+  for (regnum = A0_REGNUM; regnum < A0_REGNUM + 2; regnum++)
     {
       if (fsr.regs[regnum])
        {
@@ -133,15 +152,14 @@ d30v_pop_frame ()
       write_register (PSW_REGNUM, read_memory_unsigned_integer (fsr.regs[PSW_REGNUM], 4));
     }
 
-  write_register (PC_REGNUM, read_register(LR_REGNUM));
+  write_register (PC_REGNUM, read_register (LR_REGNUM));
   write_register (SP_REGNUM, fp + frame->size);
   target_store_registers (-1);
   flush_cached_frames ();
 }
 
-static int 
-check_prologue (op)
-     unsigned long op;
+static int
+check_prologue (unsigned long op)
 {
   /* add sp,sp,imm -- observed */
   if ((op & OP_MASK_ALL_BUT_IMM) == OP_ADD_SP_IMM)
@@ -168,36 +186,36 @@ check_prologue (op)
     return 1;
 
   /* st2w  Ra,@(sp,r0) */
- if ((op & OP_MASK_ALL_BUT_RA) == OP_ST2W_SP_R0)
-   return 1;
 if ((op & OP_MASK_ALL_BUT_RA) == OP_ST2W_SP_R0)
+    return 1;
 
   /* st2w  Ra,@(sp,0x0) */
- if ((op & OP_MASK_ALL_BUT_RA) == OP_ST2W_SP_IMM0)
-   return 1;
 if ((op & OP_MASK_ALL_BUT_RA) == OP_ST2W_SP_IMM0)
+    return 1;
 
- /* stw fp, @(r22+,r0) -- observed */
- if (op == OP_STW_FP_R22P_R0)
-   return 1;
 /* stw fp, @(r22+,r0) -- observed */
 if (op == OP_STW_FP_R22P_R0)
+    return 1;
 
- /* stw r62, @(r22+,r0) -- observed */
- if (op == OP_STW_LR_R22P_R0)
-   return 1;
 /* stw r62, @(r22+,r0) -- observed */
 if (op == OP_STW_LR_R22P_R0)
+    return 1;
 
- /* stw Ra, @(fp,r0) -- observed */
- if ((op & OP_MASK_ALL_BUT_RA) == OP_STW_FP_R0)
-   return 1;                   /* first arg */
 /* stw Ra, @(fp,r0) -- observed */
 if ((op & OP_MASK_ALL_BUT_RA) == OP_STW_FP_R0)
+    return 1;                  /* first arg */
 
- /* stw Ra, @(fp,imm) -- observed */
- if ((op & OP_MASK_OP_AND_RB) == OP_STW_FP_IMM)
-   return 1;                   /* second and subsequent args */
 /* stw Ra, @(fp,imm) -- observed */
 if ((op & OP_MASK_OP_AND_RB) == OP_STW_FP_IMM)
+    return 1;                  /* second and subsequent args */
 
- /* stw fp,@(sp,imm) -- observed */
- if ((op & OP_MASK_ALL_BUT_IMM) == OP_STW_FP_SP_IMM)
-   return 1;
 /* stw fp,@(sp,imm) -- observed */
 if ((op & OP_MASK_ALL_BUT_IMM) == OP_STW_FP_SP_IMM)
+    return 1;
 
- /* st2w Ra,@(r22+,r0) */
- if ((op & OP_MASK_ALL_BUT_RA) == OP_ST2W_R22P_R0)
-   return 1;
 /* st2w Ra,@(r22+,r0) */
 if ((op & OP_MASK_ALL_BUT_RA) == OP_ST2W_R22P_R0)
+    return 1;
 
   /* stw  Ra, @(sp-) */
   if ((op & OP_MASK_ALL_BUT_RA) == OP_STW_SPM)
@@ -215,8 +233,7 @@ check_prologue (op)
 }
 
 CORE_ADDR
-d30v_skip_prologue (pc)
-     CORE_ADDR pc;
+d30v_skip_prologue (CORE_ADDR pc)
 {
   unsigned long op[2];
   unsigned long opl, opr;      /* left / right sub operations */
@@ -231,17 +248,17 @@ d30v_skip_prologue (pc)
   if (find_pc_partial_function (pc, NULL, &func_addr, &func_end))
     {
       sal = find_pc_line (func_addr, 0);
-      if ( sal.end && sal.end < func_end)
+      if (sal.end && sal.end < func_end)
        return sal.end;
     }
-  
-  if (target_read_memory (pc, (char *)&op[0], 8))
+
+  if (target_read_memory (pc, (char *) &op[0], 8))
     return pc;                 /* Can't access it -- assume no prologue. */
 
   while (1)
     {
-      opl = (unsigned long)read_memory_integer (pc, 4);
-      opr = (unsigned long)read_memory_integer (pc+4, 4);
+      opl = (unsigned long) read_memory_integer (pc, 4);
+      opr = (unsigned long) read_memory_integer (pc + 4, 4);
 
       fm0 = (opl & OP_MASK_FM_BIT);
       fm1 = (opr & OP_MASK_FM_BIT);
@@ -255,10 +272,10 @@ d30v_skip_prologue (pc)
       if (fm0 && fm1)
        {
          /* long instruction (opl contains the opcode) */
-         if (((opl & OP_MASK_ALL_BUT_IMM) != OP_ADD_SP_IMM) && /* add sp,sp,imm */
-             ((opl & OP_MASK_ALL_BUT_IMM) != OP_ADD_R22_SP_IMM) && /* add r22,sp,imm */
-             ((opl & OP_MASK_OP_AND_RB) != OP_STW_SP_IMM) && /* stw Ra, @(sp,imm) */
-             ((opl & OP_MASK_OP_AND_RB) != OP_ST2W_SP_IMM)) /* st2w Ra, @(sp,imm) */
+         if (((opl & OP_MASK_ALL_BUT_IMM) != OP_ADD_SP_IMM) &&         /* add sp,sp,imm */
+             ((opl & OP_MASK_ALL_BUT_IMM) != OP_ADD_R22_SP_IMM) &&     /* add r22,sp,imm */
+             ((opl & OP_MASK_OP_AND_RB) != OP_STW_SP_IMM) &&   /* stw Ra, @(sp,imm) */
+             ((opl & OP_MASK_OP_AND_RB) != OP_ST2W_SP_IMM))    /* st2w Ra, @(sp,imm) */
            break;
        }
       else
@@ -268,15 +285,15 @@ d30v_skip_prologue (pc)
            {
              op1 = opr;
              op2 = opl;
-           } 
-         else 
+           }
+         else
            {
              op1 = opl;
              op2 = opr;
            }
-         if (check_prologue(op1))
+         if (check_prologue (op1))
            {
-             if (!check_prologue(op2))
+             if (!check_prologue (op2))
                {
                  /* if the previous opcode was really part of the prologue */
                  /* and not just a NOP, then we want to break after both instructions */
@@ -293,44 +310,46 @@ d30v_skip_prologue (pc)
   return pc;
 }
 
+static int end_of_stack;
+
 /* Given a GDB frame, determine the address of the calling function's frame.
    This will be used to create a new GDB frame struct, and then
    INIT_EXTRA_FRAME_INFO and INIT_FRAME_PC will be called for the new frame.
-*/
+ */
 
 CORE_ADDR
-d30v_frame_chain (frame)
-     struct frame_info *frame;
+d30v_frame_chain (struct frame_info *frame)
 {
   struct frame_saved_regs fsr;
 
   d30v_frame_find_saved_regs (frame, &fsr);
 
+  if (end_of_stack)
+    return (CORE_ADDR) 0;
+
   if (frame->return_pc == IMEM_START)
-    return (CORE_ADDR)0;
+    return (CORE_ADDR) 0;
 
   if (!fsr.regs[FP_REGNUM])
     {
       if (!fsr.regs[SP_REGNUM] || fsr.regs[SP_REGNUM] == STACK_START)
-       return (CORE_ADDR)0;
-      
+       return (CORE_ADDR) 0;
+
       return fsr.regs[SP_REGNUM];
     }
 
-  if (!read_memory_unsigned_integer(fsr.regs[FP_REGNUM],4))
-    return (CORE_ADDR)0;
+  if (!read_memory_unsigned_integer (fsr.regs[FP_REGNUM], 4))
+    return (CORE_ADDR) 0;
 
-  return read_memory_unsigned_integer(fsr.regs[FP_REGNUM],4)| DMEM_START;
-}  
+  return read_memory_unsigned_integer (fsr.regs[FP_REGNUM], 4);
+}
 
 static int next_addr, uses_frame;
 static int frame_size;
 
-static int 
-prologue_find_regs (op, fsr, addr)
-     unsigned long op;
-     struct frame_saved_regs *fsr;
-     CORE_ADDR addr;
+static int
+prologue_find_regs (unsigned long op, struct frame_saved_regs *fsr,
+                   CORE_ADDR addr)
 {
   int n;
   int offset;
@@ -338,8 +357,8 @@ prologue_find_regs (op, fsr, addr)
   /* add sp,sp,imm -- observed */
   if ((op & OP_MASK_ALL_BUT_IMM) == OP_ADD_SP_IMM)
     {
-      offset = EXTRACT_IMM6(op);
-      /*next_addr += offset;*/
+      offset = EXTRACT_IMM6 (op);
+      /*next_addr += offset; */
       frame_size += -offset;
       return 1;
     }
@@ -347,7 +366,7 @@ prologue_find_regs (op, fsr, addr)
   /* add r22,sp,imm -- observed */
   if ((op & OP_MASK_ALL_BUT_IMM) == OP_ADD_R22_SP_IMM)
     {
-      offset = EXTRACT_IMM6(op);
+      offset = EXTRACT_IMM6 (op);
       next_addr = (offset - frame_size);
       return 1;
     }
@@ -355,8 +374,8 @@ prologue_find_regs (op, fsr, addr)
   /* stw Ra, @(fp, offset) -- observed */
   if ((op & OP_MASK_OP_AND_RB) == OP_STW_FP_IMM)
     {
-      n = EXTRACT_RA(op);
-      offset = EXTRACT_IMM6(op);
+      n = EXTRACT_RA (op);
+      offset = EXTRACT_IMM6 (op);
       fsr->regs[n] = (offset - frame_size);
       return 1;
     }
@@ -364,8 +383,8 @@ prologue_find_regs (op, fsr, addr)
   /* stw Ra, @(fp, r0) -- observed */
   if ((op & OP_MASK_ALL_BUT_RA) == OP_STW_FP_R0)
     {
-      n = EXTRACT_RA(op);
-      fsr->regs[n] = (- frame_size);
+      n = EXTRACT_RA (op);
+      fsr->regs[n] = (-frame_size);
       return 1;
     }
 
@@ -385,7 +404,7 @@ prologue_find_regs (op, fsr, addr)
   /* stw Ra,@(r22+,r0) -- observed */
   if ((op & OP_MASK_ALL_BUT_RA) == OP_STW_R22P_R0)
     {
-      n = EXTRACT_RA(op);
+      n = EXTRACT_RA (op);
       fsr->regs[n] = next_addr;
       next_addr += 4;
       return 1;
@@ -394,7 +413,7 @@ prologue_find_regs (op, fsr, addr)
   /* stw fp,@(r22+,r0) -- observed */
   if (op == OP_STW_FP_R22P_R0)
     {
-      fsr->regs[FP_REGNUM] = next_addr;        /* XXX */
+      fsr->regs[FP_REGNUM] = next_addr;                /* XXX */
       next_addr += 4;
       return 1;
     }
@@ -410,9 +429,9 @@ prologue_find_regs (op, fsr, addr)
   /* st2w Ra,@(r22+,r0) -- observed */
   if ((op & OP_MASK_ALL_BUT_RA) == OP_ST2W_R22P_R0)
     {
-      n = EXTRACT_RA(op);
+      n = EXTRACT_RA (op);
       fsr->regs[n] = next_addr;
-      fsr->regs[n+1] = next_addr + 4;
+      fsr->regs[n + 1] = next_addr + 4;
       next_addr += 8;
       return 1;
     }
@@ -420,7 +439,7 @@ prologue_find_regs (op, fsr, addr)
   /* stw  rn, @(sp-) */
   if ((op & OP_MASK_ALL_BUT_RA) == OP_STW_SPM)
     {
-      n = EXTRACT_RA(op);
+      n = EXTRACT_RA (op);
       fsr->regs[n] = next_addr;
       next_addr -= 4;
       return 1;
@@ -429,9 +448,9 @@ prologue_find_regs (op, fsr, addr)
   /* st2w  Ra, @(sp-) */
   else if ((op & OP_MASK_ALL_BUT_RA) == OP_ST2W_SPM)
     {
-      n = EXTRACT_RA(op);
+      n = EXTRACT_RA (op);
       fsr->regs[n] = next_addr;
-      fsr->regs[n+1] = next_addr+4;
+      fsr->regs[n + 1] = next_addr + 4;
       next_addr -= 8;
       return 1;
     }
@@ -439,17 +458,17 @@ prologue_find_regs (op, fsr, addr)
   /* sub  sp,sp,imm */
   if ((op & OP_MASK_ALL_BUT_IMM) == OP_SUB_SP_IMM)
     {
-      offset = EXTRACT_IMM6(op);
-      next_addr -= offset;
+      offset = EXTRACT_IMM6 (op);
+      frame_size += -offset;
       return 1;
     }
 
-  /* st  rn, @(sp,0) */
+  /* st  rn, @(sp,0) -- observed */
   if (((op & OP_MASK_ALL_BUT_RA) == OP_STW_SP_R0) ||
       ((op & OP_MASK_ALL_BUT_RA) == OP_STW_SP_IMM0))
     {
-      n = EXTRACT_RA(op);
-      fsr->regs[n] = next_addr;
+      n = EXTRACT_RA (op);
+      fsr->regs[n] = (-frame_size);
       return 1;
     }
 
@@ -457,12 +476,19 @@ prologue_find_regs (op, fsr, addr)
   if (((op & OP_MASK_ALL_BUT_RA) == OP_ST2W_SP_R0) ||
       ((op & OP_MASK_ALL_BUT_RA) == OP_ST2W_SP_IMM0))
     {
-      n = EXTRACT_RA(op);
-      fsr->regs[n] = next_addr;
-      fsr->regs[n+1] = next_addr+4;
+      n = EXTRACT_RA (op);
+      fsr->regs[n] = (-frame_size);
+      fsr->regs[n + 1] = (-frame_size) + 4;
       return 1;
     }
 
+  /* stw fp,@(sp,imm) -- observed */
+  if ((op & OP_MASK_ALL_BUT_IMM) == OP_STW_FP_SP_IMM)
+    {
+      offset = EXTRACT_IMM6 (op);
+      fsr->regs[FP_REGNUM] = (offset - frame_size);
+      return 1;
+    }
   return 0;
 }
 
@@ -472,9 +498,59 @@ prologue_find_regs (op, fsr, addr)
    ways in the stack frame.  sp is even more special: the address we
    return for it IS the sp for the next frame. */
 void
-d30v_frame_find_saved_regs (fi, fsr)
-     struct frame_info *fi;
-     struct frame_saved_regs *fsr;
+d30v_frame_find_saved_regs (struct frame_info *fi, struct frame_saved_regs *fsr)
+{
+  CORE_ADDR fp, pc;
+  unsigned long opl, opr;
+  unsigned long op1, op2;
+  unsigned long fm0, fm1;
+  int i;
+
+  fp = fi->frame;
+  memset (fsr, 0, sizeof (*fsr));
+  next_addr = 0;
+  frame_size = 0;
+  end_of_stack = 0;
+
+  uses_frame = 0;
+
+  d30v_frame_find_saved_regs_offsets (fi, fsr);
+
+  fi->size = frame_size;
+
+  if (!fp)
+    fp = read_register (SP_REGNUM);
+
+  for (i = 0; i < NUM_REGS - 1; i++)
+    if (fsr->regs[i])
+      {
+       fsr->regs[i] = fsr->regs[i] + fp + frame_size;
+      }
+
+  if (fsr->regs[LR_REGNUM])
+    fi->return_pc = read_memory_unsigned_integer (fsr->regs[LR_REGNUM], 4);
+  else
+    fi->return_pc = read_register (LR_REGNUM);
+
+  /* the SP is not normally (ever?) saved, but check anyway */
+  if (!fsr->regs[SP_REGNUM])
+    {
+      /* if the FP was saved, that means the current FP is valid, */
+      /* otherwise, it isn't being used, so we use the SP instead */
+      if (uses_frame)
+       fsr->regs[SP_REGNUM] = read_register (FP_REGNUM) + fi->size;
+      else
+       {
+         fsr->regs[SP_REGNUM] = fp + fi->size;
+         fi->frameless = 1;
+         fsr->regs[FP_REGNUM] = 0;
+       }
+    }
+}
+
+void
+d30v_frame_find_saved_regs_offsets (struct frame_info *fi,
+                                   struct frame_saved_regs *fsr)
 {
   CORE_ADDR fp, pc;
   unsigned long opl, opr;
@@ -486,14 +562,15 @@ d30v_frame_find_saved_regs (fi, fsr)
   memset (fsr, 0, sizeof (*fsr));
   next_addr = 0;
   frame_size = 0;
+  end_of_stack = 0;
 
   pc = get_pc_function_start (fi->pc);
 
   uses_frame = 0;
-  while (1)
+  while (pc < fi->pc)
     {
-      opl = (unsigned long)read_memory_integer (pc, 4);
-      opr = (unsigned long)read_memory_integer (pc+4, 4);
+      opl = (unsigned long) read_memory_integer (pc, 4);
+      opr = (unsigned long) read_memory_integer (pc + 4, 4);
 
       fm0 = (opl & OP_MASK_FM_BIT);
       fm1 = (opr & OP_MASK_FM_BIT);
@@ -507,29 +584,33 @@ d30v_frame_find_saved_regs (fi, fsr)
          if ((opl & OP_MASK_ALL_BUT_IMM) == OP_ADD_SP_IMM)
            {
              /* add sp,sp,n */
-             long offset = EXTRACT_IMM32(opl, opr);
+             long offset = EXTRACT_IMM32 (opl, opr);
              frame_size += -offset;
            }
          else if ((opl & OP_MASK_ALL_BUT_IMM) == OP_ADD_R22_SP_IMM)
            {
              /* add r22,sp,offset */
-             long offset = EXTRACT_IMM32(opl,opr);
+             long offset = EXTRACT_IMM32 (opl, opr);
              next_addr = (offset - frame_size);
            }
          else if ((opl & OP_MASK_OP_AND_RB) == OP_STW_SP_IMM)
            {
              /* st Ra, @(sp,imm) */
-             long offset = EXTRACT_IMM32(opl, opr);
-             short n = EXTRACT_RA(opl);
+             long offset = EXTRACT_IMM32 (opl, opr);
+             short n = EXTRACT_RA (opl);
              fsr->regs[n] = (offset - frame_size);
            }
          else if ((opl & OP_MASK_OP_AND_RB) == OP_ST2W_SP_IMM)
            {
              /* st2w Ra, @(sp,offset) */
-             long offset = EXTRACT_IMM32(opl, opr);
-             short n = EXTRACT_RA(opl);
+             long offset = EXTRACT_IMM32 (opl, opr);
+             short n = EXTRACT_RA (opl);
              fsr->regs[n] = (offset - frame_size);
-             fsr->regs[n+1] = (offset - frame_size) + 4;
+             fsr->regs[n + 1] = (offset - frame_size) + 4;
+           }
+         else if ((opl & OP_MASK_ALL_BUT_IMM) == OP_OR_SP_R0_IMM)
+           {
+             end_of_stack = 1;
            }
          else
            break;
@@ -541,43 +622,42 @@ d30v_frame_find_saved_regs (fi, fsr)
            {
              op2 = opl;
              op1 = opr;
-           } 
-         else 
+           }
+         else
            {
              op1 = opl;
              op2 = opr;
            }
-         if (!prologue_find_regs(op1,fsr,pc) || !prologue_find_regs(op2,fsr,pc))
+         if (!prologue_find_regs (op1, fsr, pc) || !prologue_find_regs (op2, fsr, pc))
            break;
        }
       pc += 8;
     }
-  
+
+#if 0
   fi->size = frame_size;
+
   if (!fp)
-#if 0
-    fp = read_register(SP_REGNUM) | DMEM_START;
-#else
-    fp = read_register(SP_REGNUM);
-#endif
-  for (i=0; i<NUM_REGS-1; i++)
+    fp = read_register (SP_REGNUM);
+
+  for (i = 0; i < NUM_REGS - 1; i++)
     if (fsr->regs[i])
       {
        fsr->regs[i] = fsr->regs[i] + fp + frame_size;
       }
 
   if (fsr->regs[LR_REGNUM])
-    fi->return_pc = read_memory_unsigned_integer(fsr->regs[LR_REGNUM],4);
+    fi->return_pc = read_memory_unsigned_integer (fsr->regs[LR_REGNUM], 4);
   else
-    fi->return_pc = read_register(LR_REGNUM);
-  
-  /* th SP is not normally (ever?) saved, but check anyway */
+    fi->return_pc = read_register (LR_REGNUM);
+
+  /* the SP is not normally (ever?) saved, but check anyway */
   if (!fsr->regs[SP_REGNUM])
     {
       /* if the FP was saved, that means the current FP is valid, */
       /* otherwise, it isn't being used, so we use the SP instead */
       if (uses_frame)
-       fsr->regs[SP_REGNUM] = read_register(FP_REGNUM) + fi->size;
+       fsr->regs[SP_REGNUM] = read_register (FP_REGNUM) + fi->size;
       else
        {
          fsr->regs[SP_REGNUM] = fp + fi->size;
@@ -585,25 +665,41 @@ d30v_frame_find_saved_regs (fi, fsr)
          fsr->regs[FP_REGNUM] = 0;
        }
     }
+#endif
 }
 
 void
-d30v_init_extra_frame_info (fromleaf, fi)
-     int fromleaf;
-     struct frame_info *fi;
+d30v_init_extra_frame_info (int fromleaf, struct frame_info *fi)
 {
   struct frame_saved_regs dummy;
 
   if (fi->next && (fi->pc == 0))
-    fi->pc = fi->next->return_pc; 
+    fi->pc = fi->next->return_pc;
+
+  d30v_frame_find_saved_regs_offsets (fi, &dummy);
+
+  if (uses_frame == 0)
+    fi->frameless = 1;
+  else
+    fi->frameless = 0;
+
+  if ((fi->next == 0) && (uses_frame == 0))
+    /* innermost frame and it's "frameless",
+       so the fi->frame field is wrong, fix it! */
+    fi->frame = read_sp ();
 
-  d30v_frame_find_saved_regs (fi, &dummy);
+  if (dummy.regs[LR_REGNUM])
+    {
+      /* it was saved, grab it! */
+      dummy.regs[LR_REGNUM] += (fi->frame + frame_size);
+      fi->return_pc = read_memory_unsigned_integer (dummy.regs[LR_REGNUM], 4);
+    }
+  else
+    fi->return_pc = read_register (LR_REGNUM);
 }
 
 void
-d30v_init_frame_pc (fromleaf, prev)
-     int fromleaf;
-     struct frame_info *prev;
+d30v_init_frame_pc (int fromleaf, struct frame_info *prev)
 {
   /* default value, put here so we can breakpoint on it and
      see if the default value is really the right thing to use */
@@ -611,20 +707,19 @@ d30v_init_frame_pc (fromleaf, prev)
              prev->next ? FRAME_SAVED_PC (prev->next) : read_pc ());
 }
 
-static void d30v_print_register PARAMS ((int regnum, int tabular));
+static void d30v_print_register (int regnum, int tabular);
 
 static void
-d30v_print_register (regnum, tabular)
-     int regnum;
-     int tabular;
+d30v_print_register (int regnum, int tabular)
 {
   if (regnum < A0_REGNUM)
     {
       if (tabular)
-       printf_filtered ("%08x", read_register (regnum));
+       printf_filtered ("%08lx", (long) read_register (regnum));
       else
-       printf_filtered ("0x%x  %d", read_register (regnum),
-                        read_register (regnum));
+       printf_filtered ("0x%lx %ld",
+                        (long) read_register (regnum),
+                        (long) read_register (regnum));
     }
   else
     {
@@ -632,20 +727,20 @@ d30v_print_register (regnum, tabular)
 
       read_relative_register_raw_bytes (regnum, regbuf);
 
-      val_print (REGISTER_VIRTUAL_TYPE (regnum), regbuf, 0,
+      val_print (REGISTER_VIRTUAL_TYPE (regnum), regbuf, 0, 0,
                 gdb_stdout, 'x', 1, 0, Val_pretty_default);
 
       if (!tabular)
        {
          printf_filtered ("    ");
-         val_print (REGISTER_VIRTUAL_TYPE (regnum), regbuf, 0,
-                gdb_stdout, 'd', 1, 0, Val_pretty_default);
+         val_print (REGISTER_VIRTUAL_TYPE (regnum), regbuf, 0, 0,
+                    gdb_stdout, 'd', 1, 0, Val_pretty_default);
        }
     }
 }
 
 static void
-d30v_print_flags ()
+d30v_print_flags (void)
 {
   long psw = read_register (PSW_REGNUM);
   printf_filtered ("flags #1");
@@ -669,27 +764,23 @@ d30v_print_flags ()
 }
 
 static void
-print_flags_command (args, from_tty)
-     char *args;
-     int from_tty;
+print_flags_command (char *args, int from_tty)
 {
   d30v_print_flags ();
 }
 
 void
-d30v_do_registers_info (regnum, fpregs)
-     int regnum;
-     int fpregs;
+d30v_do_registers_info (int regnum, int fpregs)
 {
   long long num1, num2;
   long psw;
 
   if (regnum != -1)
     {
-      if (reg_names[0] == NULL || reg_names[0][0] == '\000')
+      if (REGISTER_NAME (0) == NULL || REGISTER_NAME (0)[0] == '\000')
        return;
 
-      printf_filtered ("%s ", reg_names[regnum]);
+      printf_filtered ("%s ", REGISTER_NAME (regnum));
       d30v_print_register (regnum, 0);
 
       printf_filtered ("\n");
@@ -777,60 +868,50 @@ d30v_do_registers_info (regnum, fpregs)
 }
 
 CORE_ADDR
-d30v_fix_call_dummy (dummyname, start_sp, fun, nargs, args, type, gcc_p)
-     char *dummyname;
-     CORE_ADDR start_sp;
-     CORE_ADDR fun;
-     int nargs;
-     value_ptr *args;
-     struct type *type;
-     int gcc_p;
+d30v_fix_call_dummy (char *dummyname, CORE_ADDR start_sp, CORE_ADDR fun,
+                    int nargs, struct value **args,
+                    struct type *type, int gcc_p)
 {
   int regnum;
   CORE_ADDR sp;
   char buffer[MAX_REGISTER_RAW_SIZE];
   struct frame_info *frame = get_current_frame ();
   frame->dummy = start_sp;
-  /*start_sp |= DMEM_START;*/
+  /*start_sp |= DMEM_START; */
 
   sp = start_sp;
   for (regnum = 0; regnum < NUM_REGS; regnum++)
     {
-      sp -= REGISTER_RAW_SIZE(regnum);
-      store_address (buffer, REGISTER_RAW_SIZE(regnum), read_register(regnum));
-      write_memory (sp, buffer, REGISTER_RAW_SIZE(regnum));
+      sp -= REGISTER_RAW_SIZE (regnum);
+      store_address (buffer, REGISTER_RAW_SIZE (regnum), read_register (regnum));
+      write_memory (sp, buffer, REGISTER_RAW_SIZE (regnum));
     }
-  write_register (SP_REGNUM, (LONGEST)sp);
+  write_register (SP_REGNUM, (LONGEST) sp);
   /* now we need to load LR with the return address */
-  write_register (LR_REGNUM, (LONGEST)d30v_call_dummy_address());  
+  write_register (LR_REGNUM, (LONGEST) d30v_call_dummy_address ());
   return sp;
 }
 
 static void
-d30v_pop_dummy_frame (fi)
-     struct frame_info *fi;
+d30v_pop_dummy_frame (struct frame_info *fi)
 {
   CORE_ADDR sp = fi->dummy;
   int regnum;
 
   for (regnum = 0; regnum < NUM_REGS; regnum++)
     {
-      sp -= REGISTER_RAW_SIZE(regnum);
-      write_register(regnum, read_memory_unsigned_integer (sp, REGISTER_RAW_SIZE(regnum)));
+      sp -= REGISTER_RAW_SIZE (regnum);
+      write_register (regnum, read_memory_unsigned_integer (sp, REGISTER_RAW_SIZE (regnum)));
     }
-  flush_cached_frames (); /* needed? */
+  flush_cached_frames ();      /* needed? */
 }
 
 
 CORE_ADDR
-d30v_push_arguments (nargs, args, sp, struct_return, struct_addr)
-     int nargs;
-     value_ptr *args;
-     CORE_ADDR sp;
-     int struct_return;
-     CORE_ADDR struct_addr;
+d30v_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
+                    int struct_return, CORE_ADDR struct_addr)
 {
-  int i, len, index=0, regnum=2;
+  int i, len, index = 0, regnum = 2;
   char buffer[4], *contents;
   LONGEST val;
   CORE_ADDR ptrs[10];
@@ -839,10 +920,10 @@ d30v_push_arguments (nargs, args, sp, struct_return, struct_addr)
   /* Pass 1. Put all large args on stack */
   for (i = 0; i < nargs; i++)
     {
-      value_ptr arg = args[i];
+      struct value *arg = args[i];
       struct type *arg_type = check_typedef (VALUE_TYPE (arg));
       len = TYPE_LENGTH (arg_type);
-      contents = VALUE_CONTENTS(arg);
+      contents = VALUE_CONTENTS (arg);
       val = extract_signed_integer (contents, len);
       if (len > 4)
        {
@@ -857,31 +938,41 @@ d30v_push_arguments (nargs, args, sp, struct_return, struct_addr)
 
   for (i = 0; i < nargs; i++)
     {
-      value_ptr arg = args[i];
+      struct value *arg = args[i];
       struct type *arg_type = check_typedef (VALUE_TYPE (arg));
       len = TYPE_LENGTH (arg_type);
-      contents = VALUE_CONTENTS(arg);
-      val = extract_signed_integer (contents, len);
+      contents = VALUE_CONTENTS (arg);
       if (len > 4)
        {
          /* we need multiple registers */
          int ndx;
 
-         for (ndx = 0; ndx < len; ndx += 4, len -= 4)
+         for (ndx = 0; len > 0; ndx += 8, len -= 8)
            {
+             if (regnum & 1)
+               regnum++;       /* all args > 4 bytes start in even register */
+
              if (regnum < 18)
                {
-                 if (len > 4)
-                   val = extract_signed_integer (&contents[ndx], 4);
-                 else
-                   val = extract_signed_integer (&contents[ndx], len);
+                 val = extract_signed_integer (&contents[ndx], 4);
+                 write_register (regnum++, val);
 
+                 if (len >= 8)
+                   val = extract_signed_integer (&contents[ndx + 4], 4);
+                 else
+                   val = extract_signed_integer (&contents[ndx + 4], len - 4);
                  write_register (regnum++, val);
                }
              else
                {
                  /* no more registers available.  put it on the stack */
-                 sp -= len;
+
+                 /* all args > 4 bytes are padded to a multiple of 8 bytes
+                    and start on an 8 byte boundary */
+                 if (sp & 7)
+                   sp -= (sp & 7);     /* align it */
+
+                 sp -= ((len + 7) & ~7);       /* allocate space */
                  write_memory (sp, &contents[ndx], len);
                  break;
                }
@@ -889,18 +980,22 @@ d30v_push_arguments (nargs, args, sp, struct_return, struct_addr)
        }
       else
        {
-         if (regnum < 18 )
+         if (regnum < 18)
            {
+             val = extract_signed_integer (contents, len);
              write_register (regnum++, val);
            }
          else
            {
-             sp -= len;
-             store_address (buffer, len, val);
-             write_memory (sp, buffer, len);
+             /* all args are padded to a multiple of 4 bytes (at least) */
+             sp -= ((len + 3) & ~3);
+             write_memory (sp, contents, len);
            }
        }
     }
+  if (sp & 7)
+    /* stack pointer is not on an 8 byte boundary -- align it */
+    sp -= (sp & 7);
   return sp;
 }
 
@@ -912,7 +1007,7 @@ d30v_push_arguments (nargs, args, sp, struct_return, struct_addr)
 /* restored. */
 
 CORE_ADDR
-d30v_call_dummy_address ()
+d30v_call_dummy_address (void)
 {
   CORE_ADDR entry;
   struct minimal_symbol *sym;
@@ -934,10 +1029,8 @@ d30v_call_dummy_address ()
    extract and copy its value into `valbuf'.  */
 
 void
-d30v_extract_return_value (valtype, regbuf, valbuf)
-     struct type *valtype;
-     char regbuf[REGISTER_BYTES];
-     char *valbuf;
+d30v_extract_return_value (struct type *valtype, char regbuf[REGISTER_BYTES],
+                          char *valbuf)
 {
   memcpy (valbuf, regbuf + REGISTER_BYTE (2), TYPE_LENGTH (valtype));
 }
@@ -968,15 +1061,15 @@ d30v_extract_return_value (valtype, regbuf, valbuf)
 
 #define TRACE_BUFFER_BASE (0xf40000)
 
-static void trace_command PARAMS ((char *, int));
+static void trace_command (char *, int);
 
-static void untrace_command PARAMS ((char *, int));
+static void untrace_command (char *, int);
 
-static void trace_info PARAMS ((char *, int));
+static void trace_info (char *, int);
 
-static void tdisassemble_command PARAMS ((char *, int));
+static void tdisassemble_command (char *, int);
 
-static void display_trace PARAMS ((int, int));
+static void display_trace (int, int);
 
 /* True when instruction traces are being collected.  */
 
@@ -994,23 +1087,23 @@ static int trace_display;
 
 static int default_trace_show_source = 1;
 
-struct trace_buffer {
-  int size;
-  short *counts;
-  CORE_ADDR *addrs;
-} trace_data;
+struct trace_buffer
+  {
+    int size;
+    short *counts;
+    CORE_ADDR *addrs;
+  }
+trace_data;
 
 static void
-trace_command (args, from_tty)
-     char *args;
-     int from_tty;
+trace_command (char *args, int from_tty)
 {
   /* Clear the host-side trace buffer, allocating space if needed.  */
   trace_data.size = 0;
   if (trace_data.counts == NULL)
-    trace_data.counts = (short *) xmalloc (65536 * sizeof(short));
+    trace_data.counts = (short *) xmalloc (65536 * sizeof (short));
   if (trace_data.addrs == NULL)
-    trace_data.addrs = (CORE_ADDR *) xmalloc (65536 * sizeof(CORE_ADDR));
+    trace_data.addrs = (CORE_ADDR *) xmalloc (65536 * sizeof (CORE_ADDR));
 
   tracing = 1;
 
@@ -1018,9 +1111,7 @@ trace_command (args, from_tty)
 }
 
 static void
-untrace_command (args, from_tty)
-     char *args;
-     int from_tty;
+untrace_command (char *args, int from_tty)
 {
   tracing = 0;
 
@@ -1028,9 +1119,7 @@ untrace_command (args, from_tty)
 }
 
 static void
-trace_info (args, from_tty)
-     char *args;
-     int from_tty;
+trace_info (char *args, int from_tty)
 {
   int i;
 
@@ -1040,10 +1129,10 @@ trace_info (args, from_tty)
 
       for (i = 0; i < trace_data.size; ++i)
        {
-         printf_filtered ("%d: %d instruction%s at 0x%x\n",
+         printf_filtered ("%d: %d instruction%s at 0x%s\n",
                           i, trace_data.counts[i],
                           (trace_data.counts[i] == 1 ? "" : "s"),
-                          trace_data.addrs[i]);
+                          paddr_nz (trace_data.addrs[i]));
        }
     }
   else
@@ -1056,23 +1145,22 @@ trace_info (args, from_tty)
    on STREAM.  Returns length of the instruction, in bytes.  */
 
 static int
-print_insn (memaddr, stream)
-     CORE_ADDR memaddr;
-     GDB_FILE *stream;
+print_insn (CORE_ADDR memaddr, struct ui_file *stream)
 {
   /* If there's no disassembler, something is very wrong.  */
   if (tm_print_insn == NULL)
-    abort ();
+    internal_error (__FILE__, __LINE__,
+                   "print_insn: no disassembler");
 
-  if (TARGET_BYTE_ORDER == BIG_ENDIAN)
+  if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
     tm_print_insn_info.endian = BFD_ENDIAN_BIG;
   else
     tm_print_insn_info.endian = BFD_ENDIAN_LITTLE;
-  return (*tm_print_insn) (memaddr, &tm_print_insn_info);
+  return TARGET_PRINT_INSN (memaddr, &tm_print_insn_info);
 }
 
 void
-d30v_eva_prepare_to_trace ()
+d30v_eva_prepare_to_trace (void)
 {
   if (!tracing)
     return;
@@ -1084,7 +1172,7 @@ d30v_eva_prepare_to_trace ()
    more useful for display.  */
 
 void
-d30v_eva_get_trace_data ()
+d30v_eva_get_trace_data (void)
 {
   int count, i, j, oldsize;
   int trace_addr, trace_seg, trace_cnt, next_cnt;
@@ -1094,7 +1182,7 @@ d30v_eva_get_trace_data ()
   if (!tracing)
     return;
 
-  tmpspace = xmalloc (65536 * sizeof(unsigned int));
+  tmpspace = xmalloc (65536 * sizeof (unsigned int));
 
   last_trace = read_memory_unsigned_integer (DBBC_ADDR, 2) << 2;
 
@@ -1137,16 +1225,14 @@ d30v_eva_get_trace_data ()
   oldsize = trace_data.size;
   trace_data.size += count;
 
-  free (tmpspace);
+  xfree (tmpspace);
 
   if (trace_display)
     display_trace (oldsize, trace_data.size);
 }
 
 static void
-tdisassemble_command (arg, from_tty)
-     char *arg;
-     int from_tty;
+tdisassemble_command (char *arg, int from_tty)
 {
   int i, count;
   CORE_ADDR low, high;
@@ -1172,7 +1258,9 @@ tdisassemble_command (arg, from_tty)
        high = low;
     }
 
-  printf_filtered ("Dump of trace from %d to %d:\n", low, high);
+  printf_filtered ("Dump of trace from %s to %s:\n",
+                  paddr_u (low),
+                  paddr_u (high));
 
   display_trace (low, high);
 
@@ -1181,14 +1269,13 @@ tdisassemble_command (arg, from_tty)
 }
 
 static void
-display_trace (low, high)
-     int low, high;
+display_trace (int low, int high)
 {
   int i, count, trace_show_source, first, suppress;
   CORE_ADDR next_address;
 
   trace_show_source = default_trace_show_source;
-  if (!have_full_symbols () && !have_partial_symbols())
+  if (!have_full_symbols () && !have_partial_symbols ())
     {
       trace_show_source = 0;
       printf_filtered ("No symbol table is loaded.  Use the \"file\" command.\n");
@@ -1200,7 +1287,7 @@ display_trace (low, high)
   for (i = low; i < high; ++i)
     {
       next_address = trace_data.addrs[i];
-      count = trace_data.counts[i]; 
+      count = trace_data.counts[i];
       while (count-- > 0)
        {
          QUIT;
@@ -1222,7 +1309,7 @@ display_trace (low, high)
                  if (!suppress)
                    /* FIXME-32x64--assumes sal.pc fits in long.  */
                    printf_filtered ("No source file for address %s.\n",
-                                    local_hex_string((unsigned long) sal.pc));
+                                local_hex_string ((unsigned long) sal.pc));
                  suppress = 1;
                }
            }
@@ -1238,11 +1325,11 @@ display_trace (low, high)
     }
 }
 
-extern void (*target_resume_hook) PARAMS ((void));
-extern void (*target_wait_loop_hook) PARAMS ((void));
+extern void (*target_resume_hook) (void);
+extern void (*target_wait_loop_hook) (void);
 
 void
-_initialize_d30v_tdep ()
+_initialize_d30v_tdep (void)
 {
   tm_print_insn = print_insn_d30v;
 
@@ -1255,7 +1342,7 @@ _initialize_d30v_tdep ()
           "Enable tracing of instruction execution.");
 
   add_com ("untrace", class_support, untrace_command,
-          "Disable tracing of instruction execution.");
+          "Disable tracing of instruction execution.");
 
   add_com ("tdisassemble", class_vars, tdisassemble_command,
           "Disassemble the trace buffer.\n\
@@ -1266,12 +1353,12 @@ as reported by info trace (NOT addresses!).");
            "Display info about the trace data buffer.");
 
   add_show_from_set (add_set_cmd ("tracedisplay", no_class,
-                                 var_integer, (char *)&trace_display,
-                                 "Set automatic display of trace.\n", &setlist),
+                                 var_integer, (char *) &trace_display,
+                            "Set automatic display of trace.\n", &setlist),
                     &showlist);
   add_show_from_set (add_set_cmd ("tracesource", no_class,
-                                 var_integer, (char *)&default_trace_show_source,
-                                 "Set display of source code with trace.\n", &setlist),
+                          var_integer, (char *) &default_trace_show_source,
+                     "Set display of source code with trace.\n", &setlist),
                     &showlist);
 
-} 
+}