Home | History | Annotate | Download | only in doc
      1 @c Copyright (C) 2008-2014 Free Software Foundation, Inc.
      2 @c This is part of the GAS manual.
      3 @c For copying conditions, see the file as.texinfo.
      4 
      5 @ifset GENERIC
      6 @page
      7 @node LM32-Dependent
      8 @chapter LM32 Dependent Features
      9 @end ifset
     10 
     11 @ifclear GENERIC
     12 @node Machine Dependencies
     13 @chapter LM" Dependent Features
     14 @end ifclear
     15 
     16 @cindex LM32 support
     17 @menu
     18 * LM32 Options::              Options
     19 * LM32 Syntax::               Syntax
     20 * LM32 Opcodes::              Opcodes
     21 @end menu
     22 
     23 @node LM32 Options
     24 @section Options
     25 @cindex LM32 options (none)
     26 @cindex options for LM32 (none)
     27 
     28 @table @code
     29 
     30 @cindex @code{-mmultiply-enabled} command line option, LM32
     31 @item -mmultiply-enabled
     32 Enable multiply instructions.
     33 
     34 @cindex @code{-mdivide-enabled} command line option, LM32
     35 @item -mdivide-enabled
     36 Enable divide instructions.
     37 
     38 @cindex @code{-mbarrel-shift-enabled} command line option, LM32
     39 @item -mbarrel-shift-enabled
     40 Enable barrel-shift instructions.
     41 
     42 @cindex @code{-msign-extend-enabled} command line option, LM32
     43 @item -msign-extend-enabled
     44 Enable sign extend instructions.
     45 
     46 @cindex @code{-muser-enabled} command line option, LM32
     47 @item -muser-enabled
     48 Enable user defined instructions.
     49 
     50 @cindex @code{-micache-enabled} command line option, LM32
     51 @item -micache-enabled
     52 Enable instruction cache related CSRs.
     53 
     54 @cindex @code{-mdcache-enabled} command line option, LM32
     55 @item -mdcache-enabled
     56 Enable data cache related CSRs.
     57 
     58 @cindex @code{-mbreak-enabled} command line option, LM32
     59 @item -mbreak-enabled
     60 Enable break instructions.
     61 
     62 @cindex @code{-mall-enabled} command line option, LM32
     63 @item -mall-enabled
     64 Enable all instructions and CSRs.
     65 
     66 @end table
     67 
     68 
     69 @node LM32 Syntax
     70 @section Syntax
     71 @menu
     72 * LM32-Regs::                 Register Names
     73 * LM32-Modifiers::            Relocatable Expression Modifiers
     74 * LM32-Chars::                Special Characters
     75 @end menu
     76 
     77 @node LM32-Regs
     78 @subsection Register Names
     79 
     80 @cindex LM32 register names
     81 @cindex register names, LM32
     82 
     83 LM32 has 32 x 32-bit general purpose registers @samp{r0},
     84 @samp{r1}, ... @samp{r31}.
     85 
     86 The following aliases are defined: @samp{gp} - @samp{r26},
     87 @samp{fp} - @samp{r27}, @samp{sp} - @samp{r28},
     88 @samp{ra} - @samp{r29}, @samp{ea} - @samp{r30},
     89 @samp{ba} - @samp{r31}.
     90 
     91 LM32 has the following Control and Status Registers (CSRs).
     92 
     93 @table @code
     94 @item IE
     95 Interrupt enable.
     96 @item IM
     97 Interrupt mask.
     98 @item IP
     99 Interrupt pending.
    100 @item ICC
    101 Instruction cache control.
    102 @item DCC
    103 Data cache control.
    104 @item CC
    105 Cycle counter.
    106 @item CFG
    107 Configuration.
    108 @item EBA
    109 Exception base address.
    110 @item DC
    111 Debug control.
    112 @item DEBA
    113 Debug exception base address.
    114 @item JTX
    115 JTAG transmit.
    116 @item JRX
    117 JTAG receive.
    118 @item BP0
    119 Breakpoint 0.
    120 @item BP1
    121 Breakpoint 1.
    122 @item BP2
    123 Breakpoint 2.
    124 @item BP3
    125 Breakpoint 3.
    126 @item WP0
    127 Watchpoint 0.
    128 @item WP1
    129 Watchpoint 1.
    130 @item WP2
    131 Watchpoint 2.
    132 @item WP3
    133 Watchpoint 3.
    134 @end table
    135 
    136 @node LM32-Modifiers
    137 @subsection Relocatable Expression Modifiers
    138 
    139 @cindex LM32 modifiers
    140 @cindex syntax, LM32
    141 
    142 The assembler supports several modifiers when using relocatable addresses
    143 in LM32 instruction operands.  The general syntax is the following:
    144 
    145 @smallexample
    146 modifier(relocatable-expression)
    147 @end smallexample
    148 
    149 @table @code
    150 @cindex symbol modifiers
    151 
    152 @item lo
    153 
    154 This modifier allows you to use bits 0 through 15 of
    155 an address expression as 16 bit relocatable expression.
    156 
    157 @item hi
    158 
    159 This modifier allows you to use bits 16 through 23 of an address expression
    160 as 16 bit relocatable expression.
    161 
    162 For example
    163 
    164 @smallexample
    165 ori  r4, r4, lo(sym+10)
    166 orhi r4, r4, hi(sym+10)
    167 @end smallexample
    168 
    169 @item gp
    170 
    171 This modified creates a 16-bit relocatable expression that is
    172 the offset of the symbol from the global pointer.
    173 
    174 @smallexample
    175 mva r4, gp(sym)
    176 @end smallexample
    177 
    178 @item got
    179 
    180 This modifier places a symbol in the GOT and creates a 16-bit
    181 relocatable expression that is the offset into the GOT of this
    182 symbol.
    183 
    184 @smallexample
    185 lw r4, (gp+got(sym))
    186 @end smallexample
    187 
    188 @item gotofflo16
    189 
    190 This modifier allows you to use the bits 0 through 15 of an
    191 address which is an offset from the GOT.
    192 
    193 @item gotoffhi16
    194 
    195 This modifier allows you to use the bits 16 through 31 of an
    196 address which is an offset from the GOT.
    197 
    198 @smallexample
    199 orhi r4, r4, gotoffhi16(lsym)
    200 addi r4, r4, gotofflo16(lsym)
    201 @end smallexample
    202 
    203 @end table
    204 
    205 @node LM32-Chars
    206 @subsection Special Characters
    207 
    208 @cindex line comment character, LM32
    209 @cindex LM32 line comment character
    210 The presence of a @samp{#} on a line indicates the start of a comment
    211 that extends to the end of the current line.  Note that if a line
    212 starts with a @samp{#} character then it can also be a logical line
    213 number directive (@pxref{Comments}) or a preprocessor
    214 control command (@pxref{Preprocessing}).
    215 
    216 @cindex line separator, LM32
    217 @cindex statement separator, LM32
    218 @cindex LM32 line separator
    219 A semicolon (@samp{;}) can be used to separate multiple statements on
    220 the same line.
    221 
    222 @node LM32 Opcodes
    223 @section Opcodes
    224 
    225 @cindex LM32 opcode summary
    226 @cindex opcode summary, LM32
    227 @cindex mnemonics, LM32
    228 @cindex instruction summary, LM32
    229 For detailed information on the LM32 machine instruction set, see
    230 @url{http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/}.
    231 
    232 @code{@value{AS}} implements all the standard LM32 opcodes.
    233