* config/m68k/tm-m68k.h: Renamed from config/m68k/tm-68k.h.
authorFred Fish <fnf@specifix.com>
Tue, 30 Mar 1993 00:33:44 +0000 (00:33 +0000)
committerFred Fish <fnf@specifix.com>
Tue, 30 Mar 1993 00:33:44 +0000 (00:33 +0000)
* m68k/{tm-3b1.h, tm-altos.h, tm-amix.h, tm-es1800.h,
tm-hp300bsd.h, tm-hp300hpux.h, tm-isi.h, tm-news.h, tm-os68k.h,
tm-st2000.h, tm-sun2.h, tm-sun3.h, tm-vx68.h}:  Include tm-m68k.h
instead of tm-68k.h.
* Makefile.in (HFILES):  tm-68k.h renamed to tm-m68k.h.
* README, a29k-pinsn.c, m68k-pinsn.c, m68k-stub.c, remote-vx.c,
m68k/{altos.mh, altos.mt, apollo68b.mh, nm-apollo68b.h,
nm-hp300bsd.h, config/m68k/xm-apollo68b.h}:  Map '68k' to 'm68k'.
* a29k/tm-a29k.h, doc/gdbint.texinfo:  Account for renaming of
tm-68k.h to tm-m68k.h.
* m68k/m68k-fp.mt (TM_FILE):  tm-68k-fp.h renamed to tm-m68k-fp.h.
* m68k/m68k-nofp.mt (TM_FILE):  tm-68k-nofp.h renamed to
tm-m68k-nofp.h.

32 files changed:
gdb/ChangeLog
gdb/Makefile.in
gdb/a29k-pinsn.c
gdb/config/a29k/tm-a29k.h
gdb/config/m68k/altos.mh
gdb/config/m68k/altos.mt
gdb/config/m68k/apollo68b.mh
gdb/config/m68k/m68k-fp.mt
gdb/config/m68k/m68k-nofp.mt
gdb/config/m68k/nm-apollo68b.h
gdb/config/m68k/nm-hp300bsd.h
gdb/config/m68k/tm-3b1.h
gdb/config/m68k/tm-68k-fp.h [deleted file]
gdb/config/m68k/tm-68k-nofp.h [deleted file]
gdb/config/m68k/tm-68k.h [deleted file]
gdb/config/m68k/tm-altos.h
gdb/config/m68k/tm-amix.h
gdb/config/m68k/tm-es1800.h
gdb/config/m68k/tm-hp300bsd.h
gdb/config/m68k/tm-hp300hpux.h
gdb/config/m68k/tm-isi.h
gdb/config/m68k/tm-m68k-fp.h [new file with mode: 0644]
gdb/config/m68k/tm-m68k-nofp.h [new file with mode: 0644]
gdb/config/m68k/tm-m68k.h [new file with mode: 0644]
gdb/config/m68k/tm-news.h
gdb/config/m68k/tm-st2000.h
gdb/config/m68k/tm-sun2.h
gdb/config/m68k/tm-sun3.h
gdb/config/m68k/tm-vx68.h
gdb/config/m68k/xm-apollo68b.h
gdb/m68k-pinsn.c
gdb/remote-vx.c

index 5df0f3968f2a5bc49a526d876131c205fb8bb86a..f73f9f14a600e1d759feffbb316537b6949e3a2b 100644 (file)
@@ -1,9 +1,20 @@
-Mon Mar 29 13:55:29 1993  Jim Kingdon  (kingdon@cygnus.com)
-
-       * breakpoint.c: Add comments regarding breakpoint_re_set.
-
 Mon Mar 29 15:03:25 1993  Fred Fish  (fnf@cygnus.com)
 
 Mon Mar 29 15:03:25 1993  Fred Fish  (fnf@cygnus.com)
 
+       * config/m68k/tm-m68k.h:  Renamed from config/m68k/tm-68k.h.
+       * m68k/{tm-3b1.h, tm-altos.h, tm-amix.h, tm-es1800.h,
+       tm-hp300bsd.h, tm-hp300hpux.h, tm-isi.h, tm-news.h, tm-os68k.h,
+       tm-st2000.h, tm-sun2.h, tm-sun3.h, tm-vx68.h}:  Include tm-m68k.h
+       instead of tm-68k.h.
+       * Makefile.in (HFILES):  tm-68k.h renamed to tm-m68k.h.
+       * README, a29k-pinsn.c, m68k-pinsn.c, m68k-stub.c, remote-vx.c,
+       m68k/{altos.mh, altos.mt, apollo68b.mh, nm-apollo68b.h,
+       nm-hp300bsd.h, config/m68k/xm-apollo68b.h}:  Map '68k' to 'm68k'.
+       * a29k/tm-a29k.h, doc/gdbint.texinfo:  Account for renaming of
+       tm-68k.h to tm-m68k.h.
+       * m68k/m68k-fp.mt (TM_FILE):  tm-68k-fp.h renamed to tm-m68k-fp.h.
+       * m68k/m68k-nofp.mt (TM_FILE):  tm-68k-nofp.h renamed to
+       tm-m68k-nofp.h.
+
        * config/a29k/tm-a29k.h:  Renamed from config/a29k/tm-29k.h.
        * a29k-pinsn.c:  Renamed from am29k-pinsn.c.
        * a29k-tdep.c:  Renamed from am29k-tdep.c.
        * config/a29k/tm-a29k.h:  Renamed from config/a29k/tm-29k.h.
        * a29k-pinsn.c:  Renamed from am29k-pinsn.c.
        * a29k-tdep.c:  Renamed from am29k-tdep.c.
@@ -22,6 +33,8 @@ Mon Mar 29 15:03:25 1993  Fred Fish  (fnf@cygnus.com)
 
 Mon Mar 29 13:55:29 1993  Jim Kingdon  (kingdon@cygnus.com)
 
 
 Mon Mar 29 13:55:29 1993  Jim Kingdon  (kingdon@cygnus.com)
 
+       * breakpoint.c: Add comments regarding breakpoint_re_set.
+
        * xcoffread.c (sort_syms, compare_symbols): Remove.
        (xcoff_symfile_read): Use sort_all_symtab_syms from symfile.c
        not our own sort_syms (it is identical).
        * xcoffread.c (sort_syms, compare_symbols): Remove.
        (xcoff_symfile_read): Use sort_all_symtab_syms from symfile.c
        not our own sort_syms (it is identical).
index df7f3efbc1dfc4af6fbb9fb6bb7ced95fb5cccb4..0ee7296431033d026dc6afdae5087f91afb5990e 100644 (file)
@@ -307,7 +307,7 @@ HFILES = breakpoint.h buildsym.h call-cmds.h command.h defs.h environ.h \
        partial-stab.h serial.h signals.h solib.h symfile.h symtab.h \
        stabsread.h target.h terminal.h typeprint.h xcoffsolib.h value.h \
        c-lang.h ch-lang.h m2-lang.h complaints.h ns32k-opcode.h valprint.h \
        partial-stab.h serial.h signals.h solib.h symfile.h symtab.h \
        stabsread.h target.h terminal.h typeprint.h xcoffsolib.h value.h \
        c-lang.h ch-lang.h m2-lang.h complaints.h ns32k-opcode.h valprint.h \
-       config/m68k/tm-68k.h config/pa/tm-hppa.h \
+       config/m68k/tm-m68k.h config/pa/tm-hppa.h \
        config/i960/tm-i960.h config/sparc/tm-sparc.h config/tm-sunos.h \
        config/tm-sysv4.h config/m68k/xm-m68k.h config/sparc/xm-sparc.h \
        config/xm-sysv4.h config/vax/xm-vax.h config/nm-trash.h \
        config/i960/tm-i960.h config/sparc/tm-sparc.h config/tm-sunos.h \
        config/tm-sysv4.h config/m68k/xm-m68k.h config/sparc/xm-sparc.h \
        config/xm-sysv4.h config/vax/xm-vax.h config/nm-trash.h \
@@ -564,8 +564,8 @@ config-check-targets:
 # for some machines.
 # But these rules don't do what we want; we want to hack the foo.o: tm.h
 # dependency to do the right thing.
 # for some machines.
 # But these rules don't do what we want; we want to hack the foo.o: tm.h
 # dependency to do the right thing.
-tm-isi.h tm-sun3.h tm-news.h tm-hp300bsd.h tm-altos.h: tm-68k.h
-tm-hp300hpux.h tm-sun2.h tm-3b1.h: tm-68k.h
+tm-isi.h tm-sun3.h tm-news.h tm-hp300bsd.h tm-altos.h: tm-m68k.h
+tm-hp300hpux.h tm-sun2.h tm-3b1.h: tm-m68k.h
 xm-news1000.h: xm-news.h
 xm-i386-sv32.h: xm-i386.h
 tm-i386gas.h: tm-i386.h
 xm-news1000.h: xm-news.h
 xm-i386-sv32.h: xm-i386.h
 tm-i386gas.h: tm-i386.h
