Remove tdesc stuff. Remove FRAME_CHAIN_COMBINE from all tm-*.h files,
authorJohn Gilmore <gnu@cygnus>
Mon, 18 Nov 1991 23:52:12 +0000 (23:52 +0000)
committerJohn Gilmore <gnu@cygnus>
Mon, 18 Nov 1991 23:52:12 +0000 (23:52 +0000)
since it was always defined exactly the same in all of them.

29 files changed:
gdb/ChangeLog
gdb/blockframe.c
gdb/coffread.c
gdb/infrun.c
gdb/m88k-tdep.c
gdb/tm-29k.h
gdb/tm-68k.h
gdb/tm-arm.h
gdb/tm-convex.h
gdb/tm-delta88.h
gdb/tm-i386v.h
gdb/tm-i960.h
gdb/tm-irix3.h
gdb/tm-m88k.h
gdb/tm-merlin.h
gdb/tm-mips.h
gdb/tm-nindy960.h
gdb/tm-np1.h
gdb/tm-pn.h
gdb/tm-pyr.h
gdb/tm-rs6000.h
gdb/tm-sparc.h
gdb/tm-sun386.h
gdb/tm-symmetry.h
gdb/tm-tahoe.h
gdb/tm-umax.h
gdb/tm-vax.h
gdb/xm-delta88.h
gdb/xm-m88k.h

index 2564a88da40a450fac6f15d46bf07dcbc9166a4c..4ceece7d9ca99ce00506c561f7c7d3e2d392e0f9 100644 (file)
@@ -1,3 +1,29 @@
+Mon Nov 18 15:12:45 1991  John Gilmore  (gnu at cygnus.com)
+
+       * blockframe.c:  Remove tdesc-related code.  Default
+       FRAME_CHAIN_COMBINE if not defined.
+       * infrun.c:  Remove tdesc-related code.
+       * m88k-tdep.c (frame_chain_combine, init_frame_pc):  Remove copies
+       of defaultable things.
+       * tm-m88k.h:  New file, common to all Moto 88k target configs.
+       Derived from tm-delta88.h.
+       * tm-delta88.h:  Use it.
+       * xm-m88k.h:  Common file for 88K hosts.  Remove obsolete stuff.
+       * xm-delta88.h:  Use it.
+       * tm-*.h:  Remove FRAME_CHAIN_COMBINE macros, since all are
+       default.
+       * coffread.c:  Remove tdesc stuff.
+
+Mon Nov 18 13:51:37 1991  Per Bothner  (bothner at cygnus.com)
+
+       * source.c (open_source_file):  If openp fails, try again
+       using just the base (non-directory) part of the filename.
+       This solves various annoying problems, such as when the
+       source was compiled with an absolute pathname - and the
+       source files have moved.  Or if the source was compiled
+       using a relative pathname, it can be more convenient
+       to just specific the source directory to the dir command.
+
 Mon Nov 18 00:04:41 1991  Fred Fish  (fnf at cygnus.com)
 
        * cplus-dem.c (munge_function_name):  Add missing third arg to
index 7efe14112706b8637a519dab63832d1af6e143ef..ee42d7c835cd8850695421fd96719ae5440c6347 100644 (file)
@@ -27,10 +27,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "value.h"             /* for read_register */
 #include "target.h"            /* for target_has_stack */
 
-/* Required by INIT_EXTRA_FRAME_INFO on 88k.  */
-#include <setjmp.h>
-#include <obstack.h>
-
 CORE_ADDR read_pc ();          /* In infcmd.c */
 
 /* Start and end of object file containing the entry point.
@@ -56,6 +52,79 @@ outside_startup_file (addr)
   return !(addr >= startup_file_start && addr < startup_file_end);
 }
 
+/* Support an alternate method to avoid running off the bottom of
+   the stack (or top, depending upon your stack orientation).
+
+   There are two frames that are "special", the frame for the function
+   containing the process entry point, since it has no predecessor frame,
+   and the frame for the function containing the user code entry point
+   (the main() function), since all the predecessor frames are for the
+   process startup code.  Since we have no guarantee that the linked
+   in startup modules have any debugging information that gdb can use,
+   we need to avoid following frame pointers back into frames that might
+   have been built in the startup code, as we might get hopelessly 
+   confused.  However, we almost always have debugging information
+   available for main().
+
+   These variables are used to save the range of PC values which are valid
+   within the main() function and within the function containing the process
+   entry point.  If we always consider the frame for main() as the outermost
+   frame when debugging user code, and the frame for the process entry
+   point function as the outermost frame when debugging startup code, then
+   all we have to do is have FRAME_CHAIN_VALID return false whenever a
+   frame's current PC is within the range specified by these variables.
+   In essence, we set "blocks" in the frame chain beyond which we will
+   not proceed when following the frame chain.  
+
+   A nice side effect is that we can still debug startup code without
+   running off the end of the frame chain, assuming that we have usable
+   debugging information in the startup modules, and if we choose to not
+   use the block at main, or can't find it for some reason, everything
+   still works as before.  And if we have no startup code debugging
+   information but we do have usable information for main(), backtraces
+   from user code don't go wandering off into the startup code.
+
+   To use this method, define your FRAME_CHAIN_VALID macro like:
+
+       #define FRAME_CHAIN_VALID(chain, thisframe)     \
+         (chain != 0                                   \
+          && !(inside_main_scope ((thisframe)->pc))    \
+          && !(inside_entry_scope ((thisframe)->pc)))
+
+   and add initializations of the four scope controlling variables inside
+   the object file / debugging information processing modules.  */
+
+CORE_ADDR entry_scope_lowpc;
+CORE_ADDR entry_scope_highpc;
+CORE_ADDR main_scope_lowpc;
+CORE_ADDR main_scope_highpc;
+
+/* Test a specified PC value to see if it is in the range of addresses
+   that correspond to the main() function.  See comments above for why
+   we might want to do this.
+
+   Typically called from FRAME_CHAIN_VALID. */
+
+int
+inside_main_scope (pc)
+CORE_ADDR pc;
+{
+  return (main_scope_lowpc <= pc && pc < main_scope_highpc);
+}
+
+/* Test a specified PC value to see if it is in the range of addresses
+   that correspond to the process entry point function.  See comments above
+   for why we might want to do this.
+
+   Typically called from FRAME_CHAIN_VALID. */
+
+int
+inside_entry_scope (pc)
+CORE_ADDR pc;
+{
+  return (entry_scope_lowpc <= pc && pc < entry_scope_highpc);
+}
+
 /* Address of innermost stack frame (contents of FP register) */
 
 static FRAME current_frame;
@@ -104,7 +173,7 @@ create_new_frame (addr, pc)
   fci->pc = pc;
 
 #ifdef INIT_EXTRA_FRAME_INFO
-  INIT_EXTRA_FRAME_INFO (fci);
+  INIT_EXTRA_FRAME_INFO (0, fci);
 #endif
 
   return fci;
@@ -208,12 +277,18 @@ frameless_look_for_prologue (frame)
     return 0;
 }
 
+/* Default a few macros that people seldom redefine.  */
+
 #if !defined (INIT_FRAME_PC)
 #define INIT_FRAME_PC(fromleaf, prev) \
   prev->pc = (fromleaf ? SAVED_PC_AFTER_CALL (prev->next) : \
              prev->next ? FRAME_SAVED_PC (prev->next) : read_pc ());
 #endif
 
+#ifndef FRAME_CHAIN_COMBINE
+#define        FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
+#endif
+
 /* Return a structure containing various interesting information
    about the frame that called NEXT_FRAME.  Returns NULL
    if there is no such frame.  */
@@ -281,6 +356,8 @@ get_prev_frame_info (next_frame)
        return 0;
       address = FRAME_CHAIN_COMBINE (address, next_frame);
     }
