]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/i386/gas.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / i386 / gas.h
CommitLineData
6e9e65c6 1/* Definitions for Intel 386 using GAS.
85ec4feb 2 Copyright (C) 1988-2018 Free Software Foundation, Inc.
c3878c43 3
e20285ad 4This file is part of GCC.
c3878c43 5
e20285ad 6GCC is free software; you can redistribute it and/or modify
c3878c43 7it under the terms of the GNU General Public License as published by
2f83c7d6 8the Free Software Foundation; either version 3, or (at your option)
c3878c43
RS
9any later version.
10
e20285ad 11GCC is distributed in the hope that it will be useful,
c3878c43
RS
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
2f83c7d6
NC
17along with GCC; see the file COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
c3878c43 19
3382566a 20/* Note that i386/seq-gas.h is a GAS configuration that does not use this
892a2d68 21 file. */
c3878c43 22
c3878c43
RS
23/* Use the bsd assembler syntax. */
24/* we need to do this because gas is really a bsd style assembler,
25 * and so doesn't work well this these att-isms:
26 *
27 * ASM_OUTPUT_SKIP is .set .,.+N, which isn't implemented in gas
28 * ASM_OUTPUT_LOCAL is done with .set .,.+N, but that can't be
29 * used to define bss static space
30 *
31 * Next is the question of whether to uses underscores. RMS didn't
32 * like this idea at first, but since it is now obvious that we
33 * need this separate tm file for use with gas, at least to get
34 * dbx debugging info, I think we should also switch to underscores.
35 * We can keep i386v for real att style output, and the few
36 * people who want both form will have to compile twice.
37 */
38
3382566a 39/* these come from i386/bsd.h, but are specific to sequent */
c3878c43
RS
40#undef DBX_NO_XREFS
41#undef DBX_CONTIN_LENGTH
42
c3878c43
RS
43/* Output #ident as a .ident. */
44
a8781821
SB
45#undef TARGET_ASM_OUTPUT_IDENT
46#define TARGET_ASM_OUTPUT_IDENT default_asm_output_ident_directive
c3878c43 47
6e9e65c6
DE
48/* In the past there was confusion as to what the argument to .align was
49 in GAS. For the last several years the rule has been this: for a.out
50 file formats that argument is LOG, and for all other file formats the
51 argument is 1<<LOG.
52
53 However, GAS now has .p2align and .balign pseudo-ops so to remove any
54 doubt or guess work, and since this file is used for both a.out and other
55 file formats, we use one of them. */
c3878c43 56
00ccc16d 57#ifdef HAVE_GAS_BALIGN_AND_P2ALIGN
c3878c43 58#undef ASM_OUTPUT_ALIGN
6e9e65c6
DE
59#define ASM_OUTPUT_ALIGN(FILE,LOG) \
60 if ((LOG)!=0) fprintf ((FILE), "\t.balign %d\n", 1<<(LOG))
d45e8c4c 61#endif
9e423e6d
JW
62
63/* A C statement to output to the stdio stream FILE an assembler
64 command to advance the location counter to a multiple of 1<<LOG
65 bytes if it is within MAX_SKIP bytes.
66
67 This is used to align code labels according to Intel recommendations. */
68
69#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
70# define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \
0385ba57 71 if ((LOG) != 0) {\
8401285e 72 if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
a059f76b 73 else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
0385ba57 74 }
9e423e6d 75#endif
c3878c43 76\f
726c68df
RS
77/* A C statement or statements which output an assembler instruction
78 opcode to the stdio stream STREAM. The macro-operand PTR is a
79 variable of type `char *' which points to the opcode name in its
80 "internal" form--the form that is written in the machine description.
81
82 GAS version 1.38.1 doesn't understand the `repz' opcode mnemonic.
83 So use `repe' instead. */
84
95879c72 85#undef ASM_OUTPUT_OPCODE
726c68df
RS
86#define ASM_OUTPUT_OPCODE(STREAM, PTR) \
87{ \
88 if ((PTR)[0] == 'r' \
89 && (PTR)[1] == 'e' \
84d82177 90 && (PTR)[2] == 'p') \
726c68df 91 { \
84d82177
JVA
92 if ((PTR)[3] == 'z') \
93 { \
87da3843 94 fputs ("repe", (STREAM)); \
84d82177
JVA
95 (PTR) += 4; \
96 } \
97 else if ((PTR)[3] == 'n' && (PTR)[4] == 'z') \
98 { \
87da3843 99 fputs ("repne", (STREAM)); \
84d82177
JVA
100 (PTR) += 5; \
101 } \
726c68df 102 } \
95879c72
L
103 else \
104 ASM_OUTPUT_AVX_PREFIX ((STREAM), (PTR)); \
726c68df 105}
56c0e8fa
JVA
106
107/* Define macro used to output shift-double opcodes when the shift
108 count is in %cl. Some assemblers require %cl as an argument;
109 some don't.
110
892a2d68 111 GAS requires the %cl argument, so override i386/unix.h. */
56c0e8fa 112
dedaa36d
SC
113#undef SHIFT_DOUBLE_OMITS_COUNT
114#define SHIFT_DOUBLE_OMITS_COUNT 0
56c0e8fa 115
7e233208
RK
116/* The comment-starter string as GAS expects it. */
117#undef ASM_COMMENT_START
118#define ASM_COMMENT_START "#"
119
1bc7c5b6 120#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true