--- /dev/null
+/* Definitions of target machine for GNU compiler. AT&T we32000 version.
+ Copyright (C) 2000
+ Free Software Foundation, Inc.
+ Contributed by John Wehle (john@feith1.uucp)
+
+This file is part of GNU CC.
+
+GNU CC 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 1, or (at your option)
+any later version.
+
+GNU CC 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 GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#ifdef RTX_CODE
+extern void output_move_double PARAMS ((rtx *));
+extern void output_push_double PARAMS ((rtx *));
+#endif /* RTX_CODE */
/* Subroutines for insn-output.c for AT&T we32000 Family.
- Copyright (C) 1991, 1992, 1997, 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1991, 92, 97-99, 2000 Free Software Foundation, Inc.
Contributed by John Wehle (john@feith1.uucp)
This file is part of GNU CC.
#include "config.h"
#include "system.h"
+#include "insn-config.h"
#include "rtl.h"
#include "function.h"
#include "real.h"
+#include "recog.h"
+#include "output.h"
+#include "tm_p.h"
void
output_move_double (operands)
lsw_operands[0] = adj_offsettable_operand (operands[0], 4);
else if (GET_CODE (operands[0]) == CONST_DOUBLE)
{
- lsw_operands[0] = GEN_INT CONST_DOUBLE_HIGH (operands[0]));
+ lsw_operands[0] = GEN_INT (CONST_DOUBLE_HIGH (operands[0]));
operands[0] = GEN_INT (CONST_DOUBLE_LOW (operands[0]));
}
else if (GET_CODE (operands[0]) == CONST_INT)
/* Definitions of target machine for GNU compiler. AT&T we32000 version.
- Copyright (C) 1991, 92, 93, 94, 95, 96, 98, 1999
+ Copyright (C) 1991, 92, 93, 94, 95, 96, 98, 99, 2000
Free Software Foundation, Inc.
Contributed by John Wehle (john@feith1.uucp)
An empty string NAME is used to identify the default VALUE. */
#define TARGET_SWITCHES \
- { { "", TARGET_DEFAULT}}
+ { { "", TARGET_DEFAULT, 0}}
#define TARGET_DEFAULT 0
#define REG_CLASS_CONTENTS \
{ \
- 0, /* NO_REGS */ \
- 0x000017ff, /* GENERAL_REGS */ \
- 0x0000ffff, /* ALL_REGS */ \
+ {0}, /* NO_REGS */ \
+ {0x000017ff}, /* GENERAL_REGS */ \
+ {0x0000ffff}, /* ALL_REGS */ \
}
/* The same information, inverted:
/* AT&T's assembler can't handle floating constants written as floating.
However, when cross-compiling, always use that in case format differs. */
-#ifdef CROSS_COMPILER
+#ifdef CROSS_COMPILE
#define ASM_OUTPUT_DOUBLE(FILE,VALUE) \
fprintf (FILE, "\t.double 0r%.20g\n", (VALUE))
#define ASM_OUTPUT_DOUBLE(FILE,VALUE) \
do { union { double d; long l[2];} tem; \
tem.d = (VALUE); \
- fprintf (FILE, "\t.word 0x%x, 0x%x\n", tem.l[0], tem.l[1]);\
+ fprintf (FILE, "\t.word 0x%lx, 0x%lx\n", tem.l[0], tem.l[1]);\
} while (0)
#define ASM_OUTPUT_FLOAT(FILE,VALUE) \
do { union { float f; long l;} tem; \
tem.f = (VALUE); \
- fprintf (FILE, "\t.word 0x%x\n", tem.l); \
+ fprintf (FILE, "\t.word 0x%lx\n", tem.l); \
} while (0)
-#endif /* not CROSS_COMPILER */
+#endif /* not CROSS_COMPILE */
/* This is how to output an assembler line defining an `int' constant. */
#define ASM_OUTPUT_ASCII(FILE,PTR,LEN) \
do { \
- unsigned char *s; \
+ const unsigned char *s; \
int i; \
- for (i = 0, s = (unsigned char *)(PTR); i < (LEN); s++, i++) \
+ for (i = 0, s = (const unsigned char *)(PTR); i < (LEN); s++, i++) \
{ \
if ((i % 8) == 0) \
fprintf ((FILE),"%s\t.byte\t",(i?"\n":"")); \
/* The `space' pseudo in the text segment outputs nop insns rather than 0s,
so we must output 0s explicitly in the text segment. */
-#define ASM_OUTPUT_SKIP(FILE,SIZE) \
+#define ASM_OUTPUT_SKIP(FILE,SIZE) do { \
if (in_text_section ()) \
{ \
int i; \
} \
} \
else \
- fprintf ((FILE), "\t.set .,.+%u\n", (SIZE))
+ fprintf ((FILE), "\t.set .,.+%u\n", (SIZE)); } while (0)
/* This says how to output an assembler line
to define a global common symbol. */
#define PRINT_OPERAND_PUNCT_VALID_P(CODE) 0
#define PRINT_OPERAND(FILE, X, CODE) \
-{ int i; \
- if (GET_CODE (X) == REG) \
+{ if (GET_CODE (X) == REG) \
fprintf (FILE, "%%%s", reg_names[REGNO (X)]); \
else if (GET_CODE (X) == MEM) \
output_address (XEXP (X, 0)); \