2004-10-06 Felix Lee <felix+log1@specifixinc.com>
[deliverable/binutils-gdb.git] / gdb / v850-tdep.c
index 8b5070c1acd8be49f4e6fd815b4e6a8b51e62a05..79dbafce5ddd40e746a554cef78213dccbf94672 100644 (file)
@@ -1,6 +1,7 @@
 /* Target-dependent code for the NEC V850 for GDB, the GNU debugger.
-   Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003
-   Free Software Foundation, Inc.
+
+   Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+   Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,7 +28,7 @@
 #include "bfd.h"
 #include "gdb_string.h"
 #include "gdbcore.h"
-#include "symfile.h"
+#include "objfiles.h"
 #include "arch-utils.h"
 #include "regcache.h"
 #include "symtab.h"
@@ -247,16 +248,6 @@ v850_register_raw_size (int regnum)
     return v850_reg_size;
 }
 
-/* Function: v850_register_virtual_size
-   Returns the number of bytes occupied by the register as represented
-   internally by gdb. */
-
-static int
-v850_register_virtual_size (int regnum)
-{
-  return v850_register_raw_size (regnum);
-}
-
 /* Function: v850_reg_virtual_type 
    Returns the default type for register N. */
 
@@ -806,12 +797,11 @@ static CORE_ADDR
 v850_find_callers_reg (struct frame_info *fi, int regnum)
 {
   for (; fi; fi = get_next_frame (fi))
-    if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
-                                    get_frame_base (fi)))
+    if (deprecated_pc_in_call_dummy (get_frame_pc (fi)))
       return deprecated_read_register_dummy (get_frame_pc (fi),
                                             get_frame_base (fi), regnum);