+  if (address == 0)
+    return 0;
 
   prev = (struct frame_info *)
     obstack_alloc (&frame_cache_obstack,
@@ -294,12 +371,12 @@ get_prev_frame_info (next_frame)
   prev->next_frame = prev->next ? prev->next->frame : 0;
 
 #ifdef INIT_EXTRA_FRAME_INFO
-  INIT_EXTRA_FRAME_INFO(prev);
+  INIT_EXTRA_FRAME_INFO(fromleaf, prev);
 #endif
 
   /* This entry is in the frame queue now, which is good since
      FRAME_SAVED_PC may use that queue to figure out it's value
-     (see m-sparc.h).  We want the pc saved in the inferior frame. */
+     (see tm-sparc.h).  We want the pc saved in the inferior frame. */
   INIT_FRAME_PC(fromleaf, prev);
 
   return prev;
index f42f22b1f6106ef731cbe4ffd27eaa66fa52a0e9..4b9f2451cef8a246269083dffb0831cbba236d80 100644 (file)
@@ -26,11 +26,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "bfd.h"
 #include "symfile.h"
 
-#if defined (TDESC)
-/* Need to get C_VERSION and friends.  FIXME, should be in internalcoff.h */
-#include "coff-m88k.h"
-#endif /* not TDESC */
-
 #include <obstack.h>
 #include <string.h>
 
@@ -153,21 +148,6 @@ static unsigned    local_symesz;
 static unsigned        local_auxesz;
 
 
-#ifdef TDESC
-#include "tdesc.h"
-#define SEM
-int int_sem_val = 's' << 24 | 'e' << 16 | 'm' << 8 | '.';
-int temp_sem_val;
-int last_coffsem = 2;
-#if 0
-  /* This isn't used currently.  */
-int last_coffsyn = 0;
-#endif
-int debug_info = 0;    /*used by tdesc */
-extern dc_dcontext_t tdesc_handle;
-extern int safe_to_init_tdesc_context;
-#endif
-
 /* Chain of typedefs of pointers to empty struct/union types.
    They are chained thru the SYMBOL_VALUE_CHAIN.  */
 
@@ -466,13 +446,6 @@ start_symtab ()
   context_stack = 0;
   within_function = 0;
   last_source_file = 0;
-#ifdef TDESC
-  last_coffsem = 2;
-#if 0
-  /* This isn't used currently.  */
-  last_coffsyn = 0;
-#endif
-#endif
 
   /* Initialize the source file line number information for this file.  */
 
@@ -568,15 +541,6 @@ end_symtab (objfile)
     xrealloc (lv, (sizeof (struct linetable)
                   + lv->nitems * sizeof (struct linetable_entry)));
 
-#ifdef TDESC
-  symtab->coffsem = last_coffsem;
-#if 0
-  /* This isn't used currently.  Besides, if this is really about "syntax",
-     it shouldn't need to stick around past symbol read-in time.  */
-  symtab->coffsyn = last_coffsyn;
-#endif
-#endif
-
   free_named_symtabs (symtab->filename);
 
   /* Link the new symtab into the list of such.  */
@@ -594,10 +558,9 @@ record_misc_function (name, address)
      char *name;
      CORE_ADDR address;
 {
-#ifdef TDESC
   /* We don't want TDESC entry points on the misc_function_vector */
   if (name[0] == '@') return;
-#endif
+
   /* mf_text isn't true, but apparently COFF doesn't tell us what it really
      is, so this guess is more useful than mf_unknown.  */
   prim_record_misc_function (savestring (name, strlen (name)),
@@ -636,10 +599,6 @@ coff_symfile_init (sf)
   /* FIXME memory leak */
   sf->sym_private = xmalloc (sizeof (struct coff_symfile_info));
 
-#if defined (TDESC)
-  safe_to_init_tdesc_context  = 0;
-#endif
-
   /* Save startup file's range of PC addresses to help blockframe.c
      decide where the bottom of the stack is.  */
   if (bfd_get_file_flags (abfd) & EXEC_P)
@@ -698,21 +657,6 @@ find_linenos (abfd, asect, vpinfo)
   maxoff = offset + size;
   if (maxoff > info->max_lineno_offset)
     info->max_lineno_offset = maxoff;
-#ifdef TDESC
-  /* While we're at it, find the debug_info.  It's in the s_relptr
-     (or, in BFD-speak, rel_filepos) of the text segment section header.  */
-  if (strcmp (bfd_section_name (abfd, asect), ".text") == 0)
-    {
-      /* WARNING WILL ROBINSON!  ACCESSING BFD-PRIVATE DATA HERE!  FIXME!  */
-      debug_info = asect->rel_filepos;
-      /* End of warning */
-      if (tdesc_handle)
-       {
-         dc_terminate (tdesc_handle);
-         tdesc_handle = 0;
-       }
-    }
-#endif /* TDESC */
 }
 
 
@@ -1122,27 +1066,8 @@ read_coff_symtab (desc, nsyms, objfile)
                free (new);
              }
            break;
-#ifdef TDESC
-          case C_VERSION:
-#if 0
-           /* This isn't used currently.  */
-            if (strcmp (cs->c_name, ".coffsyn") == 0)
-               last_coffsyn = cs->c_value;
-           else
-#endif /* 0 */
-             if ((strcmp (cs->c_name, ".coffsem") == 0) &&
-                     (cs->c_value != 0))
-               last_coffsem = cs->c_value;
-            break;
-#endif /* TDESC */
 
          default:
-#ifdef TDESC
-           if ((strcmp (cs->c_name, ".coffsem") == 0) &&
-               (cs->c_value != 0))
-             last_coffsem = cs->c_value;
-            else
-#endif
            (void) process_coff_symbol (cs, &main_aux);
            break;
        }
@@ -1871,6 +1796,9 @@ decode_base_type (cs, c_type, aux)
            type = coff_alloc_type (cs->c_symnum);
            TYPE_CODE (type) = TYPE_CODE_STRUCT;
            TYPE_NAME (type) = concat ("struct ", "<opaque>", NULL);
+           TYPE_CPLUS_SPECIFIC (type)
+             = (struct cplus_struct_type *) obstack_alloc (symbol_obstack, sizeof (struct cplus_struct_type));
+           bzero (TYPE_CPLUS_SPECIFIC (type), sizeof (struct cplus_struct_type));
            TYPE_LENGTH (type) = 0;
            TYPE_FIELDS (type) = 0;
            TYPE_NFIELDS (type) = 0;
@@ -1963,6 +1891,9 @@ read_struct_type (index, length, lastsym)
 
   type = coff_alloc_type (index);
   TYPE_CODE (type) = TYPE_CODE_STRUCT;
+  TYPE_CPLUS_SPECIFIC (type)
+    = (struct cplus_struct_type *) obstack_alloc (symbol_obstack, sizeof (struct cplus_struct_type));
+  bzero (TYPE_CPLUS_SPECIFIC (type), sizeof (struct cplus_struct_type));
   TYPE_LENGTH (type) = length;
 
   while (!done && symnum < lastsym && symnum < nlist_nsyms_global)
@@ -2125,19 +2056,7 @@ read_enum_type (index, length, lastsym)
 
 static struct sym_fns coff_sym_fns =
 {
-    /* This assumes that 88kbcs implies TDESC and TDESC implies 88kbcs.
-       If that's not true, this can be relaxed, but if it is true,
-       it will just cause users grief if we try to read the wrong kind
-       of symbol file.  */
-#if defined (TDESC)
-    "m88kbcs", 8,
-#else /* not TDESC */
-# ifdef i386
-    "i386coff", 8,
-# else
     "coff", 4,
-# endif /* not i386 */
-#endif /* not TDESC */
     coff_new_init, coff_symfile_init, coff_symfile_read,
 };
 
