Commit 4326c605 by Richard Kenner

(PRINT_OPERAND): Turned off: use default.

(ASM_OUTPUT_{FLOAT,DOUBLE}_OPERAND): Defined.
(SGS_NO_LI,STRUCTURE_SIZE_BOUNDARY,IMMEDIATE_PREFIX): Defined.
(NEED_PROBE): Defined instead of HAVE_probe and gen_probe.
(FUNCTION_{PRO,EPI}LOGUE): Do not access FPA registers.

From-SVN: r13647
parent cbd91734
/* Definitions of target machine for GNU compiler; /* Definitions of target machine for GNU compiler;
Charles River Data Systems UNiverse/32. Charles River Data Systems UNiverse/32.
Copyright (C) 1987, 1993, 1994, 1996 Free Software Foundation, Inc. Copyright (C) 1987, 1993, 1994, 1996, 1997 Free Software Foundation, Inc.
Contributed by Gary E. Miller (Gary_Edmunds_Miller@cup.portal.com) Contributed by Gary E. Miller (Gary_Edmunds_Miller@cup.portal.com)
This file is part of GNU CC. This file is part of GNU CC.
...@@ -23,6 +23,7 @@ Boston, MA 02111-1307, USA. */ ...@@ -23,6 +23,7 @@ Boston, MA 02111-1307, USA. */
#define MOTOROLA /* Use Motorola syntax rather than "MIT" */ #define MOTOROLA /* Use Motorola syntax rather than "MIT" */
#define SGS /* Uses SGS assembler */ #define SGS /* Uses SGS assembler */
#define SGS_SWITCH_TABLES /* Different switch table handling */ #define SGS_SWITCH_TABLES /* Different switch table handling */
#define SGS_NO_LI /* Suppress jump table label usage */
#define CRDS /* Charles River Data Systems assembler */ #define CRDS /* Charles River Data Systems assembler */
#include "m68k/m68k.h" #include "m68k/m68k.h"
...@@ -31,7 +32,8 @@ Boston, MA 02111-1307, USA. */ ...@@ -31,7 +32,8 @@ Boston, MA 02111-1307, USA. */
aligned such that we can correctly extract bitfields from them. aligned such that we can correctly extract bitfields from them.
Someone should check whether the usual compiler on the crds machine Someone should check whether the usual compiler on the crds machine
provides the equivalent behavior of STRUCTURE_SIZE_BOUNDARY. */ provides the equivalent behavior of STRUCTURE_SIZE_BOUNDARY. */
#error This does not define STRUCTURE_SIZE_BOUNDARY /* Set to 16 because all other m68k targets have it so */
#define STRUCTURE_SIZE_BOUNDARY 16
/* See m68k.h. 0 means 680[01]0 with no 68881. */ /* See m68k.h. 0 means 680[01]0 with no 68881. */
...@@ -75,8 +77,13 @@ Boston, MA 02111-1307, USA. */ ...@@ -75,8 +77,13 @@ Boston, MA 02111-1307, USA. */
/* UNOS need stack probe :-( */ /* UNOS need stack probe :-( */
#if 0
#define HAVE_probe 1 #define HAVE_probe 1
#define gen_probe() gen_rtx(ASM_INPUT, VOIDmode, "tstb -2048(sp)\t;probe\n") #define gen_probe() gen_rtx(ASM_INPUT, VOIDmode, "tstb -2048(sp)\t;probe\n")
#else
#undef NEED_PROBE
#define NEED_PROBE (-2048)
#endif
/* use memcpy, memset instead of bcopy, etc. */ /* use memcpy, memset instead of bcopy, etc. */
...@@ -146,6 +153,11 @@ Boston, MA 02111-1307, USA. */ ...@@ -146,6 +153,11 @@ Boston, MA 02111-1307, USA. */
#undef ASM_APP_OFF #undef ASM_APP_OFF
#define ASM_APP_OFF ";#NO_APP\n" #define ASM_APP_OFF ";#NO_APP\n"
/* The prefix for immediate operands. */
#undef IMMEDIATE_PREFIX
#define IMMEDIATE_PREFIX "$"
/* This is how to output an assembler line defining a `double' constant. */ /* This is how to output an assembler line defining a `double' constant. */
#undef ASM_OUTPUT_DOUBLE #undef ASM_OUTPUT_DOUBLE
...@@ -223,6 +235,7 @@ do { int i; \ ...@@ -223,6 +235,7 @@ do { int i; \
} }
#if 0
/* Print operand X (an rtx) in assembler syntax to file FILE. /* Print operand X (an rtx) in assembler syntax to file FILE.
CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified. CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified.
For `%' followed by punctuation, CODE is the punctuation and X is null. For `%' followed by punctuation, CODE is the punctuation and X is null.
...@@ -300,6 +313,7 @@ do { int i; \ ...@@ -300,6 +313,7 @@ do { int i; \
REAL_VALUE_FROM_CONST_DOUBLE (r, X); \ REAL_VALUE_FROM_CONST_DOUBLE (r, X); \
ASM_OUTPUT_LONG_DOUBLE_OPERAND (FILE, r); } \ ASM_OUTPUT_LONG_DOUBLE_OPERAND (FILE, r); } \
else { putc ('$', FILE); output_addr_const (FILE, X); }} else { putc ('$', FILE); output_addr_const (FILE, X); }}
#endif
/* Note that this contains a kludge that knows that the only reason /* Note that this contains a kludge that knows that the only reason
we have an address (plus (label_ref...) (reg...)) we have an address (plus (label_ref...) (reg...))
...@@ -490,10 +504,6 @@ do { int i; \ ...@@ -490,10 +504,6 @@ do { int i; \
fprintf (FILE, "\tadd.l #%d,sp\n", - (fsize + 4)); \ fprintf (FILE, "\tadd.l #%d,sp\n", - (fsize + 4)); \
} \ } \
} \ } \
for (regno = 24; regno < 56; regno++) \
if (regs_ever_live[regno] && ! call_used_regs[regno]) \
fprintf(FILE, "\tfpmoved %s, sp@-\n", \
reg_names[regno]); \
for (regno = 16; regno < 24; regno++) \ for (regno = 16; regno < 24; regno++) \
if (regs_ever_live[regno] && ! call_used_regs[regno]) \ if (regs_ever_live[regno] && ! call_used_regs[regno]) \
mask |= 1 << (regno - 16); \ mask |= 1 << (regno - 16); \
...@@ -535,11 +545,6 @@ do { int i; \ ...@@ -535,11 +545,6 @@ do { int i; \
int fsize = ((SIZE) + 3) & -4; \ int fsize = ((SIZE) + 3) & -4; \
int big = 0; \ int big = 0; \
nregs = 0; fmask = 0; fpoffset = 0; \ nregs = 0; fmask = 0; fpoffset = 0; \
for (regno = 24 ; regno < 56 ; regno++) \
if (regs_ever_live[regno] && ! call_used_regs[regno]) \
nregs++; \
fpoffset = nregs*8; \
nregs = 0; \
for (regno = 16; regno < 24; regno++) \ for (regno = 16; regno < 24; regno++) \
if (regs_ever_live[regno] && ! call_used_regs[regno]) \ if (regs_ever_live[regno] && ! call_used_regs[regno]) \
{ nregs++; fmask |= 1 << (23 - regno); } \ { nregs++; fmask |= 1 << (23 - regno); } \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment