2003-06-08 Andrew Cagney <cagney@redhat.com>
[deliverable/binutils-gdb.git] / gdb / frv-tdep.c
index 682d9259abec02c3131596edd649644e8c80fc72..c978ec48b5cabdb21aa92b390e5cb46376434e7e 100644 (file)
@@ -1,5 +1,5 @@
 /* Target-dependent code for the Fujitsu FR-V, for GDB, the GNU Debugger.
-   Copyright 2002 Free Software Foundation, Inc.
+   Copyright 2002, 2003 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -35,20 +35,13 @@ static gdbarch_register_virtual_size_ftype frv_register_virtual_size;
 static gdbarch_register_virtual_type_ftype frv_register_virtual_type;
 static gdbarch_register_byte_ftype frv_register_byte;
 static gdbarch_breakpoint_from_pc_ftype frv_breakpoint_from_pc;
-static gdbarch_frame_chain_ftype frv_frame_chain;
-static gdbarch_frame_saved_pc_ftype frv_frame_saved_pc;
 static gdbarch_skip_prologue_ftype frv_skip_prologue;
-static gdbarch_frame_init_saved_regs_ftype frv_frame_init_saved_regs;
 static gdbarch_deprecated_extract_return_value_ftype frv_extract_return_value;
 static gdbarch_deprecated_extract_struct_value_address_ftype frv_extract_struct_value_address;
 static gdbarch_use_struct_convention_ftype frv_use_struct_convention;
 static gdbarch_frameless_function_invocation_ftype frv_frameless_function_invocation;
 static gdbarch_init_extra_frame_info_ftype stupid_useless_init_extra_frame_info;
-static gdbarch_store_return_value_ftype frv_store_return_value;
-static gdbarch_store_struct_return_ftype frv_store_struct_return;
 static gdbarch_push_arguments_ftype frv_push_arguments;
-static gdbarch_push_return_address_ftype frv_push_return_address;
-static gdbarch_pop_frame_ftype frv_pop_frame;
 static gdbarch_saved_pc_after_call_ftype frv_saved_pc_after_call;
 
 static void frv_pop_frame_regular (struct frame_info *frame);
@@ -769,8 +762,8 @@ frv_extract_return_value (struct type *type, char *regbuf, char *valbuf)
 static CORE_ADDR
 frv_extract_struct_value_address (char *regbuf)
 {
-  return extract_address (regbuf + frv_register_byte (struct_return_regnum),
-                         4);
+  return extract_unsigned_integer (regbuf + frv_register_byte (struct_return_regnum),
+                                  4);
 }
 
 static void
@@ -794,8 +787,7 @@ frv_saved_pc_after_call (struct frame_info *frame)
 static void
 frv_init_extra_frame_info (int fromleaf, struct frame_info *frame)
 {
-  frame->extra_info = (struct frame_extra_info *)
-    frame_obstack_alloc (sizeof (struct frame_extra_info));
+  frame_extra_info_zalloc (frame, sizeof (struct frame_extra_info));
   frame->extra_info->fp_to_callers_sp_offset = 0;
   frame->extra_info->lr_saved_on_stack = 0;
 }
@@ -851,7 +843,7 @@ frv_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
 
       if (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION)
        {
-         store_address (valbuf, 4, VALUE_ADDRESS (arg));
+         store_unsigned_integer (valbuf, 4, VALUE_ADDRESS (arg));
          typecode = TYPE_CODE_PTR;
          len = 4;
          val = valbuf;
@@ -867,7 +859,7 @@ frv_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
 
          if (argreg < 14)
            {
-             regval = extract_address (val, partial_len);
+             regval = extract_unsigned_integer (val, partial_len);
 #if 0
              printf("  Argnum %d data %x -> reg %d\n",
                     argnum, (int) regval, argreg);
@@ -905,9 +897,10 @@ frv_store_return_value (struct type *type, char *valbuf)
   int reg8_offset = frv_register_byte (8);
 
   if (length <= 4)
-    write_register_bytes (reg8_offset + (4 - length), valbuf, length);
+    deprecated_write_register_bytes (reg8_offset + (4 - length), valbuf,
+                                    length);
   else if (length == 8)
-    write_register_bytes (reg8_offset, valbuf, length);
+    deprecated_write_register_bytes (reg8_offset, valbuf, length);
   else
     internal_error (__FILE__, __LINE__,
                     "Don't know how to return a %d-byte value.", length);
@@ -1045,6 +1038,10 @@ frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   
   gdbarch = gdbarch_alloc (&info, var);
 
+  /* 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_short_bit (gdbarch, 16);
   set_gdbarch_int_bit (gdbarch, 32);
   set_gdbarch_long_bit (gdbarch, 32);
@@ -1056,17 +1053,17 @@ frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   set_gdbarch_num_regs (gdbarch, frv_num_regs);
   set_gdbarch_sp_regnum (gdbarch, sp_regnum);
-  set_gdbarch_fp_regnum (gdbarch, fp_regnum);
+  set_gdbarch_deprecated_fp_regnum (gdbarch, fp_regnum);
   set_gdbarch_pc_regnum (gdbarch, pc_regnum);
 
   set_gdbarch_register_name (gdbarch, frv_register_name);
-  set_gdbarch_register_size (gdbarch, 4);
-  set_gdbarch_register_bytes (gdbarch, frv_num_regs * 4);
+  set_gdbarch_deprecated_register_size (gdbarch, 4);
+  set_gdbarch_deprecated_register_bytes (gdbarch, frv_num_regs * 4);
   set_gdbarch_register_byte (gdbarch, frv_register_byte);
   set_gdbarch_register_raw_size (gdbarch, frv_register_raw_size);
-  set_gdbarch_max_register_raw_size (gdbarch, 4);
+  set_gdbarch_deprecated_max_register_raw_size (gdbarch, 4);
   set_gdbarch_register_virtual_size (gdbarch, frv_register_virtual_size);
-  set_gdbarch_max_register_virtual_size (gdbarch, 4);
+  set_gdbarch_deprecated_max_register_virtual_size (gdbarch, 4);
   set_gdbarch_register_virtual_type (gdbarch, frv_register_virtual_type);
 
   set_gdbarch_skip_prologue (gdbarch, frv_skip_prologue);
@@ -1076,61 +1073,39 @@ frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_frame_args_skip (gdbarch, 0);
   set_gdbarch_frameless_function_invocation (gdbarch, frv_frameless_function_invocation);
 
-  set_gdbarch_saved_pc_after_call (gdbarch, frv_saved_pc_after_call);
+  set_gdbarch_deprecated_saved_pc_after_call (gdbarch, frv_saved_pc_after_call);
 
-  set_gdbarch_frame_chain (gdbarch, frv_frame_chain);
-  set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
-  set_gdbarch_frame_saved_pc (gdbarch, frv_frame_saved_pc);
-  set_gdbarch_frame_args_address (gdbarch, default_frame_address);
-  set_gdbarch_frame_locals_address (gdbarch, default_frame_address);
+  set_gdbarch_deprecated_frame_chain (gdbarch, frv_frame_chain);
+  set_gdbarch_deprecated_frame_saved_pc (gdbarch, frv_frame_saved_pc);
 
-  set_gdbarch_frame_init_saved_regs (gdbarch, frv_frame_init_saved_regs);
+  set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, frv_frame_init_saved_regs);
 
   set_gdbarch_use_struct_convention (gdbarch, frv_use_struct_convention);
   set_gdbarch_deprecated_extract_return_value (gdbarch, frv_extract_return_value);
 
-  set_gdbarch_store_struct_return (gdbarch, frv_store_struct_return);
-  set_gdbarch_store_return_value (gdbarch, frv_store_return_value);
+  set_gdbarch_deprecated_store_struct_return (gdbarch, frv_store_struct_return);
+  set_gdbarch_deprecated_store_return_value (gdbarch, frv_store_return_value);
   set_gdbarch_deprecated_extract_struct_value_address (gdbarch, frv_extract_struct_value_address);
 
   /* Settings for calling functions in the inferior.  */
