Merge branch 'vendor/NCURSES'
[dragonfly.git] / contrib / binutils-2.25 / gas / doc / c-lm32.texi
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.