Remove trailing white spaces on gas
[deliverable/binutils-gdb.git] / gas / doc / c-arc.texi
index 56822de14e652a95d9918ba63ebd437fbc1c40c2..ec7eff4e66c602d04efa8c78c50f63e83deaff7f 100644 (file)
@@ -1,4 +1,4 @@
-@c Copyright 2000, 2001 Free Software Foundation, Inc.
+@c Copyright 2000, 2001, 2005, 2006, 2007, 2011 Free Software Foundation, Inc.
 @c This is part of the GAS manual.
 @c For copying conditions, see the file as.texinfo.
 
@@ -13,7 +13,7 @@
 @chapter ARC Dependent Features
 @end ifclear
 
-@set ARC_CORE_DEFAULT 5
+@set ARC_CORE_DEFAULT 6
 
 @cindex ARC support
 @menu
@@ -34,7 +34,7 @@
 
 @cindex @code{-marc[5|6|7|8]} command line option, ARC
 @item -marc[5|6|7|8]
-This option selects the core processor variant. Using
+This option selects the core processor variant.  Using
 @code{-marc} is the same as @code{-marc@value{ARC_CORE_DEFAULT}}, which
 is also the default.
 
@@ -46,8 +46,8 @@ Base instruction set.
 
 @cindex @code{arc6} arc6, ARC
 @item arc6
-Jump-and-link (jl) instruction. No requirement of an instruction between
-setting flags and conditional jump. For example:
+Jump-and-link (jl) instruction.  No requirement of an instruction between
+setting flags and conditional jump.  For example:
 
 @smallexample
   mov.f r0,r1
@@ -80,7 +80,6 @@ default.
 
 @end table
 
-
 @node ARC Syntax
 @section Syntax
 @menu
@@ -91,9 +90,18 @@ default.
 @node ARC-Chars
 @subsection Special Characters
 
-@cindex ARC special characters
-@cindex special characters, ARC
-*TODO*
+@cindex line comment character, ARC
+@cindex ARC 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.  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, ARC
+@cindex statement separator, ARC
+@cindex ARC line separator
+The ARC assembler does not support a line separator character.
 
 @node ARC-Regs
 @subsection Register Names
@@ -137,36 +145,161 @@ machine directives:
 
 @cindex @code{extAuxRegister} directive, ARC
 @item .extAuxRegister @var{name},@var{address},@var{mode}
-*TODO*
+The ARCtangent A4 has extensible auxiliary register space.  The
+auxiliary registers can be defined in the assembler source code by
+using this directive.  The first parameter is the @var{name} of the
+new auxiallry register.  The second parameter is the @var{address} of
+the register in the auxiliary register memory map for the variant of
+the ARC.  The third parameter specifies the @var{mode} in which the
+register can be operated is and it can be one of:
+
+@table @code
+@item r          (readonly)
+@item w          (write only)
+@item r|w        (read or write)
+@end table
+
+For example:
 
 @smallexample
   .extAuxRegister mulhi,0x12,w
 @end smallexample
 
+This specifies an extension auxiliary register called @emph{mulhi}
+which is at address 0x12 in the memory space and which is only
+writable.
+
 @cindex @code{extCondCode} directive, ARC
 @item .extCondCode @var{suffix},@var{value}
-*TODO*
+The condition codes on the ARCtangent A4 are extensible and can be
+specified by means of this assembler directive.  They are specified
+by the suffix and the value for the condition code.  They can be used to
+specify extra condition codes with any values.  For example:
 
 @smallexample
   .extCondCode is_busy,0x14
+
+   add.is_busy  r1,r2,r3
+   bis_busy     _main
 @end smallexample
 
 @cindex @code{extCoreRegister} directive, ARC
 @item .extCoreRegister @var{name},@var{regnum},@var{mode},@var{shortcut}
-*TODO*
+Specifies an extension core register @var{name} for the application.
+This allows a register @var{name} with a valid @var{regnum} between 0
+and 60, with the following as valid values for @var{mode}
+
+@table @samp
+@item @emph{r}   (readonly)
+@item @emph{w}   (write only)
+@item @emph{r|w} (read or write)
+@end table
+
+
+The other parameter gives a description of the register having a
+@var{shortcut} in the pipeline.  The valid values are:
+
+@table @code
+@item can_shortcut
+@item cannot_shortcut
+@end table
+
+For example:
 
 @smallexample
   .extCoreRegister mlo,57,r,can_shortcut
 @end smallexample
 