-  set_gdbarch_use_generic_dummy_frames (gdbarch, 1);
-  set_gdbarch_call_dummy_length (gdbarch, 0);
-  set_gdbarch_coerce_float_to_double (gdbarch, 
-                                     standard_coerce_float_to_double);
-  set_gdbarch_push_arguments (gdbarch, frv_push_arguments);
-  set_gdbarch_push_return_address (gdbarch, frv_push_return_address);
-  set_gdbarch_pop_frame (gdbarch, frv_pop_frame);
-
-  set_gdbarch_call_dummy_p (gdbarch, 1);
-  set_gdbarch_call_dummy_words (gdbarch, frv_call_dummy_words);
-  set_gdbarch_sizeof_call_dummy_words (gdbarch, sizeof (frv_call_dummy_words));
-  set_gdbarch_call_dummy_breakpoint_offset_p (gdbarch, 1);
-  set_gdbarch_init_extra_frame_info (gdbarch, frv_init_extra_frame_info);
+  set_gdbarch_deprecated_push_arguments (gdbarch, frv_push_arguments);
+  set_gdbarch_deprecated_push_return_address (gdbarch, frv_push_return_address);
+  set_gdbarch_deprecated_pop_frame (gdbarch, frv_pop_frame);
+
+  set_gdbarch_deprecated_call_dummy_words (gdbarch, frv_call_dummy_words);
+  set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, sizeof (frv_call_dummy_words));
+  set_gdbarch_deprecated_init_extra_frame_info (gdbarch, frv_init_extra_frame_info);
 
   /* Settings that should be unnecessary.  */
   set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
 
