Home | History | Annotate | Download | only in doc
      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