]>
Commit | Line | Data |
---|---|---|
052dbd9e MK |
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 | |
97ad1d43 | 29 | #ifndef __GNUC__ |
052dbd9e MK |
30 | #define ONLY_INT_FIELDS 1 |
31 | #endif | |
97ad1d43 | 32 | #endif |
052dbd9e MK |
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 | ||
052dbd9e MK |
43 | /* Our strategy for finding global constructors is a bit different, although |
44 | not a lot. */ | |
45 | #define DO_GLOBAL_CTORS_BODY \ | |
46 | do { \ | |
47 | int i; \ | |
48 | unsigned long nptrs; \ | |
49 | func_ptr *p; \ | |
50 | asm( \ | |
51 | " .section .ctor_head, \"rw\"\n" \ | |
52 | "1:\n" \ | |
53 | " .text \n" \ | |
54 | ASM_LOAD_ADDR(1b,%0) \ | |
55 | : "=r" (p) : : "cc"); \ | |
56 | for (nptrs = 0; p[nptrs] != 0; nptrs++); \ | |
57 | for (i = nptrs-1; i >= 0; i--) \ | |
58 | p[i] (); \ | |
59 | } while (0) | |
60 | ||
61 | #define DO_GLOBAL_DTORS_BODY \ | |
62 | do { \ | |
63 | func_ptr *p; \ | |
64 | asm( \ | |
65 | " .section .dtor_head, \"rw\"\n" \ | |
66 | "1:\n" \ | |
67 | " .text \n" \ | |
68 | ASM_LOAD_ADDR(1b,%0) \ | |
69 | : "=r" (p) : : "cc"); \ | |
70 | while (*p) \ | |
71 | { \ | |
72 | p++; \ | |
73 | (*(p-1)) (); \ | |
74 | } \ | |
75 | } while (0) |