| @c Copyright (C) 2010-2021 Free Software Foundation, Inc. |
| @c This is part of the GAS manual. |
| @c For copying conditions, see the file as.texinfo. |
| @c man end |
| @ifset GENERIC |
| @page |
| @node TIC6X-Dependent |
| @chapter TIC6X Dependent Features |
| @end ifset |
| @ifclear GENERIC |
| @node Machine Dependencies |
| @chapter TIC6X Dependent Features |
| @end ifclear |
| |
| @cindex TIC6X support |
| @cindex TMS320C6X support |
| @menu |
| * TIC6X Options:: Options |
| * TIC6X Syntax:: Syntax |
| * TIC6X Directives:: Directives |
| @end menu |
| |
| @node TIC6X Options |
| @section TIC6X Options |
| @cindex TIC6X options |
| @cindex options for TIC6X |
| |
| @c man begin OPTIONS |
| @table @gcctabopt |
| |
| @cindex @code{-march=} command-line option, TIC6X |
| @item -march=@var{arch} |
| Enable (only) instructions from architecture @var{arch}. By default, |
| all instructions are permitted. |
| |
| The following values of @var{arch} are accepted: @code{c62x}, |
| @code{c64x}, @code{c64x+}, @code{c67x}, @code{c67x+}, @code{c674x}. |
| |
| @cindex @code{-mdsbt} command-line option, TIC6X |
| @cindex @code{-mno-dsbt} command-line option, TIC6X |
| @item -mdsbt |
| @itemx -mno-dsbt |
| The @option{-mdsbt} option causes the assembler to generate the |
| @code{Tag_ABI_DSBT} attribute with a value of 1, indicating that the |
| code is using DSBT addressing. The @option{-mno-dsbt} option, the |
| default, causes the tag to have a value of 0, indicating that the code |
| does not use DSBT addressing. The linker will emit a warning if |
| objects of different type (DSBT and non-DSBT) are linked together. |
| |
| @cindex @code{-mpid=} command-line option, TIC6X |
| @item -mpid=no |
| @itemx -mpid=near |
| @itemx -mpid=far |
| The @option{-mpid=} option causes the assembler to generate the |
| @code{Tag_ABI_PID} attribute with a value indicating the form of data |
| addressing used by the code. @option{-mpid=no}, the default, |
| indicates position-dependent data addressing, @option{-mpid=near} |
| indicates position-independent addressing with GOT accesses using near |
| DP addressing, and @option{-mpid=far} indicates position-independent |
| addressing with GOT accesses using far DP addressing. The linker will |
| emit a warning if objects built with different settings of this option |
| are linked together. |
| |
| @cindex @code{-mpic} command-line option, TIC6X |
| @cindex @code{-mno-pic} command-line option, TIC6X |
| @item -mpic |
| @itemx -mno-pic |
| The @option{-mpic} option causes the assembler to generate the |
| @code{Tag_ABI_PIC} attribute with a value of 1, indicating that the |
| code is using position-independent code addressing, The |
| @code{-mno-pic} option, the default, causes the tag to have a value of |
| 0, indicating position-dependent code addressing. The linker will |
| emit a warning if objects of different type (position-dependent and |
| position-independent) are linked together. |
| |
| @cindex TIC6X big-endian output |
| @cindex TIC6X little-endian output |
| @cindex big-endian output, TIC6X |
| @cindex little-endian output, TIC6X |
| @item -mbig-endian |
| @itemx -mlittle-endian |
| Generate code for the specified endianness. The default is |
| little-endian. |
| |
| @end table |
| @c man end |
| |
| @node TIC6X Syntax |
| @section TIC6X Syntax |
| |
| @cindex line comment character, TIC6X |
| @cindex TIC6X line comment character |
| The presence of a @samp{;} on a line indicates the start of a comment |
| that extends to the end of the current line. If a @samp{#} or |
| @samp{*} appears as the first character of a line, the whole line is |
| treated as a comment. Note that if a line starts with a @samp{#} |
| character then it can also be a logical line number directive |
| (@pxref{Comments}) or a preprocessor control command |
| (@pxref{Preprocessing}). |
| |
| @cindex line separator, TIC6X |
| @cindex statement separator, TIC6X |
| @cindex TIC6X line separator |
| The @samp{@@} character can be used instead of a newline to separate |
| statements. |
| |
| Instruction, register and functional unit names are case-insensitive. |
| @command{@value{AS}} requires fully-specified functional unit names, |
| such as @samp{.S1}, @samp{.L1X} or @samp{.D1T2}, on all instructions |
| using a functional unit. |
| |
| For some instructions, there may be syntactic ambiguity between |
| register or functional unit names and the names of labels or other |
| symbols. To avoid this, enclose the ambiguous symbol name in |
| parentheses; register and functional unit names may not be enclosed in |
| parentheses. |
| |
| @node TIC6X Directives |
| @section TIC6X Directives |
| |
| @cindex machine directives, TIC6X |
| @cindex TIC6X machine directives |
| |
| Directives controlling the set of instructions accepted by the |
| assembler have effect for instructions between the directive and any |
| subsequent directive overriding it. |
| |
| @table @code |
| |
| @cindex @code{.arch} directive, TIC6X |
| @item .arch @var{arch} |
| This has the same effect as @option{-march=@var{arch}}. |
| |
| @cindex @code{.cantunwind} directive, TIC6X |
| @item .cantunwind |
| Prevents unwinding through the current function. No personality routine |
| or exception table data is required or permitted. |
| |
| If this is not specified then frame unwinding information will be |
| constructed from CFI directives. @pxref{CFI directives}. |
| |
| @cindex @code{.c6xabi_attribute} directive, TIC6X |
| @item .c6xabi_attribute @var{tag}, @var{value} |
| Set the C6000 EABI build attribute @var{tag} to @var{value}. |
| |
| The @var{tag} is either an attribute number or one of |
| @code{Tag_ISA}, @code{Tag_ABI_wchar_t}, |
| @code{Tag_ABI_stack_align_needed}, |
| @code{Tag_ABI_stack_align_preserved}, @code{Tag_ABI_DSBT}, |
| @code{Tag_ABI_PID}, @code{Tag_ABI_PIC}, |
| @code{TAG_ABI_array_object_alignment}, |
| @code{TAG_ABI_array_object_align_expected}, |
| @code{Tag_ABI_compatibility} and @code{Tag_ABI_conformance}. The |
| @var{value} is either a @code{number}, @code{"string"}, or |
| @code{number, "string"} depending on the tag. |
| |
| @cindex @code{.ehtype} directive, TIC6X |
| @item .ehtype @var{symbol} |
| Output an exception type table reference to @var{symbol}. |
| |
| @cindex @code{.endp} directive, TIC6X |
| @item .endp |
| Marks the end of and exception table or function. If preceded by a |
| @code{.handlerdata} directive then this also switched back to the previous |
| text section. |
| |
| @cindex @code{.handlerdata} directive, TIC6X |
| @item .handlerdata |
| Marks the end of the current function, and the start of the exception table |
| entry for that function. Anything between this directive and the |
| @code{.endp} directive will be added to the exception table entry. |
| |
| Must be preceded by a CFI block containing a @code{.cfi_lsda} directive. |
| |
| @cindex @code{.nocmp} directive, TIC6X |
| @item .nocmp |
| Disallow use of C64x+ compact instructions in the current text |
| section. |
| |
| @cindex @code{.personalityindex} directive, TIC6X |
| @item .personalityindex @var{index} |
| Sets the personality routine for the current function to the ABI specified |
| compact routine number @var{index} |
| |
| @cindex @code{.personality} directive, TIC6X |
| @item .personality @var{name} |
| Sets the personality routine for the current function to @var{name}. |
| |
| @cindex @code{.scomm} directive, TIC6X |
| @item .scomm @var{symbol}, @var{size}, @var{align} |
| Like @code{.comm}, creating a common symbol @var{symbol} with size @var{size} |
| and alignment @var{align}, but unlike when using @code{.comm}, this symbol |
| will be placed into the small BSS section by the linker. |
| |
| @end table |