index bd95aef6c2e363a4b9e725092c670a4169fa54ad..db9cb249d347842d8abf60f3f5f1364b476d58aa 100644 (file)
@@ -185,8 +185,8 @@ print_insn (memaddr, stream)
 
                case 'P':
                  /* This output looks just like absolute addressing, but
 
                case 'P':
                  /* This output looks just like absolute addressing, but
-                    maybe that's OK (it's what the GDB 68k and EBMON
-                    29k disassemblers do).  */
+                    maybe that's OK (it's what the GDB m68k and EBMON
+                    a29k disassemblers do).  */
                  /* All the shifting is to sign-extend it.  p*/
                  print_address
                    (memaddr +
                  /* All the shifting is to sign-extend it.  p*/
                  print_address
                    (memaddr +
index 56d6a861ed73b2b0b3ecd245043d5a1e33bed963..1d10bfec7e56242f141fd58c49d54dab994e21fa 100644 (file)
@@ -24,7 +24,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
    If gdb is ported to other a29k machines/systems, the
    machine/system-specific parts should be removed from this file (a
 
    If gdb is ported to other a29k machines/systems, the
    machine/system-specific parts should be removed from this file (a
-   la tm-68k.h).  */
+   la tm-m68k.h).  */
 
 /* Byte order is configurable, but this machine runs big-endian.  */
 #define TARGET_BYTE_ORDER BIG_ENDIAN
 
 /* Byte order is configurable, but this machine runs big-endian.  */
 #define TARGET_BYTE_ORDER BIG_ENDIAN
index 13c37a701094c702bee95be9ccd30fa6e2a0a4b4..0984539301bffa4c328749f304896fab0598c245 100644 (file)
@@ -1,4 +1,4 @@
-# Host: Altos 3068 (68k, System V release 2)
+# Host: Altos 3068 (m68k, System V release 2)
 XDEPFILES= infptrace.o inftarg.o fork-child.o altos-xdep.o
 XM_FILE= xm-altos.h
 REGEX=regex.o
 XDEPFILES= infptrace.o inftarg.o fork-child.o altos-xdep.o
 XM_FILE= xm-altos.h
 REGEX=regex.o
index d156615f65528dcfdfdab13debd7e0a986ec91c5..9cf9b8fa92c644153bea622d6a48b53cc68f835c 100644 (file)
@@ -1,3 +1,3 @@
-# Target: Altos 3068 (68k, System V release 2)
+# Target: Altos 3068 (m68k, System V release 2)
 TDEPFILES= m68k-pinsn.o exec.o
 TM_FILE= tm-altos.h
 TDEPFILES= m68k-pinsn.o exec.o
 TM_FILE= tm-altos.h
index 58f731360f708d5fc9c02bef9a110d461a238056..23860d63ed757a1242afe38d1e98aadd3bcc5375 100644 (file)
@@ -1,4 +1,4 @@
-# Host: Apollo 68k, BSD mode.
+# Host: Apollo m68k, BSD mode.
 
 XM_FILE= xm-apollo68b.h
 XDEPFILES= ser-bsd.o
 
 XM_FILE= xm-apollo68b.h
 XDEPFILES= ser-bsd.o
index 139595b723b8ff9bfc26f3007d1056b07d2200ba..177613da1058f0efbf89d051ce7f8752ecbcc9ce 100644 (file)
@@ -1,3 +1,3 @@
 # Target: Motorola 68xxx with floating point
 TDEPFILES= exec.o m68k-pinsn.o m68k-tdep.o
 # Target: Motorola 68xxx with floating point
 TDEPFILES= exec.o m68k-pinsn.o m68k-tdep.o
-TM_FILE= tm-68k-fp.h
+TM_FILE= tm-m68k-fp.h
index a2465bf6aa492409600db4b37ede2d970fec901a..4d2f70a9faa95b5dcd53464ccaf8f3681c02dca8 100644 (file)
@@ -1,3 +1,3 @@
 # Target: Motorola 68xxx without floating point
 TDEPFILES= exec.o m68k-pinsn.o m68k-tdep.o
 # Target: Motorola 68xxx without floating point
 TDEPFILES= exec.o m68k-pinsn.o m68k-tdep.o
-TM_FILE= tm-68k-nofp.h
+TM_FILE= tm-m68k-nofp.h
index ba2998aefb1dbed2f2c7d952478c8c505bde7edd..6f28b62f4201c00420f836bdb02496658654bcb7 100644 (file)
@@ -1,4 +1,4 @@
-/* Macro defintions for an Apollo 68k in BSD mode
+/* Macro defintions for an Apollo m68k in BSD mode
    Copyright (C) 1992 Free Software Foundation, Inc.
 
 This file is part of GDB.
    Copyright (C) 1992 Free Software Foundation, Inc.
 
 This file is part of GDB.
index 353184232c90802af9de9a20c52b24beb6d16051..6ad7f70ac75f622541289be4a645ceeed41814d5 100644 (file)
@@ -18,7 +18,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 /* This is a hack.  This is only a hack.  Were this a common source file,
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 /* This is a hack.  This is only a hack.  Were this a common source file,
-   rather than a config file specific to BSD on HP 68k's, you would have
+   rather than a config file specific to BSD on HP m68k's, you would have
    been instructed to clean this up.  As it is, clean it up if FSF's 
    HP's-running-ancient-BSD ever go away.  */
 
    been instructed to clean this up.  As it is, clean it up if FSF's 
    HP's-running-ancient-BSD ever go away.  */
 
index b9bd4efcd2d61b512cb84d7ab3e86859a9f2fad7..4d726d3ebb2098cb8c15b985a7929a6cea0e000d 100644 (file)
@@ -26,4 +26,4 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #define STACK_END_ADDR 0x300000
 
 
 #define STACK_END_ADDR 0x300000
 
-#include "m68k/tm-68k.h"
+#include "m68k/tm-m68k.h"
diff --git a/gdb/config/m68k/tm-68k-fp.h b/gdb/config/m68k/tm-68k-fp.h
deleted file mode 100644 (file)
index 73e228c..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Target machine parameters for embedded m68k with 6888x float, for GDB.
-   Copyright 1986, 1987, 1989, 1992, 1993 Free Software Foundation, Inc.
-
-This file is part of GDB.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-#define HAVE_68881
-
-#include "m68k/tm-68k.h"
-
-/* Longjmp info comes from the Sun-3 machine description.  Might as well
-   guess... */
-
-/* Offsets (in target ints) into jmp_buf.  Not defined by Sun, but at least
-   documented in a comment in <machine/setjmp.h>! */
-
-#define JB_ELEMENT_SIZE 4
-
-#define JB_ONSSTACK 0
-#define JB_SIGMASK 1
-#define JB_SP 2
-#define JB_PC 3
-#define JB_PSL 4
-#define JB_D2 5
-#define JB_D3 6
-#define JB_D4 7
-#define JB_D5 8
-#define JB_D6 9
-#define JB_D7 10
-#define JB_A2 11
-#define JB_A3 12
-#define JB_A4 13
-#define JB_A5 14
-#define JB_A6 15
-
-/* Figure out where the longjmp will land.  Slurp the args out of the stack.
-   We expect the first arg to be a pointer to the jmp_buf structure from which
-   we extract the pc (JB_PC) that we will land at.  The pc is copied into ADDR.
-   This routine returns true on success */
-
-#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-
-/* Where is the PC after a call?  */
-
-#ifdef __STDC__
-struct frame_info;
-#endif
-
-extern CORE_ADDR m68k_saved_pc_after_call PARAMS ((struct frame_info *));
-
-#undef SAVED_PC_AFTER_CALL
-#define SAVED_PC_AFTER_CALL(frame) \
-  m68k_saved_pc_after_call(frame)
diff --git a/gdb/config/m68k/tm-68k-nofp.h b/gdb/config/m68k/tm-68k-nofp.h
deleted file mode 100644 (file)
index 0ce320c..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Target machine parameters for embedded m68k, without float, for GDB.
-   Copyright 1986, 1987, 1989, 1992, 1993 Free Software Foundation, Inc.
-
-This file is part of GDB.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-#include "m68k/tm-68k.h"
-
-/* Longjmp info comes from the Sun-3 machine description.  Might as well
-   guess... */
-
-/* Offsets (in target ints) into jmp_buf.  Not defined by Sun, but at least
-   documented in a comment in <machine/setjmp.h>! */
-
-#define JB_ELEMENT_SIZE 4
-
-#define JB_ONSSTACK 0
-#define JB_SIGMASK 1
-#define JB_SP 2
-#define JB_PC 3
-#define JB_PSL 4
-#define JB_D2 5
-#define JB_D3 6
-#define JB_D4 7
-#define JB_D5 8
-#define JB_D6 9
-#define JB_D7 10
-#define JB_A2 11
-#define JB_A3 12
-#define JB_A4 13
-#define JB_A5 14
-#define JB_A6 15
-
-/* Figure out where the longjmp will land.  Slurp the args out of the stack.
-   We expect the first arg to be a pointer to the jmp_buf structure from which
-   we extract the pc (JB_PC) that we will land at.  The pc is copied into ADDR.
-   This routine returns true on success */
-
-#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-
-/* Where is the PC after a call?  */
-
-#ifdef __STDC__
-struct frame_info;
-#endif
-
-extern CORE_ADDR m68k_saved_pc_after_call PARAMS ((struct frame_info *));
-
-#undef SAVED_PC_AFTER_CALL
-#define SAVED_PC_AFTER_CALL(frame) \
-  m68k_saved_pc_after_call(frame)
diff --git a/gdb/config/m68k/tm-68k.h b/gdb/config/m68k/tm-68k.h
deleted file mode 100644 (file)
index 96d71de..0000000
+++ /dev/null
@@ -1,525 +0,0 @@
-/* Parameters for execution on a 68000 series machine.
-   Copyright 1986, 1987, 1989, 1990, 1992 Free Software Foundation, Inc.
-
-This file is part of GDB.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-/* Generic 68000 stuff, to be included by other tm-*.h files.
-   Define HAVE_68881 if that is the case.  */
-
-#if defined (HAVE_68881)
-#define IEEE_FLOAT 1
-#endif
-
-/* Define the bit, byte, and word ordering of the machine.  */
-#define TARGET_BYTE_ORDER BIG_ENDIAN
-
-/* 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.  */
-
-#if !defined(SKIP_PROLOGUE)
-#define SKIP_PROLOGUE(ip)   {(ip) = m68k_skip_prologue(ip);}
-extern CORE_ADDR m68k_skip_prologue PARAMS ((CORE_ADDR ip));
-#endif
-
-/* 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) \
-read_memory_integer (read_register (SP_REGNUM), 4)
-
-/* Stack grows downward.  */
-
-#define INNER_THAN <
-
-/* Sequence of bytes for breakpoint instruction.
-   This is a TRAP instruction.  The last 4 bits (0xf below) is the
-   vector.  Systems which don't use 0xf should define BPT_VECTOR
-   themselves before including this file.  */
-
-#if !defined (BPT_VECTOR)
-#define BPT_VECTOR 0xf
-#endif
-
-#if !defined (BREAKPOINT)
-#define BREAKPOINT {0x4e, (0x40 | BPT_VECTOR)}
-#endif
-
-/* If your kernel resets the pc after the trap happens you may need to
-   define this before including this file.  */
-
-#if !defined (DECR_PC_AFTER_BREAK)
-#define DECR_PC_AFTER_BREAK 2
-#endif
-
-/* Nonzero if instruction at PC is a return instruction.  */
-/* Allow any of the return instructions, including a trapv and a return
-   from interupt.  */
-
-#define ABOUT_TO_RETURN(pc) ((read_memory_integer (pc, 2) & ~0x3) == 0x4e74)
-
-/* Return 1 if P points to an invalid floating point value.  */
-
-#define INVALID_FLOAT(p, len) 0   /* Just a first guess; not checked */
-
-/* Say how long registers are.  */
-
-#define REGISTER_TYPE long
-
-#if defined (HAVE_68881)
-#  if defined (GDB_TARGET_IS_SUN3)
-    /* Sun3 status includes fpflags, which shows whether the FPU has been used
-       by the process, and whether the FPU was done with an instruction or 
-       was interrupted in the middle of a long instruction.  See
-       <machine/reg.h>.  */
-    /*                      a&d, pc,sr, fp, fpstat, fpflags   */
-#    define NUM_REGS 31
-#    define REGISTER_BYTES (16*4 + 8 + 8*12 + 3*4 + 4)
-#  else /* Not sun3.  */
-#    define NUM_REGS 29
-#    define REGISTER_BYTES (16*4 + 8 + 8*12 + 3*4)
-#  endif /* Not sun3.  */
-#else /* No 68881.  */
-#  define NUM_REGS 18
-#  define REGISTER_BYTES (16*4 + 8)
-#endif /* No 68881.  */
-
-/* Index within `registers' of the first byte of the space for
-   register N.  */
-
-#if defined (HAVE_68881)
-#define REGISTER_BYTE(N)  \
- ((N) >= FPC_REGNUM ? (((N) - FPC_REGNUM) * 4) + 168   \
-  : (N) >= FP0_REGNUM ? (((N) - FP0_REGNUM) * 12) + 72 \
-  : (N) * 4)
-
-/* Number of bytes of storage in the actual machine representation
-   for register N.  On the 68000, all regs are 4 bytes
-   except the floating point regs which are 12 bytes.  */
-/* Note that the unsigned cast here forces the result of the
-   subtraction to very high positive values if N < FP0_REGNUM */
-
-#define REGISTER_RAW_SIZE(N) (((unsigned)(N) - FP0_REGNUM) < 8 ? 12 : 4)
-
-/* Number of bytes of storage in the program's representation
-   for register N.  On the 68000, all regs are 4 bytes
-   except the floating point regs which are 8-byte doubles.  */
-
-#define REGISTER_VIRTUAL_SIZE(N) (((unsigned)(N) - FP0_REGNUM) < 8 ? 8 : 4)
-
-/* Largest value REGISTER_RAW_SIZE can have.  */
-
-#define MAX_REGISTER_RAW_SIZE 12
-
-/* Largest value REGISTER_VIRTUAL_SIZE can have.  */
-
-#define MAX_REGISTER_VIRTUAL_SIZE 8
-
-/* Nonzero if register N requires conversion
-   from raw format to virtual format.  */
-
-#define REGISTER_CONVERTIBLE(N) (((unsigned)(N) - FP0_REGNUM) < 8)
-
-/* Put the declaration out here because if it's in the macros, PCC
-   will complain.  */
-extern const struct ext_format ext_format_68881;
-
-/* Convert data from raw format for register REGNUM
-   to virtual format for register REGNUM.  */
-
-#define REGISTER_CONVERT_TO_VIRTUAL(REGNUM,FROM,TO)    \
-{ \
-  if ((REGNUM) >= FP0_REGNUM && (REGNUM) < FPC_REGNUM) \
-    ieee_extended_to_double (&ext_format_68881, (FROM), (double *)(TO)); \
-  else                                 \
-    memcpy ((TO), (FROM), 4);  \
-}
-
-/* Convert data from virtual format for register REGNUM
-   to raw format for register REGNUM.  */
-
-#define REGISTER_CONVERT_TO_RAW(REGNUM,FROM,TO)        \
-{ \
-  if ((REGNUM) >= FP0_REGNUM && (REGNUM) < FPC_REGNUM) \
-    double_to_ieee_extended (&ext_format_68881, (double *)(FROM), (TO)); \
-  else                                 \
-    memcpy ((TO), (FROM), 4);  \
-}
-
-/* Return the GDB type object for the "standard" data type
-   of data in register N.  */
-/* Note, for registers which contain addresses return
-   pointer to void, not pointer to char, because we don't
-   want to attempt to print the string after printing the address.  */
-#define REGISTER_VIRTUAL_TYPE(N) \
- (((unsigned)(N) - FP0_REGNUM) < 8 ? builtin_type_double :           \
-  (N) == PC_REGNUM || (N) == FP_REGNUM || (N) == SP_REGNUM ?         \
-  lookup_pointer_type (builtin_type_void) : builtin_type_int)
-
-#else /* no 68881.  */
-/* Index within `registers' of the first byte of the space for
-   register N.  */
-
-#define REGISTER_BYTE(N)  ((N) * 4)
-
-/* Number of bytes of storage in the actual machine representation
-   for register N.  On the 68000, all regs are 4 bytes.  */
-
-#define REGISTER_RAW_SIZE(N) 4
-
-/* Number of bytes of storage in the program's representation
-   for register N.  On the 68000, all regs are 4 bytes.  */
-
-#define REGISTER_VIRTUAL_SIZE(N) 4
-
-/* Largest value REGISTER_RAW_SIZE can have.  */
-
-#define MAX_REGISTER_RAW_SIZE 4
-
-/* Largest value REGISTER_VIRTUAL_SIZE can have.  */
-
-#define MAX_REGISTER_VIRTUAL_SIZE 4
-
-/* 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)  memcpy ((TO), (FROM), 4);
-
-/* Convert data from virtual format for register REGNUM
-   to raw format for register REGNUM.  */
-
-#define REGISTER_CONVERT_TO_RAW(REGNUM,FROM,TO)  memcpy ((TO), (FROM), 4);
-
-/* Return the GDB type object for the "standard" data type
-   of data in register N.  */
-
-#define REGISTER_VIRTUAL_TYPE(N)  builtin_type_int
-
-#endif /* No 68881.  */
-
-/* Initializer for an array of names of registers.
-   Entries beyond the first NUM_REGS are ignored.  */
-
-#define REGISTER_NAMES  \
- {"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", \
-  "a0", "a1", "a2", "a3", "a4", "a5", "fp", "sp", \
-  "ps", "pc",  \
-  "fp0", "fp1", "fp2", "fp3", "fp4", "fp5", "fp6", "fp7", \
-  "fpcontrol", "fpstatus", "fpiaddr", "fpcode", "fpflags" }
-
-/* 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 A1_REGNUM 9
-#define FP_REGNUM 14           /* Contains address of executing stack frame */
-#define SP_REGNUM 15           /* Contains address of top of stack */
-#define PS_REGNUM 16           /* Contains processor status */
-#define PC_REGNUM 17           /* Contains program counter */
-#if defined (HAVE_68881)
-#define FP0_REGNUM 18          /* Floating point register 0 */
-#define FPC_REGNUM 26          /* 68881 control register */
-#define FPS_REGNUM 27          /* 68881 status register */
-#define FPI_REGNUM 28          /* 68881 iaddr register */
-#endif /* 68881.  */
-
-/* Store the address of the place in which to copy the structure the
-   subroutine will return.  This is called from call_function. */
-
-#define STORE_STRUCT_RETURN(ADDR, SP) \
-  { write_register (A1_REGNUM, (ADDR)); }
-
-/* Extract from an array REGBUF containing the (raw) register state
-   a function return value of type TYPE, and copy that, in virtual format,
-   into VALBUF.  This is assuming that floating point values are returned
-   as doubles in d0/d1.  */
-
-#if !defined (EXTRACT_RETURN_VALUE)
-#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
-  memcpy ((VALBUF),                                                    \
-         (char *)(REGBUF) +                                            \
-                (TYPE_LENGTH(TYPE) >= 4 ? 0 : 4 - TYPE_LENGTH(TYPE)),  \
-         TYPE_LENGTH(TYPE))
-#endif
-
-/* Write into appropriate registers a function return value
-   of type TYPE, given in virtual format.  Assumes floats are passed
-   in d0/d1.  */
-
-#if !defined (STORE_RETURN_VALUE)
-#define STORE_RETURN_VALUE(TYPE,VALBUF) \
-  write_register_bytes (0, VALBUF, TYPE_LENGTH (TYPE))
-#endif
-
-/* Extract from an array REGBUF containing the (raw) register state
-   the address in which a function should return its structure value,
-   as a CORE_ADDR (or an expression that can be used as one).  */
-
-#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) (*(CORE_ADDR *)(REGBUF))
-\f
-/* 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.
-   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.  */
-
-#define FRAME_CHAIN(thisframe)  \
-  (!inside_entry_file ((thisframe)->pc) ? \
-   read_memory_integer ((thisframe)->frame, 4) :\
-   0)
-
-/* Define other aspects of the stack frame.  */
-
-/* A macro that tells us whether the function invocation represented
-   by FI does not have a frame on the stack associated with it.  If it
-   does not, FRAMELESS is set to 1, else 0.  */
-#define FRAMELESS_FUNCTION_INVOCATION(FI, FRAMELESS) \
-  (FRAMELESS) = frameless_look_for_prologue(FI)
-
-#define FRAME_SAVED_PC(FRAME) (read_memory_integer ((FRAME)->frame + 4, 4))
-
-#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame)
-
-#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame)
-
-/* Set VAL to the number of args passed to frame described by FI.
-   Can set VAL to -1, meaning no way to tell.  */
-
-/* We can't tell how many args there are
-   now that the C compiler delays popping them.  */
-#if !defined (FRAME_NUM_ARGS)
-#define FRAME_NUM_ARGS(val,fi) (val = -1)
-#endif
-
-/* Return number of bytes at start of arglist that are not really args.  */
-
-#define FRAME_ARGS_SKIP 8
-
-/* 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.  */
-
-#if !defined (FRAME_FIND_SAVED_REGS)
-#if defined (HAVE_68881)
-#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs)            \
-{ register int regnum;                                                 \
-  register int regmask;                                                        \
-  register CORE_ADDR next_addr;                                                \
-  register CORE_ADDR pc;                                               \
-  int nextinsn;                                                                \
-  bzero (&frame_saved_regs, sizeof frame_saved_regs);                  \
-  if ((frame_info)->pc >= (frame_info)->frame - CALL_DUMMY_LENGTH - FP_REGNUM*4 - 8*12 - 4 \
-      && (frame_info)->pc <= (frame_info)->frame)                              \
-    { next_addr = (frame_info)->frame;                                 \
-      pc = (frame_info)->frame - CALL_DUMMY_LENGTH - FP_REGNUM * 4 - 8*12 - 4; }\
-  else                                                                 \
-    { pc = get_pc_function_start ((frame_info)->pc);                   \
-      /* Verify we have a link a6 instruction next;                    \
-        if not we lose.  If we win, find the address above the saved   \
-        regs using the amount of storage from the link instruction.  */\
-      if (044016 == read_memory_integer (pc, 2))                       \
-       next_addr = (frame_info)->frame + read_memory_integer (pc += 2, 4), pc+=4; \
-      else if (047126 == read_memory_integer (pc, 2))                  \
-       next_addr = (frame_info)->frame + read_memory_integer (pc += 2, 2), pc+=2; \
-      else goto lose;                                                  \
-      /* If have an addal #-n, sp next, adjust next_addr.  */          \
-      if ((0177777 & read_memory_integer (pc, 2)) == 0157774)          \
-       next_addr += read_memory_integer (pc += 2, 4), pc += 4;         \
-    }                                                                  \
-  /* next should be a moveml to (sp) or -(sp) or a movl r,-(sp) */     \
-  regmask = read_memory_integer (pc + 2, 2);                           \
-  /* But before that can come an fmovem.  Check for it.  */            \
-  nextinsn = 0xffff & read_memory_integer (pc, 2);                     \
-  if (0xf227 == nextinsn                                               \
-      && (regmask & 0xff00) == 0xe000)                                 \
-    { pc += 4; /* Regmask's low bit is for register fp7, the first pushed */ \
-      for (regnum = FP0_REGNUM + 7; regnum >= FP0_REGNUM; regnum--, regmask >>= 1)             \
-       if (regmask & 1)                                                \
-          (frame_saved_regs).regs[regnum] = (next_addr -= 12);         \
-      regmask = read_memory_integer (pc + 2, 2); }                     \
-  if (0044327 == read_memory_integer (pc, 2))                          \
-    { pc += 4; /* Regmask's low bit is for register 0, the first written */ \
-      for (regnum = 0; regnum < 16; regnum++, regmask >>= 1)           \
-       if (regmask & 1)                                                \
-          (frame_saved_regs).regs[regnum] = (next_addr += 4) - 4; }    \
-  else if (0044347 == read_memory_integer (pc, 2))                     \
-    { pc += 4; /* Regmask's low bit is for register 15, the first pushed */ \
-      for (regnum = 15; regnum >= 0; regnum--, regmask >>= 1)          \
-       if (regmask & 1)                                                \
-          (frame_saved_regs).regs[regnum] = (next_addr -= 4); }                \
-  else if (0x2f00 == (0xfff0 & read_memory_integer (pc, 2)))           \
-    { regnum = 0xf & read_memory_integer (pc, 2); pc += 2;             \
-      (frame_saved_regs).regs[regnum] = (next_addr -= 4); }            \
-  /* fmovemx to index of sp may follow.  */                            \
-  regmask = read_memory_integer (pc + 2, 2);                           \
-  nextinsn = 0xffff & read_memory_integer (pc, 2);                     \
-  if (0xf236 == nextinsn                                               \
-      && (regmask & 0xff00) == 0xf000)                                 \
-    { pc += 10; /* Regmask's low bit is for register fp0, the first written */ \
-      for (regnum = FP0_REGNUM + 7; regnum >= FP0_REGNUM; regnum--, regmask >>= 1)             \
-       if (regmask & 1)                                                \
-          (frame_saved_regs).regs[regnum] = (next_addr += 12) - 12;    \
-      regmask = read_memory_integer (pc + 2, 2); }                     \
-  /* clrw -(sp); movw ccr,-(sp) may follow.  */                                \
-  if (0x426742e7 == read_memory_integer (pc, 4))                       \
-    (frame_saved_regs).regs[PS_REGNUM] = (next_addr -= 4);             \
-  lose: ;                                                              \
-  (frame_saved_regs).regs[SP_REGNUM] = (frame_info)->frame + 8;                \
-  (frame_saved_regs).regs[FP_REGNUM] = (frame_info)->frame;            \
-  (frame_saved_regs).regs[PC_REGNUM] = (frame_info)->frame + 4;                \
-}
-#else /* no 68881.  */
-#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs)            \
-{ register int regnum;                                                 \
-  register int regmask;                                                        \
-  register CORE_ADDR next_addr;                                                \
-  register CORE_ADDR pc;                                               \
-  bzero (&frame_saved_regs, sizeof frame_saved_regs);                  \
-  if ((frame_info)->pc >= (frame_info)->frame - CALL_DUMMY_LENGTH - FP_REGNUM*4 - 4 \
-      && (frame_info)->pc <= (frame_info)->frame)                              \
-    { next_addr = (frame_info)->frame;                                 \
-      pc = (frame_info)->frame - CALL_DUMMY_LENGTH - FP_REGNUM * 4 - 4; }\
-  else                                                                 \
-    { pc = get_pc_function_start ((frame_info)->pc);                   \
-      /* Verify we have a link a6 instruction next;                    \
-        if not we lose.  If we win, find the address above the saved   \
-        regs using the amount of storage from the link instruction.  */\
-      if (044016 == read_memory_integer (pc, 2))                       \
-       next_addr = (frame_info)->frame + read_memory_integer (pc += 2, 4), pc+=4; \
-      else if (047126 == read_memory_integer (pc, 2))                  \
-       next_addr = (frame_info)->frame + read_memory_integer (pc += 2, 2), pc+=2; \
-      else goto lose;                                                  \
-      /* If have an addal #-n, sp next, adjust next_addr.  */          \
-      if ((0177777 & read_memory_integer (pc, 2)) == 0157774)          \
-       next_addr += read_memory_integer (pc += 2, 4), pc += 4;         \
-    }                                                                  \
-  /* next should be a moveml to (sp) or -(sp) or a movl r,-(sp) */     \
-  regmask = read_memory_integer (pc + 2, 2);                           \
-  if (0044327 == read_memory_integer (pc, 2))                          \
-    { pc += 4; /* Regmask's low bit is for register 0, the first written */ \
-      for (regnum = 0; regnum < 16; regnum++, regmask >>= 1)           \
-       if (regmask & 1)                                                \
-          (frame_saved_regs).regs[regnum] = (next_addr += 4) - 4; }    \
-  else if (0044347 == read_memory_integer (pc, 2))                     \
-    { pc += 4; /* Regmask's low bit is for register 15, the first pushed */ \
-      for (regnum = 15; regnum >= 0; regnum--, regmask >>= 1)          \
-       if (regmask & 1)                                                \
-          (frame_saved_regs).regs[regnum] = (next_addr -= 4); }                \
-  else if (0x2f00 == (0xfff0 & read_memory_integer (pc, 2)))           \
-    { regnum = 0xf & read_memory_integer (pc, 2); pc += 2;             \
-      (frame_saved_regs).regs[regnum] = (next_addr -= 4); }            \
-  /* clrw -(sp); movw ccr,-(sp) may follow.  */                                \
-  if (0x426742e7 == read_memory_integer (pc, 4))                       \
-    (frame_saved_regs).regs[PS_REGNUM] = (next_addr -= 4);             \
-  lose: ;                                                              \
-  (frame_saved_regs).regs[SP_REGNUM] = (frame_info)->frame + 8;                \
-  (frame_saved_regs).regs[FP_REGNUM] = (frame_info)->frame;            \
-  (frame_saved_regs).regs[PC_REGNUM] = (frame_info)->frame + 4;                \
-}
-#endif /* no 68881.  */
-#endif /* no FIND_FRAME_SAVED_REGS.  */
-
-\f
-/* Things needed for making the inferior call functions.
-   It seems like every m68k based machine has almost identical definitions
-   in the individual machine's configuration files.  Most other cpu types
-   (mips, i386, etc) have routines in their *-tdep.c files to handle this
-   for most configurations.  The m68k family should be able to do this as
-   well.  These macros can still be overridden when necessary.  */
-
-/* The CALL_DUMMY macro is the sequence of instructions, as disassembled
-   by gdb itself:
-
-       fmovemx fp0-fp7,sp@-                    0xf227 0xe0ff
-       moveml d0-a5,sp@-                       0x48e7 0xfffc
-       clrw sp@-                               0x4267
-       movew ccr,sp@-                          0x42e7
-
-       /..* The arguments are pushed at this point by GDB;
-       no code is needed in the dummy for this.
-       The CALL_DUMMY_START_OFFSET gives the position of 
-       the following jsr instruction.  *../
-
-       jsr @#0x32323232                        0x4eb9 0x3232 0x3232
-       addal #0x69696969,sp                    0xdffc 0x6969 0x6969
-       trap #<your BPT_VECTOR number here>     0x4e4?
-       nop                                     0x4e71
-
-   Note this is CALL_DUMMY_LENGTH bytes (28 for the above example).
-   We actually start executing at the jsr, since the pushing of the
-   registers is done by PUSH_DUMMY_FRAME.  If this were real code,
-   the arguments for the function called by the jsr would be pushed
-   between the moveml and the jsr, and we could allow it to execute through.
-   But the arguments have to be pushed by GDB after the PUSH_DUMMY_FRAME is
-   done, and we cannot allow the moveml to push the registers again lest
-   they be taken for the arguments.  */
-
-#if defined (HAVE_68881)
-
-#define CALL_DUMMY {0xf227e0ff, 0x48e7fffc, 0x426742e7, 0x4eb93232, 0x3232dffc, 0x69696969, (0x4e404e71 | (BPT_VECTOR << 16))}
-#define CALL_DUMMY_LENGTH 28           /* Size of CALL_DUMMY */
-#define CALL_DUMMY_START_OFFSET 12     /* Offset to jsr instruction*/
-
-#else
-
-#define CALL_DUMMY {0x48e7fffc, 0x426742e7, 0x4eb93232, 0x3232dffc, 0x69696969, (0x4e404e71 | (BPT_VECTOR << 16))}
-#define CALL_DUMMY_LENGTH 24           /* Size of CALL_DUMMY */
-#define CALL_DUMMY_START_OFFSET 8      /* Offset to jsr instruction*/
-
-#endif /* HAVE_68881 */
-
-/* Insert the specified number of args and function address
-   into a call sequence of the above form stored at DUMMYNAME.
-   We use the BFD routines to store a big-endian value of known size.  */
-
-#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p)     \
-{ _do_putb32 (fun,     (char *) dummyname + CALL_DUMMY_START_OFFSET + 2);  \
-  _do_putb32 (nargs*4, (char *) dummyname + CALL_DUMMY_START_OFFSET + 8); }
-
-/* Push an empty stack frame, to record the current PC, etc.  */
-
-#define PUSH_DUMMY_FRAME       { m68k_push_dummy_frame (); }
-
-extern void m68k_push_dummy_frame PARAMS ((void));
-
-extern void m68k_pop_frame PARAMS ((void));
-
-/* Discard from the stack the innermost frame, restoring all registers.  */
-
-#define POP_FRAME              { m68k_pop_frame (); }
-
-/* Offset from SP to first arg on stack at first instruction of a function */
-
-#define SP_ARG0 (1 * 4)
index b1b0733ffe8132f1bdde1ecfe412ae84be804d92..05ba2f3b28c40b64aa9746c12ecad447e5cd687d 100644 (file)
@@ -33,7 +33,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define DECR_PC_AFTER_BREAK 0
 
 /* The only reason this is here is the tm-altos.h reference below.  It
 #define DECR_PC_AFTER_BREAK 0
 
 /* The only reason this is here is the tm-altos.h reference below.  It
-   was moved back here from tm-68k.h.  FIXME? */
+   was moved back here from tm-m68k.h.  FIXME? */
 
 #define SKIP_PROLOGUE(pc)   \
 { register int op = read_memory_integer (pc, 2);       \
 
 #define SKIP_PROLOGUE(pc)   \
 { register int op = read_memory_integer (pc, 2);       \
@@ -51,4 +51,4 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
     pc += 2;   /* skip bra #char */                    \
 }
 
     pc += 2;   /* skip bra #char */                    \
 }
 
-#include "m68k/tm-68k.h"
+#include "m68k/tm-m68k.h"
index b758da770a8199734ba654cc743b1166d73b197c..f5438be52834484eb99de9db8cd7f96e39ac966d 100644 (file)
@@ -44,7 +44,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define FRAME_CHAIN_VALID_ALTERNATE
 
 #include "tm-sysv4.h"
 #define FRAME_CHAIN_VALID_ALTERNATE
 
 #include "tm-sysv4.h"
-#include "m68k/tm-68k.h"
+#include "m68k/tm-m68k.h"
 
 /* Offsets (in target ints) into jmp_buf.  Not defined in any system header
    file, so we have to step through setjmp/longjmp with a debugger and figure
 
 /* Offsets (in target ints) into jmp_buf.  Not defined in any system header
    file, so we have to step through setjmp/longjmp with a debugger and figure
index f62f04348d7840c2e58edd5fc2a4c782e350006e..bd1dbe349ce0f8c10e8e085bae76d5a0861755cd 100644 (file)
@@ -26,7 +26,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #define HAVE_68881
 
 
 #define HAVE_68881
 
-#include "m68k/tm-68k.h"
+#include "m68k/tm-m68k.h"
 
 /* Longjmp stuff borrowed from sun3 configuration.  Don't know if correct. 
    FIXME.  */
 
 /* Longjmp stuff borrowed from sun3 configuration.  Don't know if correct. 
    FIXME.  */
index 4dc95e157a71f7dba748c9a3ba214c20c36cc3d6..6a1906975d03a94a42342f8b4f23afe970c23fb9 100644 (file)
@@ -47,4 +47,4 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #define STACK_END_ADDR 0xfff00000
 
 
 #define STACK_END_ADDR 0xfff00000
 
-#include "m68k/tm-68k.h"
+#include "m68k/tm-m68k.h"
index df2df4a2304d3e3cb1df3cff4b80a643b17f6eee..263d1eb2e87d268ac61a34974b510ed54615d63c 100644 (file)
@@ -28,4 +28,4 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #define STACK_END_ADDR 0xFFF00000
 
 
 #define STACK_END_ADDR 0xFFF00000
 
-#include "m68k/tm-68k.h"
+#include "m68k/tm-m68k.h"
index da28c2fbb262d0049bbad2dd904d2cc462dee880..eec7f304579a8d374c329dde3d45af66702cd8d4 100644 (file)
@@ -135,7 +135,7 @@ retry:                                                                      \
 }
 
 /* The only reason this is here is the tm-isi.h reference below.  It
 }
 
 /* The only reason this is here is the tm-isi.h reference below.  It
-   was moved back here from tm-68k.h.  FIXME? */
+   was moved back here from tm-m68k.h.  FIXME? */
 
 #define SKIP_PROLOGUE(pc)   \
 { register int op = read_memory_integer (pc, 2);       \
 
 #define SKIP_PROLOGUE(pc)   \
 { register int op = read_memory_integer (pc, 2);       \
@@ -153,4 +153,4 @@ retry:                                                                      \
     pc += 2;   /* skip bra #char */                    \
 }
 
     pc += 2;   /* skip bra #char */                    \
 }
 
-#include "m68k/tm-68k.h"
+#include "m68k/tm-m68k.h"
diff --git a/gdb/config/m68k/tm-m68k-fp.h b/gdb/config/m68k/tm-m68k-fp.h
new file mode 100644 (file)
index 0000000..4dcebaa
--- /dev/null
@@ -0,0 +1,66 @@
+/* Target machine parameters for embedded m68k with 6888x float, for GDB.
+   Copyright 1986, 1987, 1989, 1992, 1993 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#define HAVE_68881
+
+#include "m68k/tm-m68k.h"
+
+/* Longjmp info comes from the Sun-3 machine description.  Might as well
+   guess... */
+
+/* Offsets (in target ints) into jmp_buf.  Not defined by Sun, but at least
+   documented in a comment in <machine/setjmp.h>! */
+
+#define JB_ELEMENT_SIZE 4
+
+#define JB_ONSSTACK 0
+#define JB_SIGMASK 1
+#define JB_SP 2
+#define JB_PC 3
+#define JB_PSL 4
+#define JB_D2 5
+#define JB_D3 6
+#define JB_D4 7
+#define JB_D5 8
+#define JB_D6 9
+#define JB_D7 10
+#define JB_A2 11
+#define JB_A3 12
+#define JB_A4 13
+#define JB_A5 14
+#define JB_A6 15
+
+/* Figure out where the longjmp will land.  Slurp the args out of the stack.
+   We expect the first arg to be a pointer to the jmp_buf structure from which
+   we extract the pc (JB_PC) that we will land at.  The pc is copied into ADDR.
+   This routine returns true on success */
+
+#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
+
+/* Where is the PC after a call?  */
+
+#ifdef __STDC__
+struct frame_info;
+#endif
+
+extern CORE_ADDR m68k_saved_pc_after_call PARAMS ((struct frame_info *));
+
+#undef SAVED_PC_AFTER_CALL
+#define SAVED_PC_AFTER_CALL(frame) \
+  m68k_saved_pc_after_call(frame)
diff --git a/gdb/config/m68k/tm-m68k-nofp.h b/gdb/config/m68k/tm-m68k-nofp.h
new file mode 100644 (file)
index 0000000..d7e103b
--- /dev/null
@@ -0,0 +1,64 @@
+/* Target machine parameters for embedded m68k, without float, for GDB.
+   Copyright 1986, 1987, 1989, 1992, 1993 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#include "m68k/tm-m68k.h"
+
+/* Longjmp info comes from the Sun-3 machine description.  Might as well
+   guess... */
+
+/* Offsets (in target ints) into jmp_buf.  Not defined by Sun, but at least
+   documented in a comment in <machine/setjmp.h>! */
+
+#define JB_ELEMENT_SIZE 4
+
+#define JB_ONSSTACK 0
+#define JB_SIGMASK 1
+#define JB_SP 2
+#define JB_PC 3
+#define JB_PSL 4
+#define JB_D2 5
+#define JB_D3 6
+#define JB_D4 7
+#define JB_D5 8
+#define JB_D6 9
+#define JB_D7 10
+#define JB_A2 11
+#define JB_A3 12
+#define JB_A4 13
+#define JB_A5 14
+#define JB_A6 15
+
+/* Figure out where the longjmp will land.  Slurp the args out of the stack.
+   We expect the first arg to be a pointer to the jmp_buf structure from which
+   we extract the pc (JB_PC) that we will land at.  The pc is copied into ADDR.
+   This routine returns true on success */
+
+#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
+
+/* Where is the PC after a call?  */
+
+#ifdef __STDC__
+struct frame_info;
+#endif
+
+extern CORE_ADDR m68k_saved_pc_after_call PARAMS ((struct frame_info *));
+
+#undef SAVED_PC_AFTER_CALL
+#define SAVED_PC_AFTER_CALL(frame) \
+  m68k_saved_pc_after_call(frame)
diff --git a/gdb/config/m68k/tm-m68k.h b/gdb/config/m68k/tm-m68k.h
new file mode 100644 (file)
index 0000000..96d71de
--- /dev/null
@@ -0,0 +1,525 @@
+/* Parameters for execution on a 68000 series machine.
+   Copyright 1986, 1987, 1989, 1990, 1992 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+/* Generic 68000 stuff, to be included by other tm-*.h files.
+   Define HAVE_68881 if that is the case.  */
+
+#if defined (HAVE_68881)
+#define IEEE_FLOAT 1
+#endif
+
+/* Define the bit, byte, and word ordering of the machine.  */
+#define TARGET_BYTE_ORDER BIG_ENDIAN
+
+/* 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.  */
+
+#if !defined(SKIP_PROLOGUE)
+#define SKIP_PROLOGUE(ip)   {(ip) = m68k_skip_prologue(ip);}
+extern CORE_ADDR m68k_skip_prologue PARAMS ((CORE_ADDR ip));
+#endif
+
+/* 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) \
+read_memory_integer (read_register (SP_REGNUM), 4)
+
+/* Stack grows downward.  */
+
+#define INNER_THAN <
+
+/* Sequence of bytes for breakpoint instruction.
+   This is a TRAP instruction.  The last 4 bits (0xf below) is the
+   vector.  Systems which don't use 0xf should define BPT_VECTOR
+   themselves before including this file.  */
+
+#if !defined (BPT_VECTOR)
+#define BPT_VECTOR 0xf
+#endif
+
+#if !defined (BREAKPOINT)
+#define BREAKPOINT {0x4e, (0x40 | BPT_VECTOR)}
+#endif
+
+/* If your kernel resets the pc after the trap happens you may need to
+   define this before including this file.  */
+
+#if !defined (DECR_PC_AFTER_BREAK)
+#define DECR_PC_AFTER_BREAK 2
+#endif
+
+/* Nonzero if instruction at PC is a return instruction.  */
+/* Allow any of the return instructions, including a trapv and a return
+   from interupt.  */
+
+#define ABOUT_TO_RETURN(pc) ((read_memory_integer (pc, 2) & ~0x3) == 0x4e74)
+
+/* Return 1 if P points to an invalid floating point value.  */
+
+#define INVALID_FLOAT(p, len) 0   /* Just a first guess; not checked */
+
+/* Say how long registers are.  */
+
+#define REGISTER_TYPE long
+
+#if defined (HAVE_68881)
+#  if defined (GDB_TARGET_IS_SUN3)
+    /* Sun3 status includes fpflags, which shows whether the FPU has been used
+       by the process, and whether the FPU was done with an instruction or 
+       was interrupted in the middle of a long instruction.  See
+       <machine/reg.h>.  */
+    /*                      a&d, pc,sr, fp, fpstat, fpflags   */
+#    define NUM_REGS 31
+#    define REGISTER_BYTES (16*4 + 8 + 8*12 + 3*4 + 4)
+#  else /* Not sun3.  */
+#    define NUM_REGS 29
+#    define REGISTER_BYTES (16*4 + 8 + 8*12 + 3*4)
+#  endif /* Not sun3.  */
+#else /* No 68881.  */
+#  define NUM_REGS 18
+#  define REGISTER_BYTES (16*4 + 8)
+#endif /* No 68881.  */
+
+/* Index within `registers' of the first byte of the space for
+   register N.  */
+
+#if defined (HAVE_68881)
+#define REGISTER_BYTE(N)  \
+ ((N) >= FPC_REGNUM ? (((N) - FPC_REGNUM) * 4) + 168   \
+  : (N) >= FP0_REGNUM ? (((N) - FP0_REGNUM) * 12) + 72 \
+  : (N) * 4)
+
+/* Number of bytes of storage in the actual machine representation
+   for register N.  On the 68000, all regs are 4 bytes
+   except the floating point regs which are 12 bytes.  */
+/* Note that the unsigned cast here forces the result of the
+   subtraction to very high positive values if N < FP0_REGNUM */
+
+#define REGISTER_RAW_SIZE(N) (((unsigned)(N) - FP0_REGNUM) < 8 ? 12 : 4)
+
+/* Number of bytes of storage in the program's representation
+   for register N.  On the 68000, all regs are 4 bytes
+   except the floating point regs which are 8-byte doubles.  */
+
+#define REGISTER_VIRTUAL_SIZE(N) (((unsigned)(N) - FP0_REGNUM) < 8 ? 8 : 4)
+
+/* Largest value REGISTER_RAW_SIZE can have.  */
+
+#define MAX_REGISTER_RAW_SIZE 12
+
+/* Largest value REGISTER_VIRTUAL_SIZE can have.  */
+
+#define MAX_REGISTER_VIRTUAL_SIZE 8
+
+/* Nonzero if register N requires conversion
+   from raw format to virtual format.  */
+
+#define REGISTER_CONVERTIBLE(N) (((unsigned)(N) - FP0_REGNUM) < 8)
+
+/* Put the declaration out here because if it's in the macros, PCC
+   will complain.  */
+extern const struct ext_format ext_format_68881;
+
+/* Convert data from raw format for register REGNUM
+   to virtual format for register REGNUM.  */
+
+#define REGISTER_CONVERT_TO_VIRTUAL(REGNUM,FROM,TO)    \
+{ \
+  if ((REGNUM) >= FP0_REGNUM && (REGNUM) < FPC_REGNUM) \
+    ieee_extended_to_double (&ext_format_68881, (FROM), (double *)(TO)); \
+  else                                 \
+    memcpy ((TO), (FROM), 4);  \
+}
+
+/* Convert data from virtual format for register REGNUM
+   to raw format for register REGNUM.  */
+
+#define REGISTER_CONVERT_TO_RAW(REGNUM,FROM,TO)        \
+{ \
+  if ((REGNUM) >= FP0_REGNUM && (REGNUM) < FPC_REGNUM) \
+    double_to_ieee_extended (&ext_format_68881, (double *)(FROM), (TO)); \
+  else                                 \
+    memcpy ((TO), (FROM), 4);  \
+}
+
+/* Return the GDB type object for the "standard" data type
+   of data in register N.  */
+/* Note, for registers which contain addresses return
+   pointer to void, not pointer to char, because we don't
+   want to attempt to print the string after printing the address.  */
+#define REGISTER_VIRTUAL_TYPE(N) \
+ (((unsigned)(N) - FP0_REGNUM) < 8 ? builtin_type_double :           \
+  (N) == PC_REGNUM || (N) == FP_REGNUM || (N) == SP_REGNUM ?         \
+  lookup_pointer_type (builtin_type_void) : builtin_type_int)
+
+#else /* no 68881.  */
+/* Index within `registers' of the first byte of the space for
+   register N.  */
+
+#define REGISTER_BYTE(N)  ((N) * 4)
+
+/* Number of bytes of storage in the actual machine representation
+   for register N.  On the 68000, all regs are 4 bytes.  */
+
+#define REGISTER_RAW_SIZE(N) 4
+
+/* Number of bytes of storage in the program's representation
+   for register N.  On the 68000, all regs are 4 bytes.  */
+
+#define REGISTER_VIRTUAL_SIZE(N) 4
+
+/* Largest value REGISTER_RAW_SIZE can have.  */
+
+#define MAX_REGISTER_RAW_SIZE 4
+
+/* Largest value REGISTER_VIRTUAL_SIZE can have.  */
+
+#define MAX_REGISTER_VIRTUAL_SIZE 4
+
+/* 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)  memcpy ((TO), (FROM), 4);
+
+/* Convert data from virtual format for register REGNUM
+   to raw format for register REGNUM.  */
+
+#define REGISTER_CONVERT_TO_RAW(REGNUM,FROM,TO)  memcpy ((TO), (FROM), 4);
+
+/* Return the GDB type object for the "standard" data type
+   of data in register N.  */
+
+#define REGISTER_VIRTUAL_TYPE(N)  builtin_type_int
+
+#endif /* No 68881.  */
+
+/* Initializer for an array of names of registers.
+   Entries beyond the first NUM_REGS are ignored.  */
+
+#define REGISTER_NAMES  \
+ {"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", \
+  "a0", "a1", "a2", "a3", "a4", "a5", "fp", "sp", \
+  "ps", "pc",  \
+  "fp0", "fp1", "fp2", "fp3", "fp4", "fp5", "fp6", "fp7", \
+  "fpcontrol", "fpstatus", "fpiaddr", "fpcode", "fpflags" }
+
+/* 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 A1_REGNUM 9
+#define FP_REGNUM 14           /* Contains address of executing stack frame */
+#define SP_REGNUM 15           /* Contains address of top of stack */
+#define PS_REGNUM 16           /* Contains processor status */
+#define PC_REGNUM 17           /* Contains program counter */
+#if defined (HAVE_68881)
+#define FP0_REGNUM 18          /* Floating point register 0 */
+#define FPC_REGNUM 26          /* 68881 control register */
+#define FPS_REGNUM 27          /* 68881 status register */
+#define FPI_REGNUM 28          /* 68881 iaddr register */
+#endif /* 68881.  */
+
+/* Store the address of the place in which to copy the structure the
+   subroutine will return.  This is called from call_function. */
+
+#define STORE_STRUCT_RETURN(ADDR, SP) \
+  { write_register (A1_REGNUM, (ADDR)); }
+
+/* Extract from an array REGBUF containing the (raw) register state
+   a function return value of type TYPE, and copy that, in virtual format,
+   into VALBUF.  This is assuming that floating point values are returned
+   as doubles in d0/d1.  */
+
+#if !defined (EXTRACT_RETURN_VALUE)
+#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
+  memcpy ((VALBUF),                                                    \
+         (char *)(REGBUF) +                                            \
+                (TYPE_LENGTH(TYPE) >= 4 ? 0 : 4 - TYPE_LENGTH(TYPE)),  \
+         TYPE_LENGTH(TYPE))
+#endif
+
+/* Write into appropriate registers a function return value
+   of type TYPE, given in virtual format.  Assumes floats are passed
+   in d0/d1.  */
+
+#if !defined (STORE_RETURN_VALUE)
+#define STORE_RETURN_VALUE(TYPE,VALBUF) \
+  write_register_bytes (0, VALBUF, TYPE_LENGTH (TYPE))
+#endif
+
+/* Extract from an array REGBUF containing the (raw) register state
+   the address in which a function should return its structure value,
+   as a CORE_ADDR (or an expression that can be used as one).  */
+
+#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) (*(CORE_ADDR *)(REGBUF))
+\f
+/* 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.
+   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.  */
+
+#define FRAME_CHAIN(thisframe)  \
+  (!inside_entry_file ((thisframe)->pc) ? \
+   read_memory_integer ((thisframe)->frame, 4) :\
+   0)
+
+/* Define other aspects of the stack frame.  */
+
+/* A macro that tells us whether the function invocation represented
+   by FI does not have a frame on the stack associated with it.  If it
+   does not, FRAMELESS is set to 1, else 0.  */
+#define FRAMELESS_FUNCTION_INVOCATION(FI, FRAMELESS) \
+  (FRAMELESS) = frameless_look_for_prologue(FI)
+
+#define FRAME_SAVED_PC(FRAME) (read_memory_integer ((FRAME)->frame + 4, 4))
+
+#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame)
+
+#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame)
+
+/* Set VAL to the number of args passed to frame described by FI.
+   Can set VAL to -1, meaning no way to tell.  */
+
+/* We can't tell how many args there are
+   now that the C compiler delays popping them.  */
+#if !defined (FRAME_NUM_ARGS)
+#define FRAME_NUM_ARGS(val,fi) (val = -1)
+#endif
+
+/* Return number of bytes at start of arglist that are not really args.  */
+
+#define FRAME_ARGS_SKIP 8
+
+/* 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.  */
+
+#if !defined (FRAME_FIND_SAVED_REGS)
+#if defined (HAVE_68881)
+#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs)            \
+{ register int regnum;                                                 \
+  register int regmask;                                                        \
+  register CORE_ADDR next_addr;                                                \
+  register CORE_ADDR pc;                                               \
+  int nextinsn;                                                                \
+  bzero (&frame_saved_regs, sizeof frame_saved_regs);                  \
+  if ((frame_info)->pc >= (frame_info)->frame - CALL_DUMMY_LENGTH - FP_REGNUM*4 - 8*12 - 4 \
+      && (frame_info)->pc <= (frame_info)->frame)                              \
+    { next_addr = (frame_info)->frame;                                 \
+      pc = (frame_info)->frame - CALL_DUMMY_LENGTH - FP_REGNUM * 4 - 8*12 - 4; }\
+  else                                                                 \
+    { pc = get_pc_function_start ((frame_info)->pc);                   \
+      /* Verify we have a link a6 instruction next;                    \
+        if not we lose.  If we win, find the address above the saved   \
+        regs using the amount of storage from the link instruction.  */\
+      if (044016 == read_memory_integer (pc, 2))                       \
+       next_addr = (frame_info)->frame + read_memory_integer (pc += 2, 4), pc+=4; \
+      else if (047126 == read_memory_integer (pc, 2))                  \
+       next_addr = (frame_info)->frame + read_memory_integer (pc += 2, 2), pc+=2; \
+      else goto lose;                                                  \
+      /* If have an addal #-n, sp next, adjust next_addr.  */          \
+      if ((0177777 & read_memory_integer (pc, 2)) == 0157774)          \
+       next_addr += read_memory_integer (pc += 2, 4), pc += 4;         \
+    }                                                                  \
+  /* next should be a moveml to (sp) or -(sp) or a movl r,-(sp) */     \
+  regmask = read_memory_integer (pc + 2, 2);                           \
+  /* But before that can come an fmovem.  Check for it.  */            \
+  nextinsn = 0xffff & read_memory_integer (pc, 2);                     \
+  if (0xf227 == nextinsn                                               \
+      && (regmask & 0xff00) == 0xe000)                                 \
+    { pc += 4; /* Regmask's low bit is for register fp7, the first pushed */ \
+      for (regnum = FP0_REGNUM + 7; regnum >= FP0_REGNUM; regnum--, regmask >>= 1)             \
+       if (regmask & 1)                                                \
+          (frame_saved_regs).regs[regnum] = (next_addr -= 12);         \
+      regmask = read_memory_integer (pc + 2, 2); }                     \
+  if (0044327 == read_memory_integer (pc, 2))                          \
+    { pc += 4; /* Regmask's low bit is for register 0, the first written */ \
+      for (regnum = 0; regnum < 16; regnum++, regmask >>= 1)           \
+       if (regmask & 1)                                                \
+          (frame_saved_regs).regs[regnum] = (next_addr += 4) - 4; }    \
+  else if (0044347 == read_memory_integer (pc, 2))                     \
+    { pc += 4; /* Regmask's low bit is for register 15, the first pushed */ \
+      for (regnum = 15; regnum >= 0; regnum--, regmask >>= 1)          \
+       if (regmask & 1)                                                \
+          (frame_saved_regs).regs[regnum] = (next_addr -= 4); }                \
+  else if (0x2f00 == (0xfff0 & read_memory_integer (pc, 2)))           \
+    { regnum = 0xf & read_memory_integer (pc, 2); pc += 2;             \
+      (frame_saved_regs).regs[regnum] = (next_addr -= 4); }            \
+  /* fmovemx to index of sp may follow.  */                            \
+  regmask = read_memory_integer (pc + 2, 2);                           \
+  nextinsn = 0xffff & read_memory_integer (pc, 2);                     \
+  if (0xf236 == nextinsn                                               \
+      && (regmask & 0xff00) == 0xf000)                                 \
+    { pc += 10; /* Regmask's low bit is for register fp0, the first written */ \
+      for (regnum = FP0_REGNUM + 7; regnum >= FP0_REGNUM; regnum--, regmask >>= 1)             \
+       if (regmask & 1)                                                \
+          (frame_saved_regs).regs[regnum] = (next_addr += 12) - 12;    \
+      regmask = read_memory_integer (pc + 2, 2); }                     \
+  /* clrw -(sp); movw ccr,-(sp) may follow.  */                                \
+  if (0x426742e7 == read_memory_integer (pc, 4))                       \
+    (frame_saved_regs).regs[PS_REGNUM] = (next_addr -= 4);             \
+  lose: ;                                                              \
+  (frame_saved_regs).regs[SP_REGNUM] = (frame_info)->frame + 8;                \
+  (frame_saved_regs).regs[FP_REGNUM] = (frame_info)->frame;            \
+  (frame_saved_regs).regs[PC_REGNUM] = (frame_info)->frame + 4;                \
+}
+#else /* no 68881.  */
+#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs)            \
+{ register int regnum;                                                 \
+  register int regmask;                                                        \
+  register CORE_ADDR next_addr;                                                \
+  register CORE_ADDR pc;                                               \
+  bzero (&frame_saved_regs, sizeof frame_saved_regs);                  \
+  if ((frame_info)->pc >= (frame_info)->frame - CALL_DUMMY_LENGTH - FP_REGNUM*4 - 4 \
+      && (frame_info)->pc <= (frame_info)->frame)                              \
+    { next_addr = (frame_info)->frame;                                 \
+      pc = (frame_info)->frame - CALL_DUMMY_LENGTH - FP_REGNUM * 4 - 4; }\
+  else                                                                 \
+    { pc = get_pc_function_start ((frame_info)->pc);                   \
+      /* Verify we have a link a6 instruction next;                    \
+        if not we lose.  If we win, find the address above the saved   \
+        regs using the amount of storage from the link instruction.  */\
+      if (044016 == read_memory_integer (pc, 2))                       \
+       next_addr = (frame_info)->frame + read_memory_integer (pc += 2, 4), pc+=4; \
+      else if (047126 == read_memory_integer (pc, 2))                  \
+       next_addr = (frame_info)->frame + read_memory_integer (pc += 2, 2), pc+=2; \
+      else goto lose;                                                  \
+      /* If have an addal #-n, sp next, adjust next_addr.  */          \
+      if ((0177777 & read_memory_integer (pc, 2)) == 0157774)          \
+       next_addr += read_memory_integer (pc += 2, 4), pc += 4;         \
+    }                                                                  \
+  /* next should be a moveml to (sp) or -(sp) or a movl r,-(sp) */     \
+  regmask = read_memory_integer (pc + 2, 2);                           \
+  if (0044327 == read_memory_integer (pc, 2))                          \
+    { pc += 4; /* Regmask's low bit is for register 0, the first written */ \
+      for (regnum = 0; regnum < 16; regnum++, regmask >>= 1)           \
+       if (regmask & 1)                                                \
+          (frame_saved_regs).regs[regnum] = (next_addr += 4) - 4; }    \
+  else if (0044347 == read_memory_integer (pc, 2))                     \
+    { pc += 4; /* Regmask's low bit is for register 15, the first pushed */ \
+      for (regnum = 15; regnum >= 0; regnum--, regmask >>= 1)          \
+       if (regmask & 1)                                                \
+          (frame_saved_regs).regs[regnum] = (next_addr -= 4); }                \
+  else if (0x2f00 == (0xfff0 & read_memory_integer (pc, 2)))           \
+    { regnum = 0xf & read_memory_integer (pc, 2); pc += 2;             \
+      (frame_saved_regs).regs[regnum] = (next_addr -= 4); }            \
+  /* clrw -(sp); movw ccr,-(sp) may follow.  */                                \
+  if (0x426742e7 == read_memory_integer (pc, 4))                       \
+    (frame_saved_regs).regs[PS_REGNUM] = (next_addr -= 4);             \
+  lose: ;                                                              \
+  (frame_saved_regs).regs[SP_REGNUM] = (frame_info)->frame + 8;                \
+  (frame_saved_regs).regs[FP_REGNUM] = (frame_info)->frame;            \
+  (frame_saved_regs).regs[PC_REGNUM] = (frame_info)->frame + 4;                \
+}
+#endif /* no 68881.  */
+#endif /* no FIND_FRAME_SAVED_REGS.  */
+
+\f
+/* Things needed for making the inferior call functions.
+   It seems like every m68k based machine has almost identical definitions
+   in the individual machine's configuration files.  Most other cpu types
+   (mips, i386, etc) have routines in their *-tdep.c files to handle this
+   for most configurations.  The m68k family should be able to do this as
+   well.  These macros can still be overridden when necessary.  */
+
+/* The CALL_DUMMY macro is the sequence of instructions, as disassembled
+   by gdb itself:
+
+       fmovemx fp0-fp7,sp@-                    0xf227 0xe0ff
+       moveml d0-a5,sp@-                       0x48e7 0xfffc
+       clrw sp@-                               0x4267
+       movew ccr,sp@-                          0x42e7
+
+       /..* The arguments are pushed at this point by GDB;
+       no code is needed in the dummy for this.
+       The CALL_DUMMY_START_OFFSET gives the position of 
+       the following jsr instruction.  *../
+
+       jsr @#0x32323232                        0x4eb9 0x3232 0x3232
+       addal #0x69696969,sp                    0xdffc 0x6969 0x6969
+       trap #<your BPT_VECTOR number here>     0x4e4?
+       nop                                     0x4e71
+
+   Note this is CALL_DUMMY_LENGTH bytes (28 for the above example).
+   We actually start executing at the jsr, since the pushing of the
+   registers is done by PUSH_DUMMY_FRAME.  If this were real code,
+   the arguments for the function called by the jsr would be pushed
+   between the moveml and the jsr, and we could allow it to execute through.
+   But the arguments have to be pushed by GDB after the PUSH_DUMMY_FRAME is
+   done, and we cannot allow the moveml to push the registers again lest
+   they be taken for the arguments.  */
+
+#if defined (HAVE_68881)
+
+#define CALL_DUMMY {0xf227e0ff, 0x48e7fffc, 0x426742e7, 0x4eb93232, 0x3232dffc, 0x69696969, (0x4e404e71 | (BPT_VECTOR << 16))}
+#define CALL_DUMMY_LENGTH 28           /* Size of CALL_DUMMY */
+#define CALL_DUMMY_START_OFFSET 12     /* Offset to jsr instruction*/
+
+#else
+
+#define CALL_DUMMY {0x48e7fffc, 0x426742e7, 0x4eb93232, 0x3232dffc, 0x69696969, (0x4e404e71 | (BPT_VECTOR << 16))}
+#define CALL_DUMMY_LENGTH 24           /* Size of CALL_DUMMY */
+#define CALL_DUMMY_START_OFFSET 8      /* Offset to jsr instruction*/
+
+#endif /* HAVE_68881 */
+
+/* Insert the specified number of args and function address
+   into a call sequence of the above form stored at DUMMYNAME.
+   We use the BFD routines to store a big-endian value of known size.  */
+
+#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p)     \
+{ _do_putb32 (fun,     (char *) dummyname + CALL_DUMMY_START_OFFSET + 2);  \
+  _do_putb32 (nargs*4, (char *) dummyname + CALL_DUMMY_START_OFFSET + 8); }
+
+/* Push an empty stack frame, to record the current PC, etc.  */
+
+#define PUSH_DUMMY_FRAME       { m68k_push_dummy_frame (); }
+
+extern void m68k_push_dummy_frame PARAMS ((void));
+
+extern void m68k_pop_frame PARAMS ((void));
+
+/* Discard from the stack the innermost frame, restoring all registers.  */
+
+#define POP_FRAME              { m68k_pop_frame (); }
+
+/* Offset from SP to first arg on stack at first instruction of a function */
+
+#define SP_ARG0 (1 * 4)
index 7f784f8055fc84f1e06238bcb73652fd23929f91..4bcaf4fdcd6de7f03b9739f36cab174f8247df2e 100644 (file)
@@ -82,4 +82,4 @@ Here is an m-news.h file for gdb.  It supports the 68881 registers.
     val = read_memory_integer (pc + 2, 4);                     \
   val >>= 2; }
 
     val = read_memory_integer (pc + 2, 4);                     \
   val >>= 2; }
 
