1 @c Copyright (C) 2010-2016 Free Software Foundation, Inc. 2 @c This is part of the GAS manual. 3 @c For copying conditions, see the file as.texinfo. 4 @c man end 5 @ifset GENERIC 6 @page 7 @node TIC6X-Dependent 8 @chapter TIC6X Dependent Features 9 @end ifset 10 @ifclear GENERIC 11 @node Machine Dependencies 12 @chapter TIC6X Dependent Features 13 @end ifclear 14 15 @cindex TIC6X support 16 @cindex TMS320C6X support 17 @menu 18 * TIC6X Options:: Options 19 * TIC6X Syntax:: Syntax 20 * TIC6X Directives:: Directives 21 @end menu 22 23 @node TIC6X Options 24 @section TIC6X Options 25 @cindex TIC6X options 26 @cindex options for TIC6X 27 28 @c man begin OPTIONS 29 @table @gcctabopt 30 31 @cindex @code{-march=} command line option, TIC6X 32 @item -march=@var{arch} 33 Enable (only) instructions from architecture @var{arch}. By default, 34 all instructions are permitted. 35 36 The following values of @var{arch} are accepted: @code{c62x}, 37 @code{c64x}, @code{c64x+}, @code{c67x}, @code{c67x+}, @code{c674x}. 38 39 @cindex @code{-mdsbt} command line option, TIC6X 40 @cindex @code{-mno-dsbt} command line option, TIC6X 41 @item -mdsbt 42 @itemx -mno-dsbt 43 The @option{-mdsbt} option causes the assembler to generate the 44 @code{Tag_ABI_DSBT} attribute with a value of 1, indicating that the 45 code is using DSBT addressing. The @option{-mno-dsbt} option, the 46 default, causes the tag to have a value of 0, indicating that the code 47 does not use DSBT addressing. The linker will emit a warning if 48 objects of different type (DSBT and non-DSBT) are linked together. 49 50 @cindex @code{-mpid=} command line option, TIC6X 51 @item -mpid=no 52 @itemx -mpid=near 53 @itemx -mpid=far 54 The @option{-mpid=} option causes the assembler to generate the 55 @code{Tag_ABI_PID} attribute with a value indicating the form of data 56 addressing used by the code. @option{-mpid=no}, the default, 57 indicates position-dependent data addressing, @option{-mpid=near} 58 indicates position-independent addressing with GOT accesses using near 59 DP addressing, and @option{-mpid=far} indicates position-independent 60 addressing with GOT accesses using far DP addressing. The linker will 61 emit a warning if objects built with different settings of this option 62 are linked together. 63 64 @cindex @code{-mpic} command line option, TIC6X 65 @cindex @code{-mno-pic} command line option, TIC6X 66 @item -mpic 67 @itemx -mno-pic 68 The @option{-mpic} option causes the assembler to generate the 69 @code{Tag_ABI_PIC} attribute with a value of 1, indicating that the 70 code is using position-independent code addressing, The 71 @code{-mno-pic} option, the default, causes the tag to have a value of 72 0, indicating position-dependent code addressing. The linker will 73 emit a warning if objects of different type (position-dependent and 74 position-independent) are linked together. 75 76 @cindex TIC6X big-endian output 77 @cindex TIC6X little-endian output 78 @cindex big-endian output, TIC6X 79 @cindex little-endian output, TIC6X 80 @item -mbig-endian 81 @itemx -mlittle-endian 82 Generate code for the specified endianness. The default is 83 little-endian. 84 85 @end table 86 @c man end 87 88 @node TIC6X Syntax 89 @section TIC6X Syntax 90 91 @cindex line comment character, TIC6X 92 @cindex TIC6X line comment character 93 The presence of a @samp{;} on a line indicates the start of a comment 94 that extends to the end of the current line. If a @samp{#} or 95 @samp{*} appears as the first character of a line, the whole line is 96 treated as a comment. Note that if a line starts with a @samp{#} 97 character then it can also be a logical line number directive 98 (@pxref{Comments}) or a preprocessor control command 99 (@pxref{Preprocessing}). 100 101 @cindex line separator, TIC6X 102 @cindex statement separator, TIC6X 103 @cindex TIC6X line separator 104 The @samp{@@} character can be used instead of a newline to separate 105 statements. 106 107 Instruction, register and functional unit names are case-insensitive. 108 @command{@value{AS}} requires fully-specified functional unit names, 109 such as @samp{.S1}, @samp{.L1X} or @samp{.D1T2}, on all instructions 110 using a functional unit. 111 112 For some instructions, there may be syntactic ambiguity between 113 register or functional unit names and the names of labels or other 114 symbols. To avoid this, enclose the ambiguous symbol name in 115 parentheses; register and functional unit names may not be enclosed in 116 parentheses. 117 118 @node TIC6X Directives 119 @section TIC6X Directives 120 121 @cindex machine directives, TIC6X 122 @cindex TIC6X machine directives 123 124 Directives controlling the set of instructions accepted by the 125 assembler have effect for instructions between the directive and any 126 subsequent directive overriding it. 127 128 @table @code 129 130 @cindex @code{.arch} directive, TIC6X 131 @item .arch @var{arch} 132 This has the same effect as @option{-march=@var{arch}}. 133 134 @cindex @code{.cantunwind} directive, TIC6X 135 @item .cantunwind 136 Prevents unwinding through the current function. No personality routine 137 or exception table data is required or permitted. 138 139 If this is not specified then frame unwinding information will be 140 constructed from CFI directives. @pxref{CFI directives}. 141 142 @cindex @code{.c6xabi_attribute} directive, TIC6X 143 @item .c6xabi_attribute @var{tag}, @var{value} 144 Set the C6000 EABI build attribute @var{tag} to @var{value}. 145 146 The @var{tag} is either an attribute number or one of 147 @code{Tag_ISA}, @code{Tag_ABI_wchar_t}, 148 @code{Tag_ABI_stack_align_needed}, 149 @code{Tag_ABI_stack_align_preserved}, @code{Tag_ABI_DSBT}, 150 @code{Tag_ABI_PID}, @code{Tag_ABI_PIC}, 151 @code{TAG_ABI_array_object_alignment}, 152 @code{TAG_ABI_array_object_align_expected}, 153 @code{Tag_ABI_compatibility} and @code{Tag_ABI_conformance}. The 154 @var{value} is either a @code{number}, @code{"string"}, or 155 @code{number, "string"} depending on the tag. 156 157 @cindex @code{.ehtype} directive, TIC6X 158 @item .ehtype @var{symbol} 159 Output an exception type table reference to @var{symbol}. 160 161 @cindex @code{.endp} directive, TIC6X 162 @item .endp 163 Marks the end of and exception table or function. If preceeded by a 164 @code{.handlerdata} directive then this also switched back to the previous 165 text section. 166 167 @cindex @code{.handlerdata} directive, TIC6X 168 @item .handlerdata 169 Marks the end of the current function, and the start of the exception table 170 entry for that function. Anything between this directive and the 171 @code{.endp} directive will be added to the exception table entry. 172 173 Must be preceded by a CFI block containing a @code{.cfi_lsda} directive. 174 175 @cindex @code{.nocmp} directive, TIC6X 176 @item .nocmp 177 Disallow use of C64x+ compact instructions in the current text 178 section. 179 180 @cindex @code{.personalityindex} directive, TIC6X 181 @item .personalityindex @var{index} 182 Sets the personality routine for the current function to the ABI specified 183 compact routine number @var{index} 184 185 @cindex @code{.personality} directive, TIC6X 186 @item .personality @var{name} 187 Sets the personality routine for the current function to @var{name}. 188 189 @cindex @code{.scomm} directive, TIC6X 190 @item .scomm @var{symbol}, @var{size}, @var{align} 191 Like @code{.comm}, creating a common symbol @var{symbol} with size @var{size} 192 and alignment @var{align}, but unlike when using @code{.comm}, this symbol 193 will be placed into the small BSS section by the linker. 194 195 @end table 196