index bb23c94b378bef5557ecff69edb22869ac28a883..3ca563f7331b139fc51905a028a59fad394cc8b3 100644 (file)
@@ -25,7 +25,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
                  Current and previous sp.
                  Current and previous start of current function.
 
-   If the start's of the functions don't match, then
+   If the starts of the functions don't match, then
 
        a) We did a subroutine call.
 
@@ -169,12 +169,6 @@ extern struct target_ops child_ops;        /* In inftarg.c */
   (name && !strcmp ("_sigtramp", name))
 #endif
 
-#ifdef TDESC
-#include "tdesc.h"
-int safe_to_init_tdesc_context = 0;
-extern dc_dcontext_t current_context;
-#endif
-
 /* Tables of how to react to signals; the user sets them.  */
 
 static char signal_stop[NSIG];
@@ -774,9 +768,6 @@ wait_for_inferior ()
   int stop_step_resume_break;
   struct symtab_and_line sal;
   int remove_breakpoints_on_following_step = 0;
-#ifdef TDESC
-  extern dc_handle_t tdesc_handle;
-#endif
   int current_line;
 
 #if 0
@@ -805,9 +796,6 @@ wait_for_inferior ()
       if (WIFEXITED (w))
        {
          target_terminal_ours ();      /* Must do this before mourn anyway */
-#ifdef TDESC 
-          safe_to_init_tdesc_context = 0;
-#endif
          if (WEXITSTATUS (w))
            printf ("\nProgram exited with code 0%o.\n", 
                     (unsigned int)WEXITSTATUS (w));
@@ -828,9 +816,6 @@ wait_for_inferior ()
          stop_signal = WTERMSIG (w);
          target_terminal_ours ();      /* Must do this before mourn anyway */
          target_kill ((char *)0, 0);   /* kill mourns as well */
-#ifdef TDESC
-          safe_to_init_tdesc_context = 0;
-#endif
 #ifdef PRINT_RANDOM_SIGNAL
          printf ("\nProgram terminated: ");
          PRINT_RANDOM_SIGNAL (stop_signal);
@@ -855,14 +840,6 @@ wait_for_inferior ()
 #endif /* NO_SINGLE_STEP */
       
       stop_pc = read_pc ();
-#ifdef TDESC
-      if (safe_to_init_tdesc_context)   
-        {
-         current_context = init_dcontext();
-          set_current_frame ( create_new_frame (get_frame_base (read_pc()),read_pc()));
-        }
-      else
-#endif /* TDESC */
       set_current_frame ( create_new_frame (read_register (FP_REGNUM),
                                            read_pc ()));
       
@@ -1327,14 +1304,6 @@ wait_for_inferior ()
             to one-proceed past a breakpoint.  */
          /* If we've just finished a special step resume and we don't
             want to hit a breakpoint, pull em out.  */
-#ifdef TDESC
-          if (!tdesc_handle)
-            {
-             init_tdesc();
-              safe_to_init_tdesc_context = 1;
-            }
-#endif
-
          if (!step_resume_break_address &&
              remove_breakpoints_on_following_step)
            {
index ff15ff847c62de81d08a952692163d26b1bd1a28..594bd49b1a08e2b88524ac3857ca1e4c532a87be 100644 (file)
@@ -96,13 +96,6 @@ frame_chain_valid (chain, thisframe)
        && outside_startup_file (FRAME_SAVED_PC (thisframe)));
 }
 
-CORE_ADDR
-frame_chain_combine (chain, thisframe)
-     CORE_ADDR chain;
-{
-  return chain;
-}
-
 void
 init_extra_frame_info (fromleaf, fi)
      int fromleaf;
@@ -112,18 +105,6 @@ init_extra_frame_info (fromleaf, fi)
   fi->args_pointer = 0;                /* Unknown */
   fi->locals_pointer = 0;      /* Unknown */
 }
-
-void
-init_frame_pc (fromleaf, prev)
-     int fromleaf;
-     struct frame_info *prev;
-{
-  /* FIXME, for now it's the default from blockframe.c.   If it stays that
-     way, remove it entirely from here.  */
-  prev->pc = (fromleaf ? SAVED_PC_AFTER_CALL (prev->next) :
-              prev->next ? FRAME_SAVED_PC (prev->next) : read_pc ());
-
-}
 \f
 /* Examine an m88k function prologue, recording the addresses at which
    registers are saved explicitly by the prologue code, and returning
index 3f8bfc3d319eff7f9b6434c1f215e924ae819edb..8e970d0fffa58556fbf883309b7fd644ec214a23 100644 (file)
@@ -437,12 +437,8 @@ void init_frame_pc ();
 /* FRAME_CHAIN takes a FRAME
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* On the 29k, the nominal address of a frame is the address on the
    register stack of the return address (the one next to the incoming
@@ -465,8 +461,6 @@ void init_frame_pc ();
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (outside_startup_file (FRAME_SAVED_PC (thisframe)))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (0)
-
 /* Define other aspects of the stack frame.  */
 
 /* A macro that tells us whether the function invocation represented
index f501495352c5cddc119ae10715e4acfcbef89ca3..f8efb12a503a7c214f3c4de7f9b654d350a79687 100644 (file)
@@ -301,12 +301,8 @@ extern struct ext_format ext_format_68881;
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* In the case of the 68000, the frame's nominal address
    is the address of a 4-byte word containing the calling frame's address.  */
@@ -334,8 +330,6 @@ extern struct ext_format ext_format_68881;
 
 #endif /* FRAME_CHAIN_VALID_ALTERNATE */
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 /* A macro that tells us whether the function invocation represented
index ee63d6a53e94c6bc9c0117e8fcab7fb4e3fadfc8..87151950799651ba7bc1c8b30f8e1729194a214c 100644 (file)
@@ -232,12 +232,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* In the case of the ARM, the frame's nominal address is the FP value,
    and 12 bytes before comes the saved previous FP value as a 4-byte word.  */
@@ -250,8 +246,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0 && (FRAME_SAVED_PC (thisframe) >= first_object_file_end))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 /* A macro that tells us whether the function invocation represented
index 2424a2f53972498ab8abd948bd6d25b60cbe1b48..1ada10b667dd5f47c34a816ac0d0935805520228 100644 (file)
@@ -305,12 +305,8 @@ extern struct value *value_of_trapped_internalvar ();
 /* FRAME_CHAIN takes a frame_info with a frame's nominal address in fi->frame,
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* (caller fp is saved at 8(fp)) */
 
