]> gcc.gnu.org Git - gcc.git/blob - gcc/config/i386/isc.h
72a07fe49a9bf9f7e4f76137389162d2b10dcc03
[gcc.git] / gcc / config / i386 / isc.h
1 /* Assembler-independent definitions for an Intel 386 running
2 Interactive Unix System V. Specifically, this is for recent versions
3 that support POSIX. */
4
5 /* Use crt1.o, not crt0.o, as a startup file, and crtn.o as a closing file. */
6 #undef STARTFILE_SPEC
7 #define STARTFILE_SPEC \
8 "%{!shlib:%{posix:%{pg:mcrtp1.o%s}%{!pg:%{p:mcrtp1.o%s}%{!p:crtp1.o%s}}}\
9 %{!posix:%{pg:mcrt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}}\
10 %{p:-L/lib/libp} %{pg:-L/lib/libp}}}\
11 %{shlib:%{posix:crtp1.o%s}%{!posix:crt1.o%s}} crtbegin.o%s"
12
13 #define ENDFILE_SPEC "crtend.o%s crtn.o%s"
14
15 /* Library spec */
16 #undef LIB_SPEC
17 #define LIB_SPEC "%{shlib:-lc_s} %{posix:-lcposix} -lc -lg"
18
19 /* ISC 2.2 uses `char' for `wchar_t'. */
20 #undef WCHAR_TYPE
21 #define WCHAR_TYPE "char"
22
23 #undef WCHAR_TYPE_SIZE
24 #define WCHAR_TYPE_SIZE BITS_PER_UNIT
25
26 #if 0
27 /* This is apparently not true: ISC versions up to 3.0, at least, use
28 the standard calling sequence in which the called function pops the
29 extra arg. */
30 /* caller has to pop the extra argument passed to functions that return
31 structures. */
32
33 #undef RETURN_POPS_ARGS
34 #define RETURN_POPS_ARGS(FUNTYPE,SIZE) \
35 (TREE_CODE (FUNTYPE) == IDENTIFIER_NODE ? 0 \
36 : (TARGET_RTD \
37 && (TYPE_ARG_TYPES (FUNTYPE) == 0 \
38 || (TREE_VALUE (tree_last (TYPE_ARG_TYPES (FUNTYPE))) \
39 == void_type_node))) ? (SIZE) \
40 : 0)
41 /* On other 386 systems, the last line looks like this:
42 : (aggregate_value_p (TREE_TYPE (FUNTYPE))) ? GET_MODE_SIZE (Pmode) : 0) */
43 #endif
44
45 /* Handle #pragma pack and #pragma weak. */
46 #define HANDLE_SYSV_PRAGMA
47
48 /* By default, target has a 80387, uses IEEE compatible arithmetic,
49 and returns float values in the 387, ie,
50 (TARGET_80387 | TARGET_FLOAT_RETURNS_IN_80387)
51
52 ISC's software emulation of a 387 fails to handle the `fucomp'
53 opcode. fucomp is only used when generating IEEE compliant code.
54 So don't make TARGET_IEEE_FP default for ISC. */
55
56 #undef TARGET_DEFAULT
57 #define TARGET_DEFAULT 0201
58
59 /* The ISC 2.0.2 software FPU emulator apparently can't handle
60 80-bit XFmode insns, so don't generate them. */
61 #undef LONG_DOUBLE_TYPE_SIZE
62 #define LONG_DOUBLE_TYPE_SIZE 64
63
64 /* The ISC assembler does not like a .file directive with a name
65 longer than 14 characters. Truncating it will not permit
66 debugging to work properly, but at least we won't get an error
67 message. */
68
69 #undef ASM_FILE_START
70 #define ASM_FILE_START(FILE) \
71 do { \
72 char c; \
73 int max = 0; \
74 char *string = dump_base_name; \
75 \
76 fputs ("\t.file\t\"", FILE); \
77 \
78 while ((c = *string++) != 0 && max++ < 14) { \
79 if (c == '\"' || c == '\\') \
80 putc ('\\', FILE); \
81 putc (c, FILE); \
82 } \
83 fputs ("\"\n", FILE); \
84 } while (0)
This page took 0.038834 seconds and 4 git commands to generate.