xref: /netbsd-src/external/gpl3/binutils/dist/gas/doc/c-tic6x.texi (revision c7c727fae85036860d5bb848f2730ff419e2b060)
1@c Copyright 2010 Free Software Foundation, Inc.
2@c This is part of the GAS manual.
3@c For copying conditions, see the file as.texinfo.
4@ifset GENERIC
5@page
6@node TIC6X-Dependent
7@chapter TIC6X Dependent Features
8@end ifset
9@ifclear GENERIC
10@node Machine Dependencies
11@chapter TIC6X Dependent Features
12@end ifclear
13
14@cindex TIC6X support
15@cindex TMS320C6X support
16@menu
17* TIC6X Options::            Options
18* TIC6X Syntax::             Syntax
19* TIC6X Directives::         Directives
20@end menu
21
22@node TIC6X Options
23@section TIC6X Options
24@cindex TIC6X options
25@cindex options for TIC6X
26
27@table @code
28
29@cindex @code{-march=} command line option, TIC6X
30@item -march=@var{arch}
31Enable (only) instructions from architecture @var{arch}.  By default,
32all instructions are permitted.
33
34The following values of @var{arch} are accepted: @code{c62x},
35@code{c64x}, @code{c64x+}, @code{c67x}, @code{c67x+}, @code{c674x}.
36
37@cindex @code{-matomic} command line option, TIC6X
38@cindex @code{-mno-atomic} command line option, TIC6X
39@item -matomic
40@itemx -mno-atomic
41Enable or disable the optional C64x+ atomic operation instructions.
42By default, they are enabled if no @option{-march} option is given, or
43if an architecture is specified with @option{-march} that implies
44these instructions are present (currently, there are no such
45architectures); they are disabled if an architecture is specified with
46@option{-march} on which the instructions are optional or not
47present.  This option overrides such a default from the architecture,
48independent of the order in which the @option{-march} or
49@option{-matomic} or @option{-mno-atomic} options are passed.
50
51@cindex @code{-mdsbt} command line option, TIC6X
52@cindex @code{-mno-dsbt} command line option, TIC6X
53@item -mdsbt
54@itemx -mno-dsbt
55The @option{-mdsbt} option causes the assembler to generate the
56@code{Tag_ABI_DSBT} attribute with a value of 1, indicating that the
57code is using DSBT addressing.  The @option{-mno-dsbt} option, the
58default, causes the tag to have a value of 0, indicating that the code
59does not use DSBT addressing.  The linker will emit a warning if
60objects of different type (DSBT and non-DSBT) are linked together.
61
62@cindex @code{-mpid=} command line option, TIC6X
63@item -mpid=no
64@itemx -mpid=near
65@itemx -mpid=far
66The @option{-mpid=} option causes the assembler to generate the
67@code{Tag_ABI_PID} attribute with a value indicating the form of data
68addressing used by the code.  @option{-mpid=no}, the default,
69indicates position-dependent data addressing, @option{-mpid=near}
70indicates position-independent addressing with GOT accesses using near
71DP addressing, and @option{-mpid=far} indicates position-independent
72addressing with GOT accesses using far DP addressing.  The linker will
73emit a warning if objects built with different settings of this option
74are linked together.
75
76@cindex @code{-mpic} command line option, TIC6X
77@cindex @code{-mno-pic} command line option, TIC6X
78@item -mpic
79@itemx -mno-pic
80The @option{-mpic} option causes the assembler to generate the
81@code{Tag_ABI_PIC} attribute with a value of 1, indicating that the
82code is using position-independent code addressing,  The
83@code{-mno-pic} option, the default, causes the tag to have a value of
840, indicating position-dependent code addressing.  The linker will
85emit a warning if objects of different type (position-dependent and
86position-independent) are linked together.
87
88@cindex TIC6X big-endian output
89@cindex TIC6X little-endian output
90@cindex big-endian output, TIC6X
91@cindex little-endian output, TIC6X
92@item -mbig-endian
93@itemx -mlittle-endian
94Generate code for the specified endianness.  The default is
95little-endian.
96
97@end table
98
99@node TIC6X Syntax
100@section TIC6X Syntax
101
102@cindex line comment character, TIC6X
103@cindex TIC6X line comment character
104The presence of a @samp{;} on a line indicates the start of a comment
105that extends to the end of the current line.  If a @samp{#} or
106@samp{*} appears as the first character of a line, the whole line is
107treated as a comment.
108
109@cindex line separator, TIC6X
110@cindex statement separator, TIC6X
111@cindex TIC6X line separator
112The @samp{@@} character can be used instead of a newline to separate
113statements.
114
115Instruction, register and functional unit names are case-insensitive.
116@command{@value{AS}} requires fully-specified functional unit names,
117such as @samp{.S1}, @samp{.L1X} or @samp{.D1T2}, on all instructions
118using a functional unit.
119
120For some instructions, there may be syntactic ambiguity between
121register or functional unit names and the names of labels or other
122symbols.  To avoid this, enclose the ambiguous symbol name in
123parentheses; register and functional unit names may not be enclosed in
124parentheses.
125
126@node TIC6X Directives
127@section TIC6X Directives
128
129@cindex machine directives, TIC6X
130@cindex TIC6X machine directives
131
132Directives controlling the set of instructions accepted by the
133assembler have effect for instructions between the directive and any
134subsequent directive overriding it.
135
136@table @code
137
138@cindex @code{.arch} directive, TIC6X
139@item .arch @var{arch}
140This has the same effect as @option{-march=@var{arch}}.
141
142@cindex @code{.atomic} directive, TIC6X
143@cindex @code{.noatomic} directive, TIC6X
144@item .atomic
145@itemx .noatomic
146These have the same effects as @option{-matomic} and
147@option{-mno-atomic}.
148
149@cindex @code{.c6xabi_attribute} directive, TIC6X
150@item .c6xabi_attribute @var{tag}, @var{value}
151Set the C6000 EABI build attribute @var{tag} to @var{value}.
152
153The @var{tag} is either an attribute number or one of
154@code{Tag_ISA}, @code{Tag_ABI_wchar_t},
155@code{Tag_ABI_stack_align_needed},
156@code{Tag_ABI_stack_align_preserved}, @code{Tag_ABI_DSBT},
157@code{Tag_ABI_PID}, @code{Tag_ABI_PIC},
158@code{TAG_ABI_array_object_alignment},
159@code{TAG_ABI_array_object_align_expected},
160@code{Tag_ABI_compatibility} and @code{Tag_ABI_conformance}.  The
161@var{value} is either a @code{number}, @code{"string"}, or
162@code{number, "string"} depending on the tag.
163
164@cindex @code{.nocmp} directive, TIC6X
165@item .nocmp
166Disallow use of C64x+ compact instructions in the current text
167section.
168
169@end table
170