@@ -319,8 +315,6 @@ extern struct value *value_of_trapped_internalvar ();
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 /* We need the boundaries of the text in the exec file, as a kludge,
index eacac6910dd0cf5a7f4cc085eef612c5d4a3226d..7474b3e3708dce1bc0cc08cd8ee62e7da61a1c68 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1986, 1987, 1988, 1989, 1990 Free Software Foundation, Inc.
+/* Target machine description for Motorola Delta 88 box, for GDB.
+   Copyright 1986, 1987, 1988, 1989, 1990, 1991 Free Software Foundation, Inc.
 
 This file is part of GDB.
 
@@ -16,408 +17,7 @@ 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
-/* g++ support is not yet included.  */
-
-#define TARGET_BYTE_ORDER BIG_ENDIAN
-
-/* We cache information about saved registers in the frame structure,
-   to save us from having to re-scan function prologues every time
-   a register in a non-current frame is accessed.  */
-
-#define EXTRA_FRAME_INFO       \
-       struct frame_saved_regs *fsr;   \
-       CORE_ADDR locals_pointer;       \
-       CORE_ADDR args_pointer;
-
-/* Zero the frame_saved_regs pointer when the frame is initialized,
-   so that FRAME_FIND_SAVED_REGS () will know to allocate and
-   initialize a frame_saved_regs struct the first time it is called.
-   Set the arg_pointer to -1, which is not valid; 0 and other values
-   indicate real, cached values.  */
-
-#define INIT_EXTRA_FRAME_INFO(fromleaf, fi) \
-       init_extra_frame_info (fromleaf, fi)
-extern void init_extra_frame_info ();
-
-#define INIT_FRAME_PC(fromleaf, prev) \
-       init_frame_pc (fromleaf, prev)
-extern void init_frame_pc ();
-
-#define IEEE_FLOAT
-
-/* Define this if the C compiler puts an underscore at the front
-   of external names before giving them to the linker.  */
-
-#define NAMES_HAVE_UNDERSCORE
-
-/* Hook for read_relative_register_raw_bytes */
-
-#define READ_RELATIVE_REGISTER_RAW_BYTES
-
-/* Offset from address of function to start of its code.
-   Zero on most machines.  */
-
-#define FUNCTION_START_OFFSET 0
-
-/* Advance PC across any function entry prologue instructions
-   to reach some "real" code.  */
-
-#define SKIP_PROLOGUE(frompc)   \
-       skip_prologue (frompc)
-extern CORE_ADDR skip_prologue ();
-
-/* The m88k kernel aligns all instructions on 4-byte boundaries.  The
-   kernel also uses the least significant two bits for its own hocus
-   pocus.  When gdb receives an address from the kernel, it needs to
-   preserve those right-most two bits, but gdb also needs to be careful
-   to realize that those two bits are not really a part of the address
-   of an instruction.  Shrug.  */
-
-#define ADDR_BITS_REMOVE(addr) ((addr) & ~3)
-#define ADDR_BITS_SET(addr) (((addr) | 0x00000002) - 4)
-
-/* Immediately after a function call, return the saved pc.
-   Can't always go through the frames for this because on some machines
-   the new frame is not set up until the new function executes
-   some instructions.  */
-
-#define SAVED_PC_AFTER_CALL(frame) \
-  (ADDR_BITS_REMOVE (read_register (SRP_REGNUM)))
-
-/* Address of end of stack space (in core files).  */
-
-#define STACK_END_ADDR 0xF0000000
-
-/* Stack grows downward.  */
-
-#define INNER_THAN <
-
-/* Sequence of bytes for breakpoint instruction.  */
-
-/* instruction 0xF000D1FF is 'tb0 0,r0,511'
-   If Bit bit 0 of r0 is clear (always true),
-   initiate exception processing (trap).
- */
-#define BREAKPOINT {0xF0, 0x00, 0xD1, 0xFF}
-
-/* Amount PC must be decremented by after a breakpoint.
-   This is often the number of bytes in BREAKPOINT
-   but not always.  */
-
-#define DECR_PC_AFTER_BREAK 0
-
-/* Nonzero if instruction at PC is a return instruction.  */
-/* 'jmp r1' or 'jmp.n r1' is used to return from a subroutine. */
-
-#define ABOUT_TO_RETURN(pc) (read_memory_integer (pc, 2) == 0xF800)
-
-/* Return 1 if P points to an invalid floating point value.
-   LEN is the length in bytes.  */
-
-#define INVALID_FLOAT(p, len) IEEE_isNAN(p,len)
-
-/* Say how long (ordinary) registers are.  */
-
-#define REGISTER_TYPE long
-
-/* Number of machine registers */
-
-#define NUM_REGS 38
-
-/* Initializer for an array of names of registers.
-   There should be NUM_REGS strings in this initializer.  */
-
-#define REGISTER_NAMES {\
-       "r0",\
-       "r1",\
-       "r2",\
-       "r3",\
-       "r4",\
-       "r5",\
-       "r6",\
-       "r7",\
-       "r8",\
-       "r9",\
-       "r10",\
-       "r11",\
-       "r12",\
-       "r13",\
-       "r14",\
-       "r15",\
-       "r16",\
-       "r17",\
-       "r18",\
-       "r19",\
-       "r20",\
-       "r21",\
-       "r22",\
-       "r23",\
-       "r24",\
-       "r25",\
-       "r26",\
-       "r27",\
-       "r28",\
-       "r29",\
-       "r30",\
-       "r31",\
-       "psr",\
-       "fpsr",\
-       "fpcr",\
-       "sxip",\
-       "snip",\
-       "sfip",\
-       "vbr",\
-       "dmt0",\
-       "dmd0",\
-       "dma0",\
-       "dmt1",\
-       "dmd1",\
-       "dma1",\
-       "dmt2",\
-       "dmd2",\
-       "dma2",\
-       "sr0",\
-       "sr1",\
-       "sr2",\
-       "sr3",\
-       "fpecr",\
-       "fphs1",\
-       "fpls1",\
-       "fphs2",\
-       "fpls2",\
-       "fppt",\
-       "fprh",\
-       "fprl",\
-       "fpit",\
-       "fpsr",\
-       "fpcr",\
-       };
-
-
-/* Register numbers of various important registers.
-   Note that some of these values are "real" register numbers,
-   and correspond to the general registers of the machine,
-   and some are "phony" register numbers which are too large
-   to be actual register numbers as far as the user is concerned
-   but do serve to get the desired values when passed to read_register.  */
-
-#define SRP_REGNUM 1           /* Contains subroutine return pointer */
-#define RV_REGNUM 2            /* Contains simple return values */
-#define SRA_REGNUM 12          /* Contains address of struct return values */
-#define FP_REGNUM 31           /* Reg fetched to locate frame when pgm stops */
-#define SP_REGNUM 31           /* Contains address of top of stack */
-#define SXIP_REGNUM 35         /* Contains Shadow Execute Instruction Pointer */
-#define SNIP_REGNUM 36         /* Contains Shadow Next Instruction Pointer */
-#define PC_REGNUM SXIP_REGNUM  /* Program Counter */
-#define NPC_REGNUM SNIP_REGNUM /* Next Program Counter */
-#define PSR_REGNUM 32           /* Processor Status Register */
-#define FPSR_REGNUM 33         /* Floating Point Status Register */
-#define FPCR_REGNUM 34         /* Floating Point Control Register */
-#define SFIP_REGNUM 37         /* Contains Shadow Fetched Intruction pointer */
-#define NNPC_REGNUM SFIP_REGNUM /* Next Next Program Counter */
-
-/* PSR status bit definitions.  */
-
-#define PSR_MODE               0x80000000
-#define PSR_BYTE_ORDER         0x40000000
-#define PSR_SERIAL_MODE                0x20000000
-#define PSR_CARRY              0x10000000
-#define PSR_SFU_DISABLE                0x000003f0
-#define PSR_SFU1_DISABLE       0x00000008
-#define PSR_MXM                        0x00000004
-#define PSR_IND                        0x00000002
-#define PSR_SFRZ               0x00000001
-
-/* BCS requires that the SXIP_REGNUM (or PC_REGNUM) contain the address
-   of the next instr to be executed when a breakpoint occurs.  Because
-   the kernel gets the next instr (SNIP_REGNUM), the instr in SNIP needs
-   to be put back into SFIP, and the instr in SXIP should be shifted
-   to SNIP */
-
-/* Are you sitting down?  It turns out that the 88K BCS (binary compatibility
-  standard) folks originally felt that the debugger should be responsible
-  for backing up the IPs, not the kernel (as is usually done).  Well, they
-  have reversed their decision, and in future releases our kernel will be
-  handling the backing up of the IPs.  So, eventually, we won't need to
-  do the SHIFT_INST_REGS stuff.  But, for now, since there are 88K systems out
-  there that do need the debugger to do the IP shifting, and since there
-  will be systems where the kernel does the shifting, the code is a little
-  more complex than perhaps it needs to be (we still go inside SHIFT_INST_REGS,
-  and if the shifting hasn't occurred then gdb goes ahead and shifts).  */
-
-#define SHIFT_INST_REGS
-
-/* Total amount of space needed to store our copies of the machine's
-   register state, the array `registers'.  */
-
-#define REGISTER_BYTES (NUM_REGS * sizeof(REGISTER_TYPE))
-
-/* Index within `registers' of the first byte of the space for
-   register N.  */
-
-#define REGISTER_BYTE(N) ((N)*sizeof(REGISTER_TYPE))
-
-/* Number of bytes of storage in the actual machine representation
-   for register N.  */
-
-#define REGISTER_RAW_SIZE(N) (sizeof(REGISTER_TYPE))
-
-/* Number of bytes of storage in the program's representation
-   for register N. */
-
-#define REGISTER_VIRTUAL_SIZE(N) (sizeof(REGISTER_TYPE))
-
-/* Largest value REGISTER_RAW_SIZE can have.  */
-
-#define MAX_REGISTER_RAW_SIZE (sizeof(REGISTER_TYPE))
-
-/* Largest value REGISTER_VIRTUAL_SIZE can have.
-/* Are FPS1, FPS2, FPR "virtual" regisers? */
-
-#define MAX_REGISTER_VIRTUAL_SIZE (sizeof(REGISTER_TYPE))
-
-/* Nonzero if register N requires conversion
-   from raw format to virtual format.  */
-
-#define REGISTER_CONVERTIBLE(N) (0)
-
-/* Convert data from raw format for register REGNUM
-   to virtual format for register REGNUM.  */
-
-#define REGISTER_CONVERT_TO_VIRTUAL(REGNUM,FROM,TO) {bcopy ((FROM), (TO), (sizeof(REGISTER_TYPE)));}
-
-/* Convert data from virtual format for register REGNUM
-   to raw format for register REGNUM.  */
-
-#define REGISTER_CONVERT_TO_RAW(REGNUM,FROM,TO) {bcopy ((FROM), (TO), (sizeof(REGISTER_TYPE)));}
-
-/* Return the GDB type object for the "standard" data type
-   of data in register N.  */
-
-#define REGISTER_VIRTUAL_TYPE(N) (builtin_type_int)
-
-/* The 88k call/return conventions call for "small" values to be returned
-   into consecutive registers starting from r2.  */
-
-#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
-  bcopy (&(((char *)REGBUF)[REGISTER_BYTE(RV_REGNUM)]), (VALBUF), TYPE_LENGTH (TYPE))
-
-#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) (*(int *)(REGBUF))
-
-/* Write into appropriate registers a function return value
-   of type TYPE, given in virtual format.  */
-
-#define STORE_RETURN_VALUE(TYPE,VALBUF) \
-  write_register_bytes (2*sizeof(void*), (VALBUF), TYPE_LENGTH (TYPE))
-
-/* In COFF, if PCC says a parameter is a short or a char, do not
-   change it to int (it seems the convention is to change it). */
-
-#define BELIEVE_PCC_PROMOTION 1
-
-/* Describe the pointer in each stack frame to the previous stack frame
-   (its caller).  */
-
-/* FRAME_CHAIN takes a frame's nominal address
-   and produces the frame's chain-pointer.
-
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
-   However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
-
-extern CORE_ADDR frame_chain ();
-extern int frame_chain_valid ();
-extern CORE_ADDR frame_chain_combine ();
-extern int frameless_function_invocation ();
-
-#define FRAME_CHAIN(thisframe) \
-       frame_chain (thisframe)
-
-#define FRAME_CHAIN_VALID(chain, thisframe)    \
-       frame_chain_valid (chain, thisframe)
-
-#define FRAME_CHAIN_COMBINE(chain, thisframe)  \
-       frame_chain_combine (chain, thisframe)
-
-#define        FRAMELESS_FUNCTION_INVOCATION(frame, fromleaf)  \
-       fromleaf = frameless_function_invocation (frame)
-
-/* Define other aspects of the stack frame.  */
-
-#define FRAME_SAVED_PC(FRAME)  \
-       frame_saved_pc (FRAME)
-extern CORE_ADDR frame_saved_pc ();
-
-#define FRAME_ARGS_ADDRESS(fi) \
-       frame_args_address (fi)
-extern CORE_ADDR frame_args_address ();
-
-#define FRAME_LOCALS_ADDRESS(fi) \
-       frame_locals_address (fi)
-extern CORE_ADDR frame_locals_address ();
-
-/* Return number of args passed to a frame.
-   Can return -1, meaning no way to tell.  */
-
-#define FRAME_NUM_ARGS(numargs, fi)  ((numargs) = -1)
-
-/* Return number of bytes at start of arglist that are not really args.  */
-
-#define FRAME_ARGS_SKIP 0
-
-/* Put here the code to store, into a struct frame_saved_regs,
-   the addresses of the saved registers of frame described by FRAME_INFO.
-   This includes special registers such as pc and fp saved in special
-   ways in the stack frame.  sp is even more special:
-   the address we return for it IS the sp for the next frame.  */
-
-/* On the 88k, parameter registers get stored into the so called "homing"
-   area.  This *always* happens when you compiled with GCC and use -g.
-   Also, (with GCC and -g) the saving of the parameter register values
-   always happens right within the function prologue code, so these register
-   values can generally be relied upon to be already copied into their
-   respective homing slots by the time you will normally try to look at
-   them (we hope).
-
-   Note that homing area stack slots are always at *positive* offsets from
-   the frame pointer.  Thus, the homing area stack slots for the parameter
-   registers (passed values) for a given function are actually part of the
-   frame area of the caller.  This is unusual, but it should not present
-   any special problems for GDB.
-
-   Note also that on the 88k, we are only interested in finding the
-   registers that might have been saved in memory.  This is a subset of
-   the whole set of registers because the standard calling sequence allows
-   the called routine to clobber many registers.
-
-   We could manage to locate values for all of the so called "preserved"
-   registers (some of which may get saved within any particular frame) but
-   that would require decoding all of the tdesc information.  Tht would be
-   nice information for GDB to have, but it is not strictly manditory if we
-   can live without the ability to look at values within (or backup to)
-   previous frames.
-*/
-
-#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
-        frame_find_saved_regs (frame_info, &frame_saved_regs)
-
-\f
-/* There is not currently a functioning way to call functions in the
-   inferior.  */
-
-/* But if there was this is where we'd put the call dummy.  */
-/* #define CALL_DUMMY_LOCATION AFTER_TEXT_END */
-
-/* When popping a frame on the 88k (say when doing a return command), the
-   calling function only expects to have the "preserved" registers restored.
-   Thus, those are the only ones that we even try to restore here.   */
-
-extern void pop_frame ();
-
-#define POP_FRAME pop_frame ()
+#include "tm-m88k.h"
 
 /* BCS is a standard for binary compatibility.  This machine uses it.  */
 #if !defined (BCS)
