| 1 | @c Copyright (C) 2010-2020 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 preceded 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 |