+This defines an extension core register mlo with the value 57 which
+can shortcut the pipeline.
+
 @cindex @code{extInstruction} directive, ARC
 @item .extInstruction @var{name},@var{opcode},@var{subopcode},@var{suffixclass},@var{syntaxclass}
-*TODO*
+The ARCtangent A4 allows the user to specify extension instructions.
+The extension instructions are not macros.  The assembler creates
+encodings for use of these instructions according to the specification
+by the user.  The parameters are:
+
+@table @bullet
+@item @var{name}
+Name of the extension instruction
+
+@item @var{opcode}
+Opcode to be used. (Bits 27:31 in the encoding).  Valid values
+0x10-0x1f or 0x03
+
+@item @var{subopcode}
+Subopcode to be used.  Valid values are from 0x09-0x3f.  However the
+correct value also depends on @var{syntaxclass}
+
+@item @var{suffixclass}
+Determines the kinds of suffixes to be allowed.  Valid values are
+@code{SUFFIX_NONE}, @code{SUFFIX_COND},
+@code{SUFFIX_FLAG} which indicates the absence or presence of
+conditional suffixes and flag setting by the extension instruction.
+It is also possible to specify that an instruction sets the flags and
+is conditional by using @code{SUFFIX_CODE} | @code{SUFFIX_FLAG}.
+
+@item @var{syntaxclass}
+Determines the syntax class for the instruction.  It can have the
+following values:
+
+@table @code
+@item @code{SYNTAX_2OP}:
+2 Operand Instruction
+@item @code{SYNTAX_3OP}:
+3 Operand Instruction
+@end table
+
+In addition there could be modifiers for the syntax class as described
+below:
+
+@itemize @minus
+Syntax Class Modifiers are:
+
+@item @code{OP1_MUST_BE_IMM}:
+Modifies syntax class SYNTAX_3OP,  specifying that the first operand
+of a three-operand instruction must be an immediate (i.e., the result
+is discarded).  OP1_MUST_BE_IMM is used by bitwise ORing it with
+SYNTAX_3OP as given in the example below.  This could usually be used
+to set the flags using specific instructions and not retain results.
+
+@item @code{OP1_IMM_IMPLIED}:
+Modifies syntax class SYNTAX_20P, it specifies that there is an
+implied immediate destination operand which does not appear in the
+syntax.  For example, if the source code contains an instruction like:
+
+@smallexample
+inst r1,r2
+@end smallexample
+
+it really means that the first argument is an implied immediate (that
+is, the result is discarded).  This is the same as though the source
+code were: inst 0,r1,r2.  You use OP1_IMM_IMPLIED by bitwise ORing it
+with SYNTAX_20P.
+
+@end itemize
+@end table
+
+For example, defining 64-bit multiplier with immediate operands:
 
 @smallexample
-  .extInstruction mul64,0x14,0x0,SUFFIX_COND,SYNTAX_3OP|OP1_MUST_BE_IMM
+.extInstruction mp64,0x14,0x0,SUFFIX_COND | SUFFIX_FLAG ,
+                SYNTAX_3OP|OP1_MUST_BE_IMM
 @end smallexample
 
+The above specifies an extension instruction called mp64 which has 3 operands,
+sets the flags, can be used with a condition code, for which the
+first operand is an immediate.  (Equivalent to discarding the result
+of the operation).
+
+@smallexample
+ .extInstruction mul64,0x14,0x00,SUFFIX_COND, SYNTAX_2OP|OP1_IMM_IMPLIED
+@end smallexample
+
+This describes a 2 operand instruction with an implicit first
+immediate operand.  The result of this operation would be discarded.
+
 @cindex @code{half} directive, ARC
 @item .half @var{expressions}
 *TODO*
@@ -204,4 +337,4 @@ between the two - even for the implicit default core version
 @cindex opcodes for ARC
 
 For information on the ARC instruction set, see @cite{ARC Programmers
-Reference Manual}, ARC Cores Ltd.
+Reference Manual}, ARC International (www.arc.com)
This page took 0.025698 seconds and 4 git commands to generate.