2002-05-10 Elena Zannoni <ezannoni@redhat.com>
[deliverable/binutils-gdb.git] / gdb / d10v-tdep.c
index 4bb9c9d570e7ca05f68155a0f176a8387f406c69..2060c93186fe9834ed074ebe765eae5638f40b21 100644 (file)
@@ -1,6 +1,7 @@
 /* Target-dependent code for Mitsubishi D10V, for GDB.
-   Copyright 1996, 1997, 1998, 1999, 2000, 2001
-   Free Software Foundation, Inc.
+
+   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
+   Foundation, Inc.
 
    This file is part of GDB.
 
@@ -41,9 +42,6 @@
 #include "floatformat.h"
 #include "sim-d10v.h"
 
-#undef XMALLOC
-#define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
-
 struct frame_extra_info
   {
     CORE_ADDR return_pc;
@@ -64,7 +62,7 @@ struct gdbarch_tdep
 
 #define DMEM_START     0x2000000
 #define IMEM_START     0x1000000
-#define STACK_START    0x0007ffe
+#define STACK_START    0x200bffe
 
 /* d10v register names. */
 
@@ -152,7 +150,7 @@ d10v_use_struct_convention (int gcc_p, struct type *type)
 }
 
 
-static unsigned char *
+static const unsigned char *
 d10v_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
 {
   static unsigned char breakpoint[] =
@@ -358,18 +356,6 @@ d10v_register_virtual_type (int reg_nr)
     return builtin_type_int16;
 }
 
-static CORE_ADDR
-d10v_make_daddr (CORE_ADDR x)
-{
-  return ((x) | DMEM_START);
-}
-
-static CORE_ADDR
-d10v_make_iaddr (CORE_ADDR x)
-{
-  return (((x) << 2) | IMEM_START);
-}
-
 static int
 d10v_daddr_p (CORE_ADDR x)
 {
@@ -382,6 +368,20 @@ d10v_iaddr_p (CORE_ADDR x)
   return (((x) & 0x3000000) == IMEM_START);
 }
 
+static CORE_ADDR
+d10v_make_daddr (CORE_ADDR x)
+{
+  return ((x) | DMEM_START);
+}
+
+static CORE_ADDR
+d10v_make_iaddr (CORE_ADDR x)
+{
+  if (d10v_iaddr_p (x))
+    return x;  /* Idempotency -- x is already in the IMEM space. */
+  else
+    return (((x) << 2) | IMEM_START);
+}
 
 static CORE_ADDR
 d10v_convert_iaddr_to_raw (CORE_ADDR x)
@@ -402,16 +402,6 @@ d10v_address_to_pointer (struct type *type, void *buf, CORE_ADDR addr)
   if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC
       || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_METHOD)
     {
-#if 0
-      if (! d10v_iaddr_p (addr))
-        {
-          warning_begin ();
-          fprintf_unfiltered (gdb_stderr, "address `");
-          print_address_numeric (addr, 1, gdb_stderr);
-          fprintf_unfiltered (gdb_stderr, "' is not a code address\n");
-        }
-#endif
-
       store_unsigned_integer (buf, TYPE_LENGTH (type), 
                               d10v_convert_iaddr_to_raw (addr));
     }
@@ -978,12 +968,6 @@ d10v_write_sp (CORE_ADDR val)
   write_register (SP_REGNUM, d10v_convert_daddr_to_raw (val));
 }
 
-static void
-d10v_write_fp (CORE_ADDR val)
-{
-  write_register (FP_REGNUM, d10v_convert_daddr_to_raw (val));
-}
-
 static CORE_ADDR
 d10v_read_fp (void)
 {
@@ -1268,7 +1252,7 @@ print_insn (CORE_ADDR memaddr, struct ui_file *stream)
     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;
@@ -1489,7 +1473,6 @@ d10v_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_read_pc (gdbarch, d10v_read_pc);
   set_gdbarch_write_pc (gdbarch, d10v_write_pc);
   set_gdbarch_read_fp (gdbarch, d10v_read_fp);
-  set_gdbarch_write_fp (gdbarch, d10v_write_fp);
   set_gdbarch_read_sp (gdbarch, d10v_read_sp);
   set_gdbarch_write_sp (gdbarch, d10v_write_sp);
 
@@ -1523,7 +1506,7 @@ d10v_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_long_double_bit (gdbarch, 8 * TARGET_CHAR_BIT);
   switch (info.byte_order)
     {
-    case BIG_ENDIAN:
+    case BFD_ENDIAN_BIG:
       set_gdbarch_float_format (gdbarch, &floatformat_ieee_single_big);
       set_gdbarch_double_format (gdbarch, &floatformat_ieee_single_big);
       set_gdbarch_long_double_format (gdbarch, &floatformat_ieee_double_big);
This page took 0.025479 seconds and 4 git commands to generate.