-  set_gdbarch_read_pc (gdbarch, generic_target_read_pc);
   set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
-  set_gdbarch_read_fp (gdbarch, generic_target_read_fp);
-  set_gdbarch_read_sp (gdbarch, generic_target_read_sp);
-  set_gdbarch_write_sp (gdbarch, generic_target_write_sp);
-
-  set_gdbarch_call_dummy_location (gdbarch, AT_ENTRY_POINT);
-  set_gdbarch_call_dummy_address (gdbarch, entry_point_address);
-  set_gdbarch_call_dummy_breakpoint_offset (gdbarch, 0);
-  set_gdbarch_call_dummy_start_offset (gdbarch, 0);
-  set_gdbarch_pc_in_call_dummy (gdbarch, pc_in_call_dummy_at_entry_point);
-  set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 0);
-  set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame);
-  set_gdbarch_fix_call_dummy (gdbarch, generic_fix_call_dummy);
+  set_gdbarch_deprecated_dummy_write_sp (gdbarch, deprecated_write_sp);
 
-  set_gdbarch_get_saved_register (gdbarch, generic_unwind_get_saved_register);
+  set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_at_entry_point);
 
   set_gdbarch_decr_pc_after_break (gdbarch, 0);
   set_gdbarch_function_start_offset (gdbarch, 0);
-  set_gdbarch_register_convertible (gdbarch, generic_register_convertible_not);
 
   set_gdbarch_remote_translate_xfer_address
     (gdbarch, frv_remote_translate_xfer_address);
@@ -1168,7 +1143,7 @@ _initialize_frv_tdep (void)
 {
   register_gdbarch_init (bfd_arch_frv, frv_gdbarch_init);
 
-  tm_print_insn = print_insn_frv;
+  deprecated_tm_print_insn = print_insn_frv;
 }
 
 \f
This page took 0.039993 seconds and 4 git commands to generate.