index 11c90a497b01e196ca32aae4894a82dab0894762..409cc535ffc9d9c82576f27280048c1a2788540e 100644 (file)
@@ -217,12 +217,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 #define FRAME_CHAIN(thisframe) \
   (outside_startup_file ((thisframe)->pc) ? \
@@ -232,8 +228,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 /* A macro that tells us whether the function invocation represented
index 1e7fa524e0cb5f838bbc50671d1e21da5f017e7e..7dba1dec15d6e75ee6204e75e3893ad1d1f6c3d3 100644 (file)
@@ -264,12 +264,8 @@ extern CORE_ADDR saved_pc_after_call ();
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* We cache information about saved registers in the frame structure,
    to save us from having to re-scan function prologues every time
@@ -294,10 +290,8 @@ extern CORE_ADDR saved_pc_after_call ();
 #define FRAME_CHAIN(thisframe) \
   (read_memory_integer (FRAME_FP(thisframe), 4) & ~0xf)
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* FRAME_CHAIN_VALID returns zero if the given frame is the outermost one
-   and has no caller.  In that case, FRAME_CHAIN_COMBINE is not used.
+   and has no caller.
 
    On the i960, each various target system type must define FRAME_CHAIN_VALID,
    since it differs between NINDY and VxWorks, the two currently supported
index 884330260bb1485e5c10b10fddf8ce9c6a4f5de5..f62a39e441906eaaa695632b16c419c75d5b1c54 100644 (file)
@@ -201,20 +201,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 #define FRAME_CHAIN(thisframe) (FRAME_ADDR)mips_frame_chain(thisframe)
 
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 
index 423594da8c6e8594752d7cbaabe18e87a19f637a..f562f86f3859bb07403267f45d5ee0ac25badb92 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1986, 1987, 1988, 1989, 1990 Free Software Foundation, Inc.
+/* Target machine description for generic Motorola 88000, for GDB.
+   Copyright 1986, 1987, 1988, 1989, 1990, 1991 Free Software Foundation, Inc.
 
 This file is part of GDB.
 
@@ -16,97 +17,36 @@ 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
-/* This is currently for a 88000 running DGUX.  If other 88k ports are
-   done, OS-specific stuff should be moved (see tm-68k.h, for example).  */
 /* g++ support is not yet included.  */
 
-#include "tdesc.h"
-
-#if !defined (DGUX)
-#define DGUX 1
-#endif
-
 #define TARGET_BYTE_ORDER BIG_ENDIAN
 
-#define EXTRA_SYMTAB_INFO int coffsem;
-
-/* This is not a CREATE_INFERIOR_HOOK because it also applies to
-   remote debugging.  */
-#define START_INFERIOR_HOOK() \
-  { \
-    extern int safe_to_init_tdesc_context; \
-    extern dc_handle_t tdesc_handle; \
- \
-    safe_to_init_tdesc_context = 0; \
-    if (tdesc_handle) \
-      { \
-       dc_terminate (tdesc_handle); \
-       tdesc_handle = 0; \
-      } \
-  }
-
-dc_dcontext_t get_prev_context ();
-extern int stack_error;
-
-#define EXTRA_FRAME_INFO dc_dcontext_t frame_context;
-#define INIT_EXTRA_FRAME_INFO(fromleaf, fci) \
-  {                                                                     \
-    if (fci->next_frame != NULL)                                        \
-      {                                                                 \
-        extern jmp_buf stack_jmp;                                       \
-        struct frame_info *next_frame = fci->next;                       \
-        /* The call to get_prev_context */                              \
-        /* will update current_context for us. */                       \
-        stack_error = 1;                                                \
-        if (!setjmp (stack_jmp))                                        \
-          {                                                             \
-            fci->frame_context                                  \
-              = get_prev_context (next_frame->frame_context);           \
-            stack_error = 0;                                            \
-          }                                                             \
-        else                                                            \
-          {                                                             \
-            stack_error = 0;                                            \
-            next_frame->prev = 0;                                       \
-            return 0;                                                   \
-          }                                                             \
-        if (!fci->frame_context)                                        \
-          {                                                             \
-            next_frame->prev = 0;                                       \
-            return 0;                                                   \
-          }                                                             \
-      }                                                                 \
-    else                                                                \
-      {                                                                 \
-        /* We are creating an arbitrary frame */                        \
-        /* (i.e. we are in create_new_frame).  */                       \
-        extern dc_dcontext_t current_context;                           \
-                                                                        \
-        fci->frame_context = current_context;                           \
-      }                                                                 \
-  }
-
-#define INIT_FRAME_PC(fromleaf, prev) \
-  {                                                                     \
-    prev->pc = dc_location (prev->frame_context);                       \
-    prev->frame = get_frame_base (prev->pc);                            \
-  }
+/* We cache information about saved registers in the frame structure,
+   to save us from having to re-scan function prologues every time
+   a register in a non-current frame is accessed.  */
 
-#define IEEE_FLOAT
+#define EXTRA_FRAME_INFO       \
+       struct frame_saved_regs *fsr;   \
+       CORE_ADDR locals_pointer;       \
+       CORE_ADDR args_pointer;
+
+/* Zero the frame_saved_regs pointer when the frame is initialized,
+   so that FRAME_FIND_SAVED_REGS () will know to allocate and
+   initialize a frame_saved_regs struct the first time it is called.
+   Set the arg_pointer to -1, which is not valid; 0 and other values
+   indicate real, cached values.  */
 
-/* Text Description (TDESC) is used by m88k to maintain stack & reg info */
+#define INIT_EXTRA_FRAME_INFO(fromleaf, fi) \
+       init_extra_frame_info (fromleaf, fi)
+extern void init_extra_frame_info ();
 
-#define TDESC
+#define IEEE_FLOAT
 
 /* Define this if the C compiler puts an underscore at the front
    of external names before giving them to the linker.  */
 
 #define NAMES_HAVE_UNDERSCORE
 
-/* Hook for read_relative_register_raw_bytes */
-
-#define READ_RELATIVE_REGISTER_RAW_BYTES
-
 /* Offset from address of function to start of its code.
    Zero on most machines.  */
 
@@ -115,7 +55,9 @@ extern int stack_error;
 /* Advance PC across any function entry prologue instructions
    to reach some "real" code.  */
 
-#define SKIP_PROLOGUE(frompc)   0
+#define SKIP_PROLOGUE(frompc)   \
+       skip_prologue (frompc)
+extern CORE_ADDR skip_prologue ();
 
 /* The m88k kernel aligns all instructions on 4-byte boundaries.  The
    kernel also uses the least significant two bits for its own hocus
@@ -133,27 +75,7 @@ extern int stack_error;
    some instructions.  */
 
 #define SAVED_PC_AFTER_CALL(frame) \
-  (read_register (SRP_REGNUM) & (~3))
-
-/* Address of end of stack space.  */
-
-#define STACK_END_ADDR 0xF0000000
-
-/* Stack grows downward.  */
-
-#define INNER_THAN <
-
-/* Sequence of bytes for breakpoint instruction.  */
-
-/* instruction 0xF000D1FF is 'tb0 0,r0,511'
-   If Bit bit 0 of r0 is clear (always true),
-   initiate exception processing (trap).
- */
-#define BREAKPOINT {0xF0, 0x00, 0xD1, 0xFF}
-
-/* Address of end of stack space.  */
-
-#define STACK_END_ADDR 0xF0000000
+  (ADDR_BITS_REMOVE (read_register (SRP_REGNUM)))
 
 /* Stack grows downward.  */
 
@@ -179,7 +101,7 @@ extern int stack_error;
 #define ABOUT_TO_RETURN(pc) (read_memory_integer (pc, 2) == 0xF800)
 
 /* Return 1 if P points to an invalid floating point value.
-   LEN is the length in bytes -- not relevant on the 386.  */
+   LEN is the length in bytes.  */
 
 #define INVALID_FLOAT(p, len) IEEE_isNAN(p,len)
 
@@ -271,7 +193,7 @@ extern int stack_error;
 #define SRP_REGNUM 1           /* Contains subroutine return pointer */
 #define RV_REGNUM 2            /* Contains simple return values */
 #define SRA_REGNUM 12          /* Contains address of struct return values */
-#define FP_REGNUM 30           /* Contains address of executing stack frame */
+#define FP_REGNUM 31           /* Reg fetched to locate frame when pgm stops */
 #define SP_REGNUM 31           /* Contains address of top of stack */
 #define SXIP_REGNUM 35         /* Contains Shadow Execute Instruction Pointer */
 #define SNIP_REGNUM 36         /* Contains Shadow Next Instruction Pointer */
@@ -382,38 +304,41 @@ extern int stack_error;
 
 #define BELIEVE_PCC_PROMOTION 1
 
-/* We provide our own get_saved_register in m88k-tdep.c.  */
-#define GET_SAVED_REGISTER
-
 /* Describe the pointer in each stack frame to the previous stack frame
    (its caller).  */
 
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
-/* These are just dummies for the 88k because INIT_FRAME_PC sets prev->frame
-   instead.  */
+extern CORE_ADDR frame_chain ();
+extern int frame_chain_valid ();
+extern int frameless_function_invocation ();
 
-#define FRAME_CHAIN(thisframe) (0)
+#define FRAME_CHAIN(thisframe) \
+       frame_chain (thisframe)
 
-#define FRAME_CHAIN_VALID(chain, thisframe) (1)
+#define FRAME_CHAIN_VALID(chain, thisframe)    \
+       frame_chain_valid (chain, thisframe)
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (0)
+#define        FRAMELESS_FUNCTION_INVOCATION(frame, fromleaf)  \
+       fromleaf = frameless_function_invocation (frame)
 
 /* Define other aspects of the stack frame.  */
 
-#define FRAME_SAVED_PC(FRAME) (read_memory_integer ((FRAME)->frame+4, 4))
+#define FRAME_SAVED_PC(FRAME)  \
+       frame_saved_pc (FRAME)
+extern CORE_ADDR frame_saved_pc ();
 
-#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame)
+#define FRAME_ARGS_ADDRESS(fi) \
+       frame_args_address (fi)
+extern CORE_ADDR frame_args_address ();
 
-#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame)
+#define FRAME_LOCALS_ADDRESS(fi) \
+       frame_locals_address (fi)
+extern CORE_ADDR frame_locals_address ();
 
 /* Return number of args passed to a frame.
    Can return -1, meaning no way to tell.  */
@@ -471,11 +396,5 @@ extern int stack_error;
    calling function only expects to have the "preserved" registers restored.
    Thus, those are the only ones that we even try to restore here.   */
 
-extern void pop_frame ();
-
 #define POP_FRAME pop_frame ()
-
-/* BCS is a standard for binary compatibility.  This machine uses it.  */
-#if !defined (BCS)
-#define BCS 1
-#endif
+extern void pop_frame ();
index 3a4ac230e2b86bfa573a5de1ff6a05e726ffab6c..f782dd0ed6441e60e3283e0a75792d90bb19a889 100644 (file)
@@ -210,12 +210,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* In the case of the Merlin, the frame's nominal address is the FP value,
    and at that address is saved previous FP value as a 4-byte word.  */
@@ -228,8 +224,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 #define FRAME_SAVED_PC(FRAME) (read_memory_integer ((FRAME)->frame + 4, 4))
index e47443f36a195e0ae6ec46529653732cd91107ee..dc5af0dc4f634450b6a01bdfb93cbf7bc71918f3 100644 (file)
@@ -222,20 +222,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 #define FRAME_CHAIN(thisframe) (FRAME_ADDR)mips_frame_chain(thisframe)
 
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 
index 36a24fd9236d619df63381507b98a9310cb7cf84..520eb6b8ccaf6aafaa3f9cb8994da71c7322bd0c 100644 (file)
@@ -78,7 +78,7 @@ extern char *nindy_ttyname;   /* Name of serial port to talk to nindy */
 #define STACK_END_ADDR (0xfe000000)
 
 /* FRAME_CHAIN_VALID returns zero if the given frame is the outermost one
-   and has no caller.  In that case, FRAME_CHAIN_COMBINE is not used.
+   and has no caller.
 
    On the i960, each various target system type defines FRAME_CHAIN_VALID,
    since it differs between NINDY and VxWorks, the two currently supported
index 5fe878989afca1569d261a4cdfdba7e1df86c1f4..75a36aff0f575b52c5849c09cc7893d11a5aa808 100644 (file)
@@ -326,12 +326,8 @@ extern struct type *builtin_type_np1_vector;
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* In the case of the NPL, the frame's norminal address is Br2 and the 
    previous routines frame is up the stack X bytes, where X is the
@@ -341,9 +337,6 @@ extern struct type *builtin_type_np1_vector;
 #define FRAME_CHAIN_VALID(chain, thisframe) \
         (chain != 0 && chain != (thisframe)->frame)
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) \
-       (chain)
-
 /* Define other aspects of the stack frame on NPL.  */
 #define FRAME_SAVED_PC(FRAME) \
        (read_memory_integer ((FRAME)->frame + 8, 4))
index e84cc27be87284c50de6bc543e5fa6c0ecb74463..3300c8c6daf3287d7960d1eb9dd63601da56ea11 100644 (file)
@@ -300,12 +300,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* In the case of the NPL, the frame's norminal address is Br2 and the 
    previous routines frame is up the stack X bytes, where X is the
@@ -315,9 +311,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define FRAME_CHAIN_VALID(chain, thisframe) \
         (chain != 0 && chain != (thisframe)->frame)
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) \
-       (chain)
-
 /* Define other aspects of the stack frame on NPL.  */
 #define FRAME_SAVED_PC(frame) \
        (read_memory_integer ((frame)->frame + 8, 4))
