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