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