index 750fef2440a249bf347a0e3844ceddaf28b33f6e..a977a5257ec146df45389bef22ec6f73abfa9b26 100644 (file)
@@ -307,12 +307,8 @@ do {                                                               \
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* In the case of the pyr, the frame's nominal address is the address
    of parameter register 0.  The previous frame is found 32 words up.   */
@@ -325,8 +321,6 @@ do {                                                                \
 
  /*((thisframe) >= CONTROL_STACK_ADDR))*/
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 /* A macro that tells us whether the function invocation represented
index ce47df664ef86e5241a82d953ff60bfa7efb06f4..3b90fe3ce5b01b8735b8ce9508f572bcda36ca0e 100644 (file)
@@ -327,12 +327,8 @@ extern unsigned int rs6000_struct_return_address;
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* In the case of the RS6000, the frame's nominal address
    is the address of a 4-byte word containing the calling frame's address.  */
@@ -345,8 +341,6 @@ extern unsigned int rs6000_struct_return_address;
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 /* A macro that tells us whether the function invocation represented
index dd82d9e997723eca50e54f83a5a6b7773e0b6fd2..15d214b48a77d97bcd818ebddc86d78b66bafb9b 100644 (file)
@@ -308,12 +308,8 @@ CORE_ADDR sparc_extract_struct_value_address (
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* In the case of the Sun 4, the frame-chain's nominal address
    is held in the frame pointer register.
@@ -349,8 +345,6 @@ CORE_ADDR sparc_frame_chain ();
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 /* A macro that tells us whether the function invocation represented
index 3365374c245f44a43816948de85e0c05d4599a1d..0af69c0b1a24ea392d79548612c46fbba935583a 100644 (file)
@@ -220,12 +220,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 #define FRAME_CHAIN(thisframe) \
   (outside_startup_file ((thisframe)->pc) ? \
@@ -235,8 +231,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 /* A macro that tells us whether the function invocation represented
index 508920105839691d66cc493f22b21058e4fa4fba..cf5af29fe2700accbe172880e1da8d5fd448c0c6 100644 (file)
@@ -242,16 +242,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* On Symmetry, %ebp points to caller's %ebp, and the return address
-   is right on top of that.
-*/
+   is right on top of that.  */
 
 #define FRAME_CHAIN(thisframe)  \
   (outside_startup_file ((thisframe)->pc) ? \
@@ -261,8 +256,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0)
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 /* A macro that tells us whether the function invocation represented
index 72290fe26575e7eb92edfb9741a4c0dc984d101c..9456808e7fe1c5b6d72713a3fc491a7171efc3f6 100644 (file)
@@ -210,12 +210,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
    FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* In the case of the Tahoe, the frame's nominal address is the FP value,
    and it points to the old FP */
@@ -228,8 +224,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 /* Saved PC */
index 0dea3012df25e4fcfa7935e24312f7632a222e33..727ffcf11903b20eb6ceba80348b480d314c6074 100644 (file)
@@ -214,12 +214,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* In the case of the ns32000 series, the frame's nominal address is the FP
    value, and at that address is saved previous FP value as a 4-byte word.  */
@@ -232,8 +228,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 #define FRAME_SAVED_PC(FRAME) (read_memory_integer ((FRAME)->frame + 4, 4))
index ac0bc8643282461af308f6ef0207659572ba8686..a91a3c722eed431a435eb6547e7974813af9aa3b 100644 (file)
@@ -220,12 +220,8 @@ fix to bug-gdb@prep.ai.mit.edu.  */
 /* FRAME_CHAIN takes a frame's nominal address
    and produces the frame's chain-pointer.
 
-   FRAME_CHAIN_COMBINE takes the chain pointer and the frame's nominal address
-   and produces the nominal address of the caller frame.
-
    However, if FRAME_CHAIN_VALID returns zero,
-   it means the given frame is the outermost one and has no caller.
-   In that case, FRAME_CHAIN_COMBINE is not used.  */
+   it means the given frame is the outermost one and has no caller.  */
 
 /* In the case of the Vax, the frame's nominal address is the FP value,
    and 12 bytes later comes the saved previous FP value as a 4-byte word.  */
@@ -238,8 +234,6 @@ fix to bug-gdb@prep.ai.mit.edu.  */
 #define FRAME_CHAIN_VALID(chain, thisframe) \
   (chain != 0 && (outside_startup_file (FRAME_SAVED_PC (thisframe))))
 
-#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
-
 /* Define other aspects of the stack frame.  */
 
 /* A macro that tells us whether the function invocation represented
index 306e4477021088afc2f6a30ef7ca769ee1779d96..f408c8bb48c23c29e26b62b2a174246aca661ec4 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1986, 1987, 1988, 1989, 1990 Free Software Foundation, Inc.
+/* Host machine description for Motorola Delta 88 system, for GDB.
+   Copyright 1986, 1987, 1988, 1989, 1990, 1991 Free Software Foundation, Inc.
 
 This file is part of GDB.
 
@@ -16,10 +17,6 @@ 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
-/* This is currently for a 88000 running DGUX.  If other 88k ports are
-   done, OS-specific stuff should be moved (see tm-68k.h, for example).  */
-/* g++ support is not yet included.  */
-
 #define HOST_BYTE_ORDER BIG_ENDIAN
 
 #if !defined (USG)
@@ -27,47 +24,20 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #endif
 
 #define MAXPATHLEN 1024
-/* delta 88 doesn't have  bcopy(), etc.  */
-#define USG_UTILS 1
 
 #include <sys/param.h>
 #include <sys/time.h>
 
-#define vfork() fork()
-#define index strchr
-#define rindex strrchr
-#define getwd(BUF) getcwd(BUF,MAXPATHLEN);
-#define bzero(ptr,count) (memset((ptr),0,(count)))
-#define bcopy(src,dst,count) (memcpy((dst),(src),(count)))
-#define bcmp(left,right,count) (memcmp((right),(left),(count)))
-#if 0
-#ifdef __GNUC__
-#define memcpy __builtin_memcpy
-/* gcc doesn't have this, at least not gcc 1.92.  */
-/* #define memset __builtin_memset */
-#define strcmp __builtin_strcmp
-#endif
-#endif
-
 #define HAVE_TERMIO
 
-
 /*#define USIZE 2048*/
 #define NBPG NBPC
 #define UPAGES USIZE
 
-#define HAVE_GETPAGESIZE
-
 /* Get rid of any system-imposed stack limit if possible.  */
 
 /*#define SET_STACK_LIMIT_HUGE*/
 
-/* number of traps that happen between exec'ing the shell
- * to run an inferior, and when we finally get to
- * the inferior code.  This is 2 on most implementations.
- */
-#define START_INFERIOR_TRAPS_EXPECTED 2
-
 /* This is the amount to subtract from u.u_ar0
    to get the offset in the core file of the register values.  */
 
@@ -80,46 +50,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define REGISTER_U_ADDR(addr, blockend, regno) \
         (addr) = m88k_register_u_addr ((blockend),(regno));
 
-#define HAVE_WAIT_STRUCT
-
 #define FETCH_INFERIOR_REGISTERS
-\f
-/* Interface definitions for kernel debugger KDB.  */
-
-/* Map machine fault codes into signal numbers.
-   First subtract 0, divide by 4, then index in a table.
-   Faults for which the entry in this table is 0
-   are not handled by KDB; the program's own trap handler
-   gets to handle then.  */
-
-#define FAULT_CODE_ORIGIN 0
-#define FAULT_CODE_UNITS 4
-#define FAULT_TABLE    \
-{ 0, 0, 0, 0, 0, 0, 0, 0, \
-  0, 0, 0, 0, 0, 0, 0, 0, \
-  0, 0, 0, 0, 0, 0, 0, 0}
-
-/* Start running with a stack stretching from BEG to END.
-   BEG and END should be symbols meaningful to the assembler.
-   This is used only for kdb.  */
-
-#define INIT_STACK(beg, end)  {}
-
-/* Push the frame pointer register on the stack.  */
-#define PUSH_FRAME_PTR        {}
-
-/* Copy the top-of-stack to the frame pointer register.  */
-#define POP_FRAME_PTR  {}
-
-/* After KDB is entered by a fault, push all registers
-   that GDB thinks about (all NUM_REGS of them),
-   so that they appear in order of ascending GDB register number.
-   The fault code will be on the stack beyond the last register.  */
-
-#define PUSH_REGISTERS        {}
 
-/* Assuming the registers (including processor status) have been
-   pushed on the stack in order of ascending GDB register number,
-   restore them and return to the address in the saved PC register.  */
+/* Address of end of stack space (in core files).  */
 
-#define POP_REGISTERS      {}
+#define STACK_END_ADDR 0xF0000000
index bcfc23e1ccbdcd7a60e70e6a640106e1ba7c8ad2..bad91f8ddaa18e45db2f86210f0bc11ffc4d6729 100644 (file)
@@ -17,10 +17,6 @@ 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
-/* This is currently for a 88000 running DGUX.  If other 88k ports are
-   done, OS-specific stuff should be moved (see tm-68k.h, for example).  */
-/* g++ support is not yet included.  */
-
 #define HOST_BYTE_ORDER BIG_ENDIAN
 
 #if !defined (USG)
@@ -51,18 +47,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define NBPG NBPC
 #define UPAGES USIZE
 
-#define HAVE_GETPAGESIZE
-
 /* Get rid of any system-imposed stack limit if possible.  */
 
 #define SET_STACK_LIMIT_HUGE
 
-/* number of traps that happen between exec'ing the shell
- * to run an inferior, and when we finally get to
- * the inferior code.  This is 2 on most implementations.
- */
-#define START_INFERIOR_TRAPS_EXPECTED 2
-
 /* This is the amount to subtract from u.u_ar0
    to get the offset in the core file of the register values.  */
 
@@ -75,6 +63,4 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define REGISTER_U_ADDR(addr, blockend, regno) \
         (addr) = m88k_register_u_addr ((blockend),(regno));
 
-#define HAVE_WAIT_STRUCT
-
 #define FETCH_INFERIOR_REGISTERS