-#include "m68k/tm-68k.h"
+#include "m68k/tm-m68k.h"
index 64467bec731c8c4e091ab991f349a27e4a6104ee..6a238303853f0adddfac32c3c06fbdd247273a29 100644 (file)
@@ -19,4 +19,4 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #define HAVE_68881             /* GDB won't compile without this */
 
 
 #define HAVE_68881             /* GDB won't compile without this */
 
-#include "m68k/tm-68k.h"
+#include "m68k/tm-m68k.h"
index 1d2f85d230a0409c99d618702bfd107643e9d4bb..864de59e4e14cc3dae4ba5186ae4db52aae77d16 100644 (file)
@@ -24,4 +24,4 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include <machine/vmparam.h>
 #define STACK_END_ADDR USRSTACK
 
 #include <machine/vmparam.h>
 #define STACK_END_ADDR USRSTACK
 
-#include "m68k/tm-68k.h"
+#include "m68k/tm-m68k.h"
index 1a698f369ff6bb326b1847c6857fa1e26fccf846..cae185b2d2d1a1f606254a9718a2d0e23b349d38 100644 (file)
@@ -24,7 +24,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #define GDB_TARGET_IS_SUN3 1
 
 
 #define GDB_TARGET_IS_SUN3 1
 
-#include "m68k/tm-68k.h"
+#include "m68k/tm-m68k.h"
 
 /* Offsets (in target ints) into jmp_buf.  Not defined by Sun, but at least
    documented in a comment in <machine/setjmp.h>! */
 
 /* Offsets (in target ints) into jmp_buf.  Not defined by Sun, but at least
    documented in a comment in <machine/setjmp.h>! */