-    else if (get_frame_saved_regs (fi)[regnum] != 0)
-      return read_memory_unsigned_integer (get_frame_saved_regs (fi)[regnum],
+    else if (deprecated_get_frame_saved_regs (fi)[regnum] != 0)
+      return read_memory_unsigned_integer (deprecated_get_frame_saved_regs (fi)[regnum],
                                           v850_register_raw_size (regnum));
 
   return read_register (regnum);
@@ -834,7 +824,7 @@ v850_frame_chain (struct frame_info *fi)
   callers_pc = DEPRECATED_FRAME_SAVED_PC (fi);
   /* If caller is a call-dummy, then our FP bears no relation to his FP! */
   fp = v850_find_callers_reg (fi, E_FP_RAW_REGNUM);
-  if (DEPRECATED_PC_IN_CALL_DUMMY (callers_pc, fp, fp))
+  if (deprecated_pc_in_call_dummy (callers_pc))
     return fp;                 /* caller is call-dummy: return oldest value of FP */
 
   /* Caller is NOT a call-dummy, so everything else should just work.
@@ -891,18 +881,16 @@ v850_pop_frame (void)
   struct frame_info *frame = get_current_frame ();
   int regnum;
 
-  if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
-                                  get_frame_base (frame),
-                                  get_frame_base (frame)))
-    generic_pop_dummy_frame ();
+  if (deprecated_pc_in_call_dummy (get_frame_pc (frame)))
+    deprecated_pop_dummy_frame ();
   else
     {
       write_register (E_PC_REGNUM, DEPRECATED_FRAME_SAVED_PC (frame));
 
       for (regnum = 0; regnum < E_NUM_REGS; regnum++)
-       if (get_frame_saved_regs (frame)[regnum] != 0)
+       if (deprecated_get_frame_saved_regs (frame)[regnum] != 0)
          write_register (regnum,
-                     read_memory_unsigned_integer (get_frame_saved_regs (frame)[regnum],
+                     read_memory_unsigned_integer (deprecated_get_frame_saved_regs (frame)[regnum],
                                             v850_register_raw_size (regnum)));
 
       write_register (E_SP_REGNUM, get_frame_base (frame));
@@ -1019,8 +1007,7 @@ v850_push_return_address (CORE_ADDR pc, CORE_ADDR sp)
 static CORE_ADDR
 v850_frame_saved_pc (struct frame_info *fi)
 {
-  if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
-                                  get_frame_base (fi)))
+  if (deprecated_pc_in_call_dummy (get_frame_pc (fi)))
     return deprecated_read_register_dummy (get_frame_pc (fi),
                                           get_frame_base (fi), E_PC_REGNUM);
   else
@@ -1028,27 +1015,6 @@ v850_frame_saved_pc (struct frame_info *fi)
 }
 
 
-/* Function: fix_call_dummy
-   Pokes the callee function's address into the CALL_DUMMY assembly stub.
-   Assumes that the CALL_DUMMY looks like this:
-   jarl <offset24>, r31
-   trap
- */
-
-static void
-v850_fix_call_dummy (char *dummy, CORE_ADDR sp, CORE_ADDR fun, int nargs,
-                    struct value **args, struct type *type, int gcc_p)
-{
-  long offset24;
-
-  offset24 = (long) fun - (long) entry_point_address ();
-  offset24 &= 0x3fffff;
-  offset24 |= 0xff800000;      /* jarl <offset24>, r31 */
-
-  store_unsigned_integer ((unsigned int *) &dummy[2], 2, offset24 & 0xffff);
-  store_unsigned_integer ((unsigned int *) &dummy[0], 2, offset24 >> 16);
-}
-
 static CORE_ADDR
 v850_saved_pc_after_call (struct frame_info *ignore)
 {
@@ -1065,7 +1031,7 @@ v850_extract_return_value (struct type *type, char *regbuf, char *valbuf)
       /* Scalar return values of <= 8 bytes are returned in 
          E_V0_REGNUM to E_V1_REGNUM. */
       memcpy (valbuf,
-             &regbuf[REGISTER_BYTE (E_V0_REGNUM)],
+             &regbuf[DEPRECATED_REGISTER_BYTE (E_V0_REGNUM)],
              TYPE_LENGTH (type));
     }
   else
@@ -1073,8 +1039,8 @@ v850_extract_return_value (struct type *type, char *regbuf, char *valbuf)
       /* Aggregates and return values > 8 bytes are returned in memory,
          pointed to by R6. */
       return_buffer =
-       extract_unsigned_integer (regbuf + REGISTER_BYTE (E_V0_REGNUM),
-                                 REGISTER_RAW_SIZE (E_V0_REGNUM));
+       extract_unsigned_integer (regbuf + DEPRECATED_REGISTER_BYTE (E_V0_REGNUM),
+                                 register_size (current_gdbarch, E_V0_REGNUM));
 
       read_memory (return_buffer, valbuf, TYPE_LENGTH (type));
     }
@@ -1088,20 +1054,13 @@ v850_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
   return breakpoint;
 }
 
