TIC6X Dependent Features
************************

TIC6X Options
=============

-march=ARCH
     Enable (only) instructions from architecture ARCH.  By default, all instructions are permitted.

     The following values of ARCH are accepted: c62x, c64x, c64x+, c67x, c67x+, c674x.

-mdsbt
-mno-dsbt
     The -mdsbt option causes the assembler to generate the Tag_ABI_DSBT attribute with a value of 1, indicating that the code is using DSBT addressing.  The -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.

-mpid=no
-mpid=near
-mpid=far
     The -mpid= option causes the assembler to generate the Tag_ABI_PID attribute with a value indicating the form of data addressing used by the code.  -mpid=no, the default, indicates position-dependent data addressing, -mpid=near indicates position-independent addressing with GOT accesses using near DP addressing, and -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.

-mpic
-mno-pic
     The -mpic option causes the assembler to generate the Tag_ABI_PIC attribute with a value of 1, indicating that the code is using position-independent code addressing,  The -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.

-mbig-endian
-mlittle-endian
     Generate code for the specified endianness.  The default is little-endian.

TIC6X Syntax
============

The presence of a ; on a line indicates the start of a comment that extends to the end of the current line.  If a # or * appears as the first character of a line, the whole line is treated as a comment.  Note that if a line starts with a # character then it can also be a logical line number directive (see Comments) or a preprocessor control command (see Preprocessing).

The @ character can be used instead of a newline to separate statements.

Instruction, register and functional unit names are case-insensitive. AS requires fully-specified functional unit names, such as .S1, .L1X or .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.

TIC6X Directives
================

Directives controlling the set of instructions accepted by the assembler have effect for instructions between the directive and any subsequent directive overriding it.

.arch ARCH
     This has the same effect as -march=ARCH.

.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. see CFI directives.

.c6xabi_attribute TAG, VALUE
     Set the C6000 EABI build attribute TAG to VALUE.

     The TAG is either an attribute number or one of Tag_ISA, Tag_ABI_wchar_t, Tag_ABI_stack_align_needed, Tag_ABI_stack_align_preserved, Tag_ABI_DSBT, Tag_ABI_PID, Tag_ABI_PIC, TAG_ABI_array_object_alignment, TAG_ABI_array_object_align_expected, Tag_ABI_compatibility and Tag_ABI_conformance.  The VALUE is either a number, "string", or number, "string" depending on the tag.

.ehtype SYMBOL
     Output an exception type table reference to SYMBOL.

.endp
     Marks the end of and exception table or function.  If preceeded by a .handlerdata directive then this also switched back to the previous text section.

.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 .endp directive will be added to the exception table entry.

     Must be preceded by a CFI block containing a .cfi_lsda directive.

.nocmp
     Disallow use of C64x+ compact instructions in the current text section.

.personalityindex INDEX
     Sets the personality routine for the current function to the ABI specified compact routine number INDEX

.personality NAME
     Sets the personality routine for the current function to NAME.

.scomm SYMBOL, SIZE, ALIGN
     Like .comm, creating a common symbol SYMBOL with size SIZE and alignment ALIGN, but unlike when using .comm, this symbol will be placed into the small BSS section by the linker.