index 8ce67a166d21851d765302a0d577c3710bffd105..07b8027d800e07578985cb8cc259717c96c81f58 100644 (file)
@@ -1,4 +1,4 @@
-/* Target machine description for VxWorks 68k's, for GDB, the GNU debugger.
+/* Target machine description for VxWorks m68k's, for GDB, the GNU debugger.
    Copyright 1986, 1987, 1989, 1991, 1992, 1993 Free Software Foundation, Inc.
    Contributed by Cygnus Support.
 
    Copyright 1986, 1987, 1989, 1991, 1992, 1993 Free Software Foundation, Inc.
    Contributed by Cygnus Support.
 
@@ -27,7 +27,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* We have more complex, useful breakpoints on the target.  */
 #define        DECR_PC_AFTER_BREAK     0
 
 /* We have more complex, useful breakpoints on the target.  */
 #define        DECR_PC_AFTER_BREAK     0
 
-#include "m68k/tm-68k.h"
+#include "m68k/tm-m68k.h"
 
 /* We are guaranteed to have a zero frame pointer at bottom of stack, too. */
 #undef FRAME_CHAIN
 
 /* We are guaranteed to have a zero frame pointer at bottom of stack, too. */
 #undef FRAME_CHAIN
index 9d1d39c0dd5a07accb7c060d883a467461e02d1c..829e83cfb135567f86e401107568c676ffa196f6 100644 (file)
@@ -1,4 +1,4 @@
-/* Macro defintions for an Apollo 68k in BSD mode
+/* Macro definitions for an Apollo m68k in BSD mode
    Copyright (C) 1992 Free Software Foundation, Inc.
 
 This file is part of GDB.
    Copyright (C) 1992 Free Software Foundation, Inc.
 
 This file is part of GDB.
index 13d5bfe5f8aef956408bc8af1b022f3bb8fa2a17..01bbd926ccf1fa6f59cab0192dd7f72e3ae4700e 100644 (file)
@@ -20,7 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "defs.h"
 #include "dis-asm.h"
 
 #include "defs.h"
 #include "dis-asm.h"
 
-/* 68k instructions are never longer than this many bytes.  */
+/* m68k instructions are never longer than this many bytes.  */
 #define MAXLEN 22
 \f
 /* Print the m68k instruction at address MEMADDR in debugged memory,
 #define MAXLEN 22
 \f
 /* Print the m68k instruction at address MEMADDR in debugged memory,
index 91d2e87f6e0c770fd3bbb05e443584fcc29968f2..9fc3e412401f2b6a5dfac8ec0fbf7518b7315b4b 100644 (file)
@@ -386,7 +386,7 @@ vx_read_register (regno)
   ptrace_in.pid = inferior_pid;
   ptrace_out.info.more_data = (caddr_t) &out_data;
 #ifndef I80960
   ptrace_in.pid = inferior_pid;
   ptrace_out.info.more_data = (caddr_t) &out_data;
 #ifndef I80960
-  out_data.len   = 18 * REGISTER_RAW_SIZE (0);         /* FIXME 68k hack */
+  out_data.len   = 18 * REGISTER_RAW_SIZE (0);         /* FIXME m68k hack */
 #else
   out_data.len = (16 + 16 + 3) * REGISTER_RAW_SIZE (0);
 #endif
 #else
   out_data.len = (16 + 16 + 3) * REGISTER_RAW_SIZE (0);
 #endif
