Initial import from FreeBSD RELENG_4:
[dragonfly.git] / contrib / gcc / config / xm-interix.h
1 /* Configuration for GNU compiler for processor running Interix
2    Copyright (C) 1993, 1995, 1999 Free Software Foundation, Inc.
3    Donn Terry, Softway Systems, Inc,
4    from code
5       Contributed by Douglas B. Rupp (drupp@cs.washington.edu)
6
7 This file is part of GNU CC.
8
9 GNU CC is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
12 any later version.
13
14 GNU CC is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with GNU CC; see the file COPYING.  If not, write to
21 the Free Software Foundation, 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA.  */
23
24 #ifndef USG
25 #define USG 1
26 #endif
27
28 #ifndef ONLY_INT_FIELDS
29 #ifndef __GNUC__
30 #define ONLY_INT_FIELDS 1
31 #endif
32 #endif
33
34 #ifndef USE_PROTOTYPES
35 #define USE_PROTOTYPES 1
36 #endif
37
38 /* If not compiled with GNU C, use the portable alloca.  */
39 #ifndef __GNUC__
40 #define USE_C_ALLOCA 1
41 #endif
42
43 #define NO_SYS_SIGLIST 1
44
45 /* Our strategy for finding global constructors is a bit different, although
46    not a lot. */
47 #define DO_GLOBAL_CTORS_BODY                                            \
48 do {                                                                    \
49   int i;                                                                \
50   unsigned long nptrs;                                                  \
51   func_ptr *p;                                                          \
52   asm(                                                                  \
53        "     .section .ctor_head, \"rw\"\n"                             \
54        "1:\n"                                                           \
55        "     .text \n"                                                  \
56        ASM_LOAD_ADDR(1b,%0)                                             \
57        : "=r" (p) : : "cc");                                            \
58   for (nptrs = 0; p[nptrs] != 0; nptrs++);                              \
59   for (i = nptrs-1; i >= 0; i--)                                        \
60     p[i] ();                                                            \
61 } while (0) 
62
63 #define DO_GLOBAL_DTORS_BODY                                            \
64 do {                                                                    \
65   func_ptr *p;                                                          \
66   asm(                                                                  \
67        "     .section .dtor_head, \"rw\"\n"                             \
68        "1:\n"                                                           \
69        "     .text \n"                                                  \
70        ASM_LOAD_ADDR(1b,%0)                                             \
71        : "=r" (p) : : "cc");                                            \
72   while (*p)                                                            \
73     {                                                                   \
74       p++;                                                              \
75       (*(p-1)) ();                                                      \
76     }                                                                   \
77 } while (0)