-static CORE_ADDR
-v850_extract_struct_value_address (char *regbuf)
-{
-  return extract_unsigned_integer (regbuf + v850_register_byte (E_V0_REGNUM),
-                                  v850_register_raw_size (E_V0_REGNUM));
-}
-
 static void
 v850_store_return_value (struct type *type, char *valbuf)
 {
   CORE_ADDR return_buffer;
 
   if (!v850_use_struct_convention (0, type))
-    deprecated_write_register_bytes (REGISTER_BYTE (E_V0_REGNUM), valbuf,
+    deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (E_V0_REGNUM), valbuf,
                                     TYPE_LENGTH (type));
   else
     {
@@ -1117,14 +1076,13 @@ v850_frame_init_saved_regs (struct frame_info *fi)
   struct pifsr pifsrs[E_NUM_REGS + 1], *pifsr;
   CORE_ADDR func_addr, func_end;
 
-  if (!get_frame_saved_regs (fi))
+  if (!deprecated_get_frame_saved_regs (fi))
     {
       frame_saved_regs_zalloc (fi);
 
       /* The call dummy doesn't save any registers on the stack, so we
          can return now.  */
-      if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
-                                      get_frame_base (fi)))
+      if (deprecated_pc_in_call_dummy (get_frame_pc (fi)))
        return;
 
       /* Find the beginning of this function, so we can analyze its
@@ -1140,10 +1098,10 @@ v850_frame_init_saved_regs (struct frame_info *fi)
 
          for (pifsr = pifsrs; pifsr->framereg; pifsr++)
            {
-             get_frame_saved_regs (fi)[pifsr->reg] = pifsr->offset + get_frame_base (fi);
+             deprecated_get_frame_saved_regs (fi)[pifsr->reg] = pifsr->offset + get_frame_base (fi);
 
              if (pifsr->framereg == E_SP_REGNUM)
-               get_frame_saved_regs (fi)[pifsr->reg] += pi.frameoffset;
+               deprecated_get_frame_saved_regs (fi)[pifsr->reg] += pi.frameoffset;
            }
        }
       /* Else we're out of luck (can't debug completely stripped code). 
@@ -1191,7 +1149,6 @@ v850_target_read_fp (void)
 static struct gdbarch *
 v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
-  static LONGEST call_dummy_words[1] = { 0 };
   struct gdbarch_tdep *tdep = NULL;
   struct gdbarch *gdbarch;
   int i;
@@ -1213,7 +1170,7 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   /* NOTE: cagney/2002-12-06: This can be deleted when this arch is
      ready to unwind the PC first (see frame.c:get_prev_frame()).  */
-  set_gdbarch_deprecated_init_frame_pc (gdbarch, init_frame_pc_default);
+  set_gdbarch_deprecated_init_frame_pc (gdbarch, deprecated_init_frame_pc_default);
 
   for (i = 0; v850_processor_type_table[i].regnames != NULL; i++)
     {
@@ -1234,12 +1191,9 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_pc_regnum (gdbarch, E_PC_REGNUM);
   set_gdbarch_register_name (gdbarch, v850_register_name);
   set_gdbarch_deprecated_register_size (gdbarch, v850_reg_size);
-  set_gdbarch_deprecated_register_bytes (gdbarch, E_ALL_REGS_SIZE);
   set_gdbarch_deprecated_register_byte (gdbarch, v850_register_byte);
-  set_gdbarch_deprecated_register_raw_size (gdbarch, v850_register_raw_size);
-  set_gdbarch_deprecated_max_register_raw_size (gdbarch, v850_reg_size);
+  set_gdbarch_deprecated_register_raw_size (current_gdbarch, gdbarch, v850_register_raw_size);
   set_gdbarch_deprecated_register_virtual_size (gdbarch, v850_register_raw_size);
-  set_gdbarch_deprecated_max_register_virtual_size (gdbarch, v850_reg_size);
   set_gdbarch_deprecated_register_virtual_type (gdbarch, v850_reg_virtual_type);
 
   set_gdbarch_deprecated_target_read_fp (gdbarch, v850_target_read_fp);
@@ -1259,13 +1213,6 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
    */
   /* Stack grows up. */
   set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
-  /* PC stops zero byte after a trap instruction
-     (which means: exactly on trap instruction). */
-  set_gdbarch_decr_pc_after_break (gdbarch, 0);
-  /* This value is almost never non-zero... */
-  set_gdbarch_function_start_offset (gdbarch, 0);
-  /* This value is almost never non-zero... */
-  set_gdbarch_frame_args_skip (gdbarch, 0);
 
   /*
    * Call Dummies
@@ -1277,11 +1224,7 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_deprecated_pop_frame (gdbarch, v850_pop_frame);
   set_gdbarch_deprecated_store_struct_return (gdbarch, v850_store_struct_return);
   set_gdbarch_deprecated_store_return_value (gdbarch, v850_store_return_value);
-  set_gdbarch_deprecated_extract_struct_value_address (gdbarch, v850_extract_struct_value_address);
-  set_gdbarch_use_struct_convention (gdbarch, v850_use_struct_convention);
-  set_gdbarch_deprecated_call_dummy_words (gdbarch, call_dummy_nil);
-  set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, 0);
-  set_gdbarch_deprecated_fix_call_dummy (gdbarch, v850_fix_call_dummy);
+  set_gdbarch_deprecated_use_struct_convention (gdbarch, v850_use_struct_convention);
   set_gdbarch_breakpoint_from_pc (gdbarch, v850_breakpoint_from_pc);
 
   set_gdbarch_int_bit (gdbarch, 4 * TARGET_CHAR_BIT);
This page took 0.02832 seconds and 4 git commands to generate.