@@ -506,7 +506,7 @@ vx_write_register (regno)
 
   in_data.len = (16 + 16 + 3) * sizeof (REGISTER_TYPE);
 
 
   in_data.len = (16 + 16 + 3) * sizeof (REGISTER_TYPE);
 
-#else  /* not 960 -- assume 68k -- FIXME */
+#else  /* not 960 -- assume m68k -- FIXME */
 
   in_data.len = 18 * sizeof (REGISTER_TYPE);
 
 
   in_data.len = 18 * sizeof (REGISTER_TYPE);
 
@@ -536,7 +536,7 @@ vx_write_register (regno)
       in_data.bytes = &registers[REGISTER_BYTE (FP0_REGNUM)];
       in_data.len = 4 * REGISTER_RAW_SIZE (FP0_REGNUM);
 #endif
       in_data.bytes = &registers[REGISTER_BYTE (FP0_REGNUM)];
       in_data.len = 4 * REGISTER_RAW_SIZE (FP0_REGNUM);
 #endif
-#else  /* not 960 -- assume 68k -- FIXME */
+#else  /* not 960 -- assume m68k -- FIXME */
 
       in_data.bytes = &registers[REGISTER_BYTE (FP0_REGNUM)];
       in_data.len = (8 * REGISTER_RAW_SIZE (FP0_REGNUM)
 
       in_data.bytes = &registers[REGISTER_BYTE (FP0_REGNUM)];
       in_data.len = (8 * REGISTER_RAW_SIZE (FP0_REGNUM)