]>
Commit | Line | Data |
---|---|---|
ef78c245 | 1 | /* Definitions for Intel 386 running Linux-based GNU systems with ELF format. |
4592bdcb JL |
2 | Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000 |
3 | Free Software Foundation, Inc. | |
ef78c245 JL |
4 | Contributed by Eric Youngdale. |
5 | Modified for stabs-in-ELF by H.J. Lu. | |
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 | #define LINUX_DEFAULT_ELF | |
25 | ||
26 | /* A lie, I guess, but the general idea behind linux/ELF is that we are | |
27 | supposed to be outputting something that will assemble under SVr4. | |
28 | This gets us pretty close. */ | |
29 | #include <i386/i386.h> /* Base i386 target machine definitions */ | |
30 | #include <i386/att.h> /* Use the i386 AT&T assembler syntax */ | |
31 | #include <linux.h> /* some common stuff */ | |
32 | ||
33 | #undef TARGET_VERSION | |
34 | #define TARGET_VERSION fprintf (stderr, " (i386 RTEMS with ELF)"); | |
35 | ||
36 | /* The svr4 ABI for the i386 says that records and unions are returned | |
37 | in memory. */ | |
38 | #undef DEFAULT_PCC_STRUCT_RETURN | |
39 | #define DEFAULT_PCC_STRUCT_RETURN 1 | |
40 | ||
ef78c245 | 41 | #undef DBX_REGISTER_NUMBER |
83774849 | 42 | #define DBX_REGISTER_NUMBER(n) svr4_dbx_register_map[n] |
ef78c245 JL |
43 | |
44 | /* Output assembler code to FILE to increment profiler label # LABELNO | |
45 | for profiling a function entry. */ | |
46 | ||
47 | #undef FUNCTION_PROFILER | |
48 | #define FUNCTION_PROFILER(FILE, LABELNO) \ | |
49 | { \ | |
50 | if (flag_pic) \ | |
51 | { \ | |
52 | fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%edx\n", \ | |
53 | LPREFIX, (LABELNO)); \ | |
54 | fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \ | |
55 | } \ | |
56 | else \ | |
57 | { \ | |
58 | fprintf (FILE, "\tmovl $%sP%d,%%edx\n", LPREFIX, (LABELNO)); \ | |
59 | fprintf (FILE, "\tcall mcount\n"); \ | |
60 | } \ | |
61 | } | |
62 | ||
63 | #undef SIZE_TYPE | |
64 | #define SIZE_TYPE "unsigned int" | |
65 | ||
66 | #undef PTRDIFF_TYPE | |
67 | #define PTRDIFF_TYPE "int" | |
68 | ||
69 | #undef WCHAR_TYPE | |
70 | #define WCHAR_TYPE "long int" | |
71 | ||
72 | #undef WCHAR_TYPE_SIZE | |
73 | #define WCHAR_TYPE_SIZE BITS_PER_WORD | |
74 | ||
75 | #undef CPP_PREDEFINES | |
2b57e919 | 76 | #define CPP_PREDEFINES "-Drtems -D__rtems__ -Asystem=rtems" |
ef78c245 | 77 | |
ef78c245 JL |
78 | /* A C statement (sans semicolon) to output to the stdio stream |
79 | FILE the assembler definition of uninitialized global DECL named | |
80 | NAME whose size is SIZE bytes and alignment is ALIGN bytes. | |
81 | Try to use asm_output_aligned_bss to implement this macro. */ | |
82 | ||
83 | #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ | |
84 | asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN) | |
85 | ||
86 | #undef STARTFILE_SPEC | |
d1476635 | 87 | #define STARTFILE_SPEC "crt0.o%s crti.o%s crtbegin.o%s" |
ef78c245 JL |
88 | |
89 | #undef ENDFILE_SPEC | |
d1476635 JS |
90 | #define ENDFILE_SPEC "crtend.o%s crtn.o%s" |
91 | ||
6e5138f0 JS |
92 | /* Get machine-independent configuration parameters for RTEMS. */ |
93 | #include <rtems.h> | |
94 | ||
95 | /* end of i386/rtemself.h */ |