]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/i386/gas.h
Temporary remove "at least 8 byte alignment" code from x86
[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 59#define ASM_OUTPUT_ALIGN(FILE,LOG) \
dd047c67 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) \
dd047c67
DV
71 if ((LOG) != 0) { \
72 if ((MAX_SKIP) == 0 || (MAX_SKIP) >= (1<<(LOG))-1) \
73 fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
74 else \
75 fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
76 }
9e423e6d 77#endif
c3878c43 78\f
726c68df
RS
79/* A C statement or statements which output an assembler instruction
80 opcode to the stdio stream STREAM. The macro-operand PTR is a
81 variable of type `char *' which points to the opcode name in its
82 "internal" form--the form that is written in the machine description.
83
84 GAS version 1.38.1 doesn't understand the `repz' opcode mnemonic.
85 So use `repe' instead. */
86
95879c72 87#undef ASM_OUTPUT_OPCODE
726c68df
RS
88#define ASM_OUTPUT_OPCODE(STREAM, PTR) \
89{ \
90 if ((PTR)[0] == 'r' \
91 && (PTR)[1] == 'e' \
84d82177 92 && (PTR)[2] == 'p') \
726c68df 93 { \
84d82177
JVA
94 if ((PTR)[3] == 'z') \
95 { \
87da3843 96 fputs ("repe", (STREAM)); \
84d82177
JVA
97 (PTR) += 4; \
98 } \
99 else if ((PTR)[3] == 'n' && (PTR)[4] == 'z') \
100 { \
87da3843 101 fputs ("repne", (STREAM)); \
84d82177
JVA
102 (PTR) += 5; \
103 } \
726c68df 104 } \
95879c72
L
105 else \
106 ASM_OUTPUT_AVX_PREFIX ((STREAM), (PTR)); \
726c68df 107}
56c0e8fa
JVA
108
109/* Define macro used to output shift-double opcodes when the shift
110 count is in %cl. Some assemblers require %cl as an argument;
111 some don't.
112
892a2d68 113 GAS requires the %cl argument, so override i386/unix.h. */
56c0e8fa 114
dedaa36d
SC
115#undef SHIFT_DOUBLE_OMITS_COUNT
116#define SHIFT_DOUBLE_OMITS_COUNT 0
56c0e8fa 117
7e233208
RK
118/* The comment-starter string as GAS expects it. */
119#undef ASM_COMMENT_START
120#define ASM_COMMENT_START "#"
121
1bc7c5b6 122#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true