Commit a5c874cb by Richard Henderson Committed by Richard Henderson

d30v: New port.

        * config/d30v: New port.

        * configure.in (d30v-*): Set fp format.
        * configure: Rebuild.

From-SVN: r33548
parent 9ec6d7ab
2000-04-30 Richard Henderson <rth@cygnus.com> 2000-04-30 Richard Henderson <rth@cygnus.com>
* config/d30v: New port.
* configure.in (d30v-*): Set fp format.
* configure: Rebuild.
2000-04-30 Richard Henderson <rth@cygnus.com>
* ifcvt.c: New file. * ifcvt.c: New file.
* Makefile.in (OBJS): Add it. * Makefile.in (OBJS): Add it.
(ifcvt.o): New target. (ifcvt.o): New target.
......
-*- Text -*-
This document describes the proposed ABI for the D30V processor. This is
revision 2 of the document.
Revision history:
Revision 1:
Original revision of this document.
Revision 2:
Done after consultation with Mitsubshi about the calling sequence.
This revision now reduces the number of registers the compiler will not
touch from 18 registers down to 8.
Register 1 is now a normal temporary register, since mvfacc rx,ay,32 is
legal.
Arguments greater than 4 bytes must be passed in an even register or at
a double word alignment.
The va_list type is a structure, not a char *.
The stack must be aligned to 8 byte boundary. Doubles and long longs
must also be aligned to 8 byte boundaries.
System calls are specified via trap 31.
Revision 3:
I added discussion about compiler switches.
Register usage:
===============
Registers Call Status Usage
--------- ----------- -----
R0 hardware Hardwired to 0
R1 volatile temp
R2 volatile Arg 1 and main return value.
R3 volatile Arg 2 and low bits of 64 bit returns
R4 - R17 volatile Args 3-16
R18 volatile Static chain if used
R19 - R25 volatile temps
R26 - R33 saved Reserved for user use
R34 - R60 saved Registers preserved across calls
R61 saved Frame pointer if needed.
R62 saved Return address pointer (hardware)
R63 saved Stack pointer
CR0 - CR3 hardware {normal,backup} {psw,pc}
CR4 - CR6 hardware Reserved for future use
CR7 - CR9 volatile Repeat count, addresses
CR10 - CR11 saved Modulo start/end
CR12 - CR14 hardware Reserved for future use
CR15 - CR17 hardware Interrupt support
F0 - F1 volatile Execution flags
F2 - F3 volatile General flags
F4 - F7 volatile Special purpose flags
A0 volatile Accumulator
A1 saved Accumulator
Notes on the register usage:
============================
1) R61 will hold the frame pointer if it is needed. Normally the frame
pointer will not be needed, in which case this will become another
saved register.
2) Repeat instructions and delayed branches cannot cross call boundaries.
Similarly, all flags are assumed to not be preserved across calls.
3) Since so many registers are available, I reserved 8 registers (r26-r33)
for the user to use for any purpose (global variables, interrupt
routines, thread pointer, etc.). These registers will not be used by
the compiler for any purpose.
4) One of the two accumulators is saved across calls.
5) Doubles and long longs will only be allocated to even/odd register
pairs to allow use of the ld2w/st2w instructions.
Miscellaneous call information:
===============================
1) Structures are passed in registers, rounding them up to word
boundaries.
2) Any argument that is greater than word size (4 bytes) must be aligned
to a double word boundary and/or start in an even register. The
intention here is to be able to use the ld2w/st2w instructions for
moving doubles and long longs.
3) Variable argument functions are called with the same calling sequence
as non-variable argument functions. When called, a variable argument
function first saves the 16 registers (R2 - R17) used for passing
arguments. The va_list type is a structure. The first element of the
structure is a pointer to the first word saved on the stack, and the
second element is a number that gives which argument number is being
processed.
4) Word and double word sized structures/unions are returned in registers,
other functions returning structures expect a temporary area address to
be passed as the first argument.
The stack frame when a function is called looks like:
high | .... |
+-------------------------------+
| Argument word #20 |
+-------------------------------+
| Argument word #19 |
+-------------------------------+
| Argument word #18 |
+-------------------------------+
| Argument word #17 |
low SP----> +-------------------------------+
After the prologue is executed, the stack frame will look like:
high | .... |
+-------------------------------+
| Argument word #20 |
+-------------------------------+
| Argument word #19 |
+-------------------------------+
| Argument word #18 |
+-------------------------------+
| Argument word #17 |
Prev sp +-------------------------------+
| |
| Save for arguments 1..16 if |
| the func. uses stdarg/varargs |
| |
+-------------------------------+
| |
| Save area for preserved regs |
| |
+-------------------------------+
| |
| Local variables |
| |
+-------------------------------+
| |
| alloca space if used |
| |
+-------------------------------+
| |
| Space for outgoing arguments |
| |
low SP----> +-------------------------------+
System Calls
============
System calls will be done using "TRAP 31". Input arguments will be in R2 - R5,
and the system call number will be in R6. Return values from the system call
will be in R2. Negative values of the return indicate the system call failed,
and the value is the negative of the error code. Here are the assigned system
call numbers (value in R6):
exit 1
open 2
close 3
read 4
write 5
lseek 6
unlink 7
getpid 8
kill 9
fstat 10
(11 is reserved for sbrk)
argvlen 12
argv 13
chdir 14
stat 15
chmod 16
utime 17
time 18
Compiler Switches
=================
The following d30v specific compiler switches are currently supported:
-mextmem Link .text/.data/.bss/etc in external memory.
-mextmemory Same as -mextmem.
-monchip Link .text/.data/.bss/etc in the onchip data/text
memory.
-mno-asm-optimize Do not pass -O to the assembler when optimizing (the -O
switch will mark two short instructions that don't
interfere with each other as being done parallel
instead of sequentially).
-masm-optimize [default] If optimizing, pass -O to the assembler.
-mbranch-cost=n Increase the internal costs of branches to n. Higher
costs means that the compiler will issue more
instructions to avoid doing a branch. The default is
2.
-mcond-exec=n Replace branches around n insns with conditional
execution if we can. Default is 4.
Sections
========
You can override the effect of the -mextmem/-monchip options by putting
functions into either the ".stext" or ".etext" sections. If you put them into
the ".stext" section, the linker will always link the function into the onchip
memory area. Similarly, if you put the function in the ".etext" section, the
linker will always link the function into the external memory area.
Data can be controlled as well. If you put the data in the ".sdata" section,
the linker will put the data into the onchip data area. Similarly, if you put
the data in the ".edata" section, the linker will put the data into the
external memory.
Stack pointer
=============
The crt0.o that we ship loads up the stack pointer with the value of the label
__stack. If you do not define a value for __stack, the linker will choose the
top of the onchip data area (0x20008000) for the stack pointer. You can set a
new value via the options:
-Wl,-defsym,__stack=0x20008000
/* d30v prototypes.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
Contributed by Cygnus Solutions.
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 2, 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. */
/* External functions called. */
extern void override_options PARAMS ((void));
#ifdef RTX_CODE
extern int short_memory_operand PARAMS ((rtx, enum machine_mode));
extern int long_memory_operand PARAMS ((rtx, enum machine_mode));
extern int d30v_memory_operand PARAMS ((rtx, enum machine_mode));
extern int single_reg_memory_operand PARAMS ((rtx, enum machine_mode));
extern int const_addr_memory_operand PARAMS ((rtx, enum machine_mode));
extern int call_operand PARAMS ((rtx, enum machine_mode));
extern int gpr_operand PARAMS ((rtx, enum machine_mode));
extern int accum_operand PARAMS ((rtx, enum machine_mode));
extern int gpr_or_accum_operand PARAMS ((rtx, enum machine_mode));
extern int cr_operand PARAMS ((rtx, enum machine_mode));
extern int repeat_operand PARAMS ((rtx, enum machine_mode));
extern int flag_operand PARAMS ((rtx, enum machine_mode));
extern int br_flag_operand PARAMS ((rtx, enum machine_mode));
extern int br_flag_or_constant_operand PARAMS ((rtx, enum machine_mode));
extern int gpr_br_flag_operand PARAMS ((rtx, enum machine_mode));
extern int f0_operand PARAMS ((rtx, enum machine_mode));
extern int f1_operand PARAMS ((rtx, enum machine_mode));
extern int carry_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_0_operand PARAMS ((rtx, enum machine_mode));
extern int gpr_or_signed6_operand PARAMS ((rtx, enum machine_mode));
extern int gpr_or_unsigned5_operand PARAMS ((rtx, enum machine_mode));
extern int gpr_or_unsigned6_operand PARAMS ((rtx, enum machine_mode));
extern int gpr_or_constant_operand PARAMS ((rtx, enum machine_mode));
extern int gpr_or_dbl_const_operand PARAMS ((rtx, enum machine_mode));
extern int gpr_or_memory_operand PARAMS ((rtx, enum machine_mode));
extern int move_input_operand PARAMS ((rtx, enum machine_mode));
extern int move_output_operand PARAMS ((rtx, enum machine_mode));
extern int signed6_operand PARAMS ((rtx, enum machine_mode));
extern int unsigned5_operand PARAMS ((rtx, enum machine_mode));
extern int unsigned6_operand PARAMS ((rtx, enum machine_mode));
extern int bitset_operand PARAMS ((rtx, enum machine_mode));
extern int condexec_test_operator PARAMS ((rtx, enum machine_mode));
extern int condexec_branch_operator PARAMS ((rtx, enum machine_mode));
extern int condexec_unary_operator PARAMS ((rtx, enum machine_mode));
extern int condexec_addsub_operator PARAMS ((rtx, enum machine_mode));
extern int condexec_binary_operator PARAMS ((rtx, enum machine_mode));
extern int condexec_shiftl_operator PARAMS ((rtx, enum machine_mode));
extern int condexec_extend_operator PARAMS ((rtx, enum machine_mode));
extern int branch_zero_operator PARAMS ((rtx, enum machine_mode));
extern int cond_move_dest_operand PARAMS ((rtx, enum machine_mode));
extern int cond_move_operand PARAMS ((rtx, enum machine_mode));
extern int cond_exec_operand PARAMS ((rtx, enum machine_mode));
extern int srelational_si_operand PARAMS ((rtx, enum machine_mode));
extern int urelational_si_operand PARAMS ((rtx, enum machine_mode));
extern int relational_di_operand PARAMS ((rtx, enum machine_mode));
#endif
extern d30v_stack_t *d30v_stack_info PARAMS ((void));
extern int direct_return PARAMS ((void));
#ifdef TREE_CODE
#ifdef RTX_CODE
extern void d30v_init_cumulative_args PARAMS ((CUMULATIVE_ARGS *, tree,
rtx, int, int));
#endif
extern int d30v_function_arg_boundary PARAMS ((enum machine_mode, tree));
#ifdef RTX_CODE
extern rtx d30v_function_arg PARAMS ((CUMULATIVE_ARGS *,
enum machine_mode,
tree, int, int));
#endif
extern int d30v_function_arg_partial_nregs PARAMS ((CUMULATIVE_ARGS *,
enum machine_mode,
tree, int));
extern int d30v_function_arg_pass_by_reference PARAMS ((CUMULATIVE_ARGS *,
enum machine_mode,
tree, int));
extern void d30v_function_arg_advance PARAMS ((CUMULATIVE_ARGS *,
enum machine_mode,
tree, int));
#endif
#ifdef RTX_CODE
extern rtx d30v_expand_builtin_saveregs PARAMS ((void));
#endif
#ifdef TREE_CODE
extern void d30v_setup_incoming_varargs PARAMS ((CUMULATIVE_ARGS *,
enum machine_mode,
tree, int *, int));
extern tree d30v_build_va_list PARAMS ((void));
#ifdef RTX_CODE
extern void d30v_expand_builtin_va_start PARAMS ((int, tree, rtx));
extern rtx d30v_expand_builtin_va_arg PARAMS ((tree, tree));
#endif /* RTX_CODE */
#endif /* TREE_CODE */
extern void d30v_function_prologue PARAMS ((FILE *, int));
extern void d30v_function_epilogue PARAMS ((FILE *, int));
extern void d30v_function_profiler PARAMS ((FILE *, int));
#ifdef RTX_CODE
extern void d30v_split_double PARAMS ((rtx, rtx *, rtx *));
extern void d30v_print_operand PARAMS ((FILE *, rtx, int));
extern void d30v_print_operand_address PARAMS ((FILE *, rtx));
#endif
extern int d30v_trampoline_size PARAMS ((void));
#ifdef RTX_CODE
extern void d30v_initialize_trampoline PARAMS ((rtx, rtx, rtx));
extern int d30v_legitimate_address_p PARAMS ((enum machine_mode, rtx, int));
extern rtx d30v_legitimize_address PARAMS ((rtx, rtx,
enum machine_mode, int));
extern int d30v_mode_dependent_address_p PARAMS ((rtx));
extern rtx d30v_emit_comparison PARAMS ((int, rtx, rtx, rtx));
extern char *d30v_move_2words PARAMS ((rtx *, rtx));
extern int d30v_emit_cond_move PARAMS ((rtx, rtx, rtx, rtx));
extern void d30v_machine_dependent_reorg PARAMS ((rtx));
extern int d30v_adjust_cost PARAMS ((rtx, rtx, rtx, int));
extern rtx d30v_return_addr PARAMS ((void));
#endif
/* External variables referenced */
/* Define the information needed to generate branch and scc insns. This is
stored from the compare operation. */
extern struct rtx_def *d30v_compare_op0;
extern struct rtx_def *d30v_compare_op1;
/* Define the information needed to modify the epilogue for EH. */
#ifdef RTX_CODE
extern rtx d30v_eh_epilogue_sp_ofs;
#endif
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
/* Assembly support functions for libgcc1.
*
* Copyright (C) 1997 Free Software Foundation, Inc.
* Contributed by Cygnus Support
*
* This file 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, or (at your option) any
* later version.
*
* In addition to the permissions in the GNU General Public License, the
* Free Software Foundation gives you unlimited permission to link the
* compiled version of this file with other programs, and to distribute
* those programs without any restriction coming from the use of this
* file. (The General Public License restrictions do apply in other
* respects; for example, they cover modification of the file, and
* distribution when not linked into another program.)
*
* This file 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; see the file COPYING. If not, write to
* the Free Software Foundation, 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
* As a special exception, if you link this library with files
* compiled with GCC to produce an executable, this does not cause
* the resulting executable to be covered by the GNU General Public License.
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*/
#ifdef L_udivsi3
/* For division, we use the following algorithm:
*
* unsigned
* __divsi3 (unsigned a, unsigned b)
* {
* unsigned al = a;
* unsigned ah = 0;
* unsigned tmpf;
* int i;
*
* for (i = 32; i > 0; i--)
* {
* ah = (ah << 1) | (al >> 31);
* tmpf = (ah >= b) ? 1 : 0;
* ah -= ((tmpf) ? b : 0);
* al = (al << 1) | tmpf;
* }
*
* return al; // for __udivsi3
* return ah; // for __umodsi3
* }
*/
.file "_udivsi3"
.text
.globl __umodsi3
.globl __udivsi3
.type __umodsi3,@function
.type __udivsi3,@function
.stabs "libgcc1.asm",100,0,0,__umodsi3
.stabs "int:t(0,1)=r(0,1);-2147483648;2147483647;",128,0,0,0
.stabs "__umodsi3:F(0,1)",36,0,1,__umodsi3
.stabs "a:P(0,1)",64,0,1,2
.stabs "b:P(0,1)",64,0,1,3
__umodsi3:
bra.s .Lmerge || orfg f1,f1,1 ; indicate this is __umodsi3
.Lumod:
.size __umodsi3,.Lumod-__umodsi3
.stabs "",36,0,0,.Lumod-__umodsi3
.stabs "__udivsi3:F(0,1)",36,0,1,__udivsi3
.stabs "a:P(0,1)",64,0,1,2
.stabs "b:P(0,1)",64,0,1,3
__udivsi3:
andfg f1,f1,0 || nop ; indicate this is __udivsi3
.Lmerge:
; r2 = al
; r3 = b
; r4 = ah
; r5 = loop counter
; f0 = tmpf
; f1 = 1 if this is mod, 0 if this is div
or r4,r0,0 || sub r5,r0,-32 ; ah = 0, loop = 32
.Lloop:
src r4,r2,-1 || sub r5,r5,1 ; ah = (ah << 1) | (al >> 31); decrement loop count
cmpuge f0,r4,r3 || sra r2,r2,-1 ; f0 = (ah >= b); al <<= 1
sub/tx r4,r4,r3 || or/tx r2,r2,1 ; ah -= (tmpf) ? b : 0; al |= tmpf
bratnz.s r5,.Lloop || nop ; loop back if not done
jmp link || or/xt r2,r0,r4 ; if mod, update register, then return to user
.Ludiv:
.size __udivsi3,.Ludiv-__udivsi3
.stabs "",36,0,0,.Ludiv-__udivsi3
#endif /* L_udivsi3 */
#ifdef L_divsi3
/* For division, we use the following algorithm:
*
* unsigned
* __divsi3 (unsigned a, unsigned b)
* {
* unsigned al = __builtin_abs (a);
* unsigned b2 = __builtin_abs (b);
* unsigned ah = 0;
* unsigned tmpf;
* int i;
*
* for (i = 32; i > 0; i--)
* {
* ah = (ah << 1) | (al >> 31);
* tmpf = (ah >= b2) ? 1 : 0;
* ah -= ((tmpf) ? b2 : 0);
* al = (al << 1) | tmpf;
* }
*
* if (a < 0)
* ah = -ah, al = -al;
*
* if (b < 0)
* al = -al;
*
* return al; // for __divsi3
* return ah; // for __modsi3
* }
*/
.file "_divsi3"
.text
.globl __modsi3
.globl __divsi3
.type __modsi3,@function
.type __divsi3,@function
.stabs "libgcc1.asm",100,0,0,__modsi3
.stabs "int:t(0,1)=r(0,1);-2147483648;2147483647;",128,0,0,0
.stabs "__modsi3:F(0,1)",36,0,1,__modsi3
.stabs "a:P(0,1)",64,0,1,2
.stabs "b:P(0,1)",64,0,1,3
__modsi3:
bra.s .Lmerge || orfg f1,f1,1 ; indicate this is __modsi3
.Lmod:
.size __modsi3,.Lmod-__modsi3
.stabs "",36,0,0,.Lmod-__modsi3
.stabs "__divsi3:F(0,1)",36,0,1,__divsi3
.stabs "a:P(0,1)",64,0,1,2
.stabs "b:P(0,1)",64,0,1,3
__divsi3:
andfg f1,f1,0 || nop ; indicate this is __divsi3
.Lmerge:
; r2 = al
; r3 = b2
; r4 = ah
; r5 = loop counter
; r6 = a
; r7 = b
; f0 = tmpf
; f1 = 1 if this is mod, 0 if this is div
or r6,r0,r2 || or r7,r0,r3 ; copy original inputs
abs r2,r2 || abs r3,r3 ; make both postive
or r4,r0,0 || sub r5,r0,-32 ; ah = 0, loop = 32
.Lloop:
src r4,r2,-1 || sub r5,r5,1 ; ah = (ah << 1) | (al >> 31); decrement loop count
cmpuge f0,r4,r3 || sra r2,r2,-1 ; f0 = (ah >= b); al <<= 1
sub/tx r4,r4,r3 || or/tx r2,r2,1 ; ah -= (tmpf) ? b : 0; al |= tmpf
bratnz.s r5,.Lloop || nop ; loop back if not done
cmplt f0,r6,0 || nop ; f0 = (a < 0)
sub/tx r2,r0,r2 || sub/tx r4,r0,r4 ; negate both al, ah if (a < 0)
cmplt f0,r7,0 -> sub/tx r2,r0,r2 ; negate al if (b < 0)
jmp link || or/xt r2,r0,r4 ; update result if mod; return to user
.Ldiv:
.size __divsi3,.Ldiv-__divsi3
.stabs "",36,0,0,.Ldiv-__divsi3
#endif /* L_divsi3 */
# Build libgcc1 from assembler sources
LIBGCC1 = libgcc1-asm.a
CROSS_LIBGCC1 = libgcc1-asm.a
LIB1ASMSRC = d30v/libgcc1.asm
LIB1ASMFUNCS = _udivsi3 _divsi3
# Turn on full debug for libgcc.a.
LIBGCC2_DEBUG_CFLAGS = -g
# We want fine grained libraries, so use the new code to build the
# floating point emulation libraries.
FPBIT = fp-bit.c
DPBIT = dp-bit.c
dp-bit.c: $(srcdir)/config/fp-bit.c config.status
cat $(srcdir)/config/fp-bit.c > dp-bit.c
fp-bit.c: $(srcdir)/config/fp-bit.c config.status
echo '#define FLOAT' > fp-bit.c
echo '#define _fpadd_parts _fpadd_parts_sf' >> fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
# For svr4 we build crtbegin.o and crtend.o which serve to add begin and
# end labels to the .ctors and .dtors section when we link using gcc.
EXTRA_PARTS=crtbegin.o crtend.o
# We need to use -fPIC when we are using gcc to compile the routines in
# crtstuff.c. This is only really needed when we are going to use gcc/g++
# to produce a shared library, but since we don't know ahead of time when
# we will be doing that, we just always use -fPIC when compiling the
# routines in crtstuff.c.
# Right now, disable, since we don't support shared libraries on d30v yet.
#CRTSTUFF_T_CFLAGS = -fPIC
/* Configuration for GNU C-compiler for Mitsubishi D30V.
Copyright (C) 1997, 2000 Free Software Foundation, Inc.
Contributed by Cygnus Solutions.
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 2, 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. */
/* #defines that need visibility everywhere. */
#define FALSE 0
#define TRUE 1
/* Define this macro if the host system is System V. */
/* #define USG */
/* Define this macro if the host system is VMS. */
/* #define VMS */
/* A C expression for the status code to be returned when the compiler exits
after serious errors. */
#define FATAL_EXIT_CODE 33
/* A C expression for the status code to be returned when the compiler exits
without serious errors. */
#define SUCCESS_EXIT_CODE 0
/* Defined if the host machine stores words of multi-word values in big-endian
order. (GNU CC does not depend on the host byte ordering within a word.) */
#define HOST_WORDS_BIG_ENDIAN
/* Define this macro to be 1 if the host machine stores `DFmode', `XFmode' or
`TFmode' floating point numbers in memory with the word containing the sign
bit at the lowest address; otherwise, define it to be zero.
This macro need not be defined if the ordering is the same as for multi-word
integers. */
/* #define HOST_FLOAT_WORDS_BIG_ENDIAN */
/* A numeric code distinguishing the floating point format for the host
machine. See `TARGET_FLOAT_FORMAT' in *Note Storage Layout:: for the
alternatives and default. */
/* #define HOST_FLOAT_FORMAT */
/* A C expression for the number of bits in `char' on the host machine. */
#define HOST_BITS_PER_CHAR 8
/* A C expression for the number of bits in `short' on the host machine. */
#define HOST_BITS_PER_SHORT 16
/* A C expression for the number of bits in `int' on the host machine. */
#define HOST_BITS_PER_INT 32
/* A C expression for the number of bits in `long' on the host machine. */
#define HOST_BITS_PER_LONG 32
/* Define this macro to indicate that the host compiler only supports `int' bit
fields, rather than other integral types, including `enum', as do most C
compilers. */
/* #define ONLY_INT_FIELDS */
/* A C expression for the size of ordinary obstack chunks. If you don't define
this, a usually-reasonable default is used. */
/* #define OBSTACK_CHUNK_SIZE */
/* The function used to allocate obstack chunks. If you don't define this,
`xmalloc' is used. */
/* #define OBSTACK_CHUNK_ALLOC */
/* The function used to free obstack chunks. If you don't define this, `free'
is used. */
/* #define OBSTACK_CHUNK_FREE */
/* Define this macro to indicate that the compiler is running with the `alloca'
implemented in C. This version of `alloca' can be found in the file
`alloca.c'; to use it, you must also alter the `Makefile' variable `ALLOCA'.
(This is done automatically for the systems on which we know it is needed.)
If you do define this macro, you should probably do it as follows:
#ifndef __GNUC__
#define USE_C_ALLOCA
#else
#define alloca __builtin_alloca
#endif
so that when the compiler is compiled with GNU CC it uses the more efficient
built-in `alloca' function. */
#ifndef __GNUC__
#define USE_C_ALLOCA
#else
#define alloca __builtin_alloca
#endif
/* Define this macro to indicate that the host compiler does not properly
handle converting a function value to a pointer-to-function when it is used
in an expression. */
/* #define FUNCTION_CONVERSION_BUG */
/* Define this if the library function `vprintf' is available on your system. */
/* #define HAVE_VPRINTF */
/* Define this macro to enable support for multibyte characters in the input to
GNU CC. This requires that the host system support the ANSI C library
functions for converting multibyte characters to wide characters. */
/* #define MULTIBYTE_CHARS */
/* Define this if the library function `putenv' is available on your system. */
/* #define HAVE_PUTENV */
/* Define this if your system is POSIX.1 compliant. */
/* #define POSIX */
/* Define this if your system *does not* provide the variable `sys_siglist'. */
/* #define NO_SYS_SIGLIST */
/* Define this if your system has the variable `sys_siglist', and there is
already a declaration of it in the system header files. */
/* #define DONT_DECLARE_SYS_SIGLIST */
/* Define this to be 1 if you know that the host compiler supports prototypes,
even if it doesn't define __STDC__, or define it to be 0 if you do not want
any prototypes used in compiling GNU CC. If `USE_PROTOTYPES' is not
defined, it will be determined automatically whether your compiler supports
prototypes by checking if `__STDC__' is defined. */
/* #define USE_PROTOTYPES */
/* Define this if you wish suppression of prototypes generated from the machine
description file, but to use other prototypes within GNU CC. If
`USE_PROTOTYPES' is defined to be 0, or the host compiler does not support
prototypes, this macro has no effect. */
/* #define NO_MD_PROTOTYPES */
/* Define this if you wish to generate prototypes for the `gen_call' or
`gen_call_value' functions generated from the machine description file. If
`USE_PROTOTYPES' is defined to be 0, or the host compiler does not support
prototypes, or `NO_MD_PROTOTYPES' is defined, this macro has no effect. As
soon as all of the machine descriptions are modified to have the appropriate
number of arguments, this macro will be removed.
Some systems do provide this variable, but with a different name such as
`_sys_siglist'. On these systems, you can define `sys_siglist' as a macro
which expands into the name actually provided. */
/* #define MD_CALL_PROTOTYPES */
/* Define this macro to be a C character constant representing the character
used to separate components in paths. The default value is. the colon
character */
/* #define PATH_SEPARATOR */
/* If your system uses some character other than slash to separate directory
names within a file specification, define this macro to be a C character
constant specifying that character. When GNU CC displays file names, the
character you specify will be used. GNU CC will test for both slash and the
character you specify when parsing filenames. */
/* #define DIR_SEPARATOR */
/* Define this macro to be a C string representing the suffix for object files
on your machine. If you do not define this macro, GNU CC will use `.o' as
the suffix for object files. */
/* #define OBJECT_SUFFIX */
/* Define this macro to be a C string representing the suffix for executable
files on your machine. If you do not define this macro, GNU CC will use the
null string as the suffix for object files. */
/* #define EXECUTABLE_SUFFIX */
/* If defined, `collect2' will scan the individual object files specified on
its command line and create an export list for the linker. Define this
macro for systems like AIX, where the linker discards object files that are
not referenced from `main' and uses export lists. */
/* #define COLLECT_EXPORT_LIST */
/* In addition, configuration files for system V define `bcopy', `bzero' and
`bcmp' as aliases. Some files define `alloca' as a macro when compiled with
GNU CC, in order to take advantage of the benefit of GNU CC's built-in
`alloca'. */
/* target machine dependencies.
tm.h is a symbolic link to the actual target specific file. */
#include "tm.h"
/* end of xm-generic.h */
...@@ -921,6 +921,9 @@ changequote([,])dnl ...@@ -921,6 +921,9 @@ changequote([,])dnl
extra_parts="crtbegin.o crtend.o" extra_parts="crtbegin.o crtend.o"
install_headers_dir=install-headers-cpio install_headers_dir=install-headers-cpio
;; ;;
d30v-*)
float_format=i64
;;
dsp16xx-*) dsp16xx-*)
;; ;;
elxsi-elxsi-*) elxsi-elxsi-*)
......
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