More gcc lint:
[deliverable/binutils-gdb.git] / gdb / config / m68k / tm-m68k.h
index 29e45ca8afb7b6577aea2bc5ccf8448bca50db30..db7b6a4f62a04e04d3347968a7b532b41d4ec680 100644 (file)
@@ -17,12 +17,9 @@ 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.  */
+/* Generic 68000 stuff, to be included by other tm-*.h files.  */
 
-#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
@@ -91,28 +88,33 @@ read_memory_integer (read_register (SP_REGNUM), 4)
 
 #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.  */
+#define REGISTER_BYTES_SUN3 (16*4 + 8 + 8*12 + 3*4 + 4)
+#define REGISTER_BYTES_FP (16*4 + 8 + 8*12 + 3*4)
+#define REGISTER_BYTES_NOFP (16*4 + 8)
+
+#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)
+#  define REGISTER_BYTES_OK(b) \
+     ((b) == REGISTER_BYTES_SUN3 \
+      || (b) == REGISTER_BYTES_FP \
+      || (b) == REGISTER_BYTES_NOFP)
+#else /* Not sun3.  */
+#  define NUM_REGS 29
+#  define REGISTER_BYTES_OK(b) \
+     ((b) == REGISTER_BYTES_FP \
+      || (b) == REGISTER_BYTES_NOFP)
+#  define REGISTER_BYTES (16*4 + 8 + 8*12 + 3*4)
+#endif /* Not sun3.  */
 
 /* 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 \
@@ -181,52 +183,6 @@ extern const struct ext_format ext_format_68881;
   (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.  */
 
@@ -249,12 +205,10 @@ extern const struct ext_format ext_format_68881;
 #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. */
@@ -373,15 +327,18 @@ extern const struct ext_format ext_format_68881;
 /* The CALL_DUMMY macro is the sequence of instructions, as disassembled
    by gdb itself:
 
+   These instructions exist only so that m68k_find_saved_regs can parse
+   them as a "prologue"; they are never executed.
+
        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.  *../
+   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.  That is where we start
+   executing.
 
        jsr @#0x32323232                        0x4eb9 0x3232 0x3232
        addal #0x69696969,sp                    0xdffc 0x6969 0x6969
@@ -389,28 +346,20 @@ extern const struct ext_format ext_format_68881;
        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)
+   The dummy frame always saves the floating-point registers, whether they
+   actually exist on this target or not.  */
+
+/* FIXME: Wrong to hardwire this as BPT_VECTOR when sometimes it
+   should be REMOTE_BPT_VECTOR.  We should be using
+   target_insert_breakpoint (but then I think we need
+   target_remove_breakpoint somewhere--easiest way to make this happen
+   is to make this breakpoint a real breakpoint.c type breakpoint).  */
 
 #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.  */
This page took 0.024689 seconds and 4 git commands to generate.