xref: /netbsd-src/external/gpl3/binutils.old/dist/gas/doc/c-lm32.texi (revision e992f068c547fd6e84b3f104dc2340adcc955732)
1*e992f068Schristos@c Copyright (C) 2008-2022 Free Software Foundation, Inc.
216dce513Schristos@c This is part of the GAS manual.
316dce513Schristos@c For copying conditions, see the file as.texinfo.
416dce513Schristos
516dce513Schristos@ifset GENERIC
616dce513Schristos@page
716dce513Schristos@node LM32-Dependent
816dce513Schristos@chapter LM32 Dependent Features
916dce513Schristos@end ifset
1016dce513Schristos
1116dce513Schristos@ifclear GENERIC
1216dce513Schristos@node Machine Dependencies
13ede78133Schristos@chapter LM32 Dependent Features
1416dce513Schristos@end ifclear
1516dce513Schristos
1616dce513Schristos@cindex LM32 support
1716dce513Schristos@menu
1816dce513Schristos* LM32 Options::              Options
1916dce513Schristos* LM32 Syntax::               Syntax
2016dce513Schristos* LM32 Opcodes::              Opcodes
2116dce513Schristos@end menu
2216dce513Schristos
2316dce513Schristos@node LM32 Options
2416dce513Schristos@section Options
2516dce513Schristos@cindex LM32 options (none)
2616dce513Schristos@cindex options for LM32 (none)
2716dce513Schristos
2816dce513Schristos@table @code
2916dce513Schristos
30012573ebSchristos@cindex @code{-mmultiply-enabled} command-line option, LM32
3116dce513Schristos@item -mmultiply-enabled
3216dce513SchristosEnable multiply instructions.
3316dce513Schristos
34012573ebSchristos@cindex @code{-mdivide-enabled} command-line option, LM32
3516dce513Schristos@item -mdivide-enabled
3616dce513SchristosEnable divide instructions.
3716dce513Schristos
38012573ebSchristos@cindex @code{-mbarrel-shift-enabled} command-line option, LM32
3916dce513Schristos@item -mbarrel-shift-enabled
4016dce513SchristosEnable barrel-shift instructions.
4116dce513Schristos
42012573ebSchristos@cindex @code{-msign-extend-enabled} command-line option, LM32
4316dce513Schristos@item -msign-extend-enabled
4416dce513SchristosEnable sign extend instructions.
4516dce513Schristos
46012573ebSchristos@cindex @code{-muser-enabled} command-line option, LM32
4716dce513Schristos@item -muser-enabled
4816dce513SchristosEnable user defined instructions.
4916dce513Schristos
50012573ebSchristos@cindex @code{-micache-enabled} command-line option, LM32
5116dce513Schristos@item -micache-enabled
5216dce513SchristosEnable instruction cache related CSRs.
5316dce513Schristos
54012573ebSchristos@cindex @code{-mdcache-enabled} command-line option, LM32
5516dce513Schristos@item -mdcache-enabled
5616dce513SchristosEnable data cache related CSRs.
5716dce513Schristos
58012573ebSchristos@cindex @code{-mbreak-enabled} command-line option, LM32
5916dce513Schristos@item -mbreak-enabled
6016dce513SchristosEnable break instructions.
6116dce513Schristos
62012573ebSchristos@cindex @code{-mall-enabled} command-line option, LM32
6316dce513Schristos@item -mall-enabled
6416dce513SchristosEnable all instructions and CSRs.
6516dce513Schristos
6616dce513Schristos@end table
6716dce513Schristos
6816dce513Schristos
6916dce513Schristos@node LM32 Syntax
7016dce513Schristos@section Syntax
7116dce513Schristos@menu
7216dce513Schristos* LM32-Regs::                 Register Names
7316dce513Schristos* LM32-Modifiers::            Relocatable Expression Modifiers
7416dce513Schristos* LM32-Chars::                Special Characters
7516dce513Schristos@end menu
7616dce513Schristos
7716dce513Schristos@node LM32-Regs
7816dce513Schristos@subsection Register Names
7916dce513Schristos
8016dce513Schristos@cindex LM32 register names
8116dce513Schristos@cindex register names, LM32
8216dce513Schristos
8316dce513SchristosLM32 has 32 x 32-bit general purpose registers @samp{r0},
8416dce513Schristos@samp{r1}, ... @samp{r31}.
8516dce513Schristos
8616dce513SchristosThe following aliases are defined: @samp{gp} - @samp{r26},
8716dce513Schristos@samp{fp} - @samp{r27}, @samp{sp} - @samp{r28},
8816dce513Schristos@samp{ra} - @samp{r29}, @samp{ea} - @samp{r30},
8916dce513Schristos@samp{ba} - @samp{r31}.
9016dce513Schristos
9116dce513SchristosLM32 has the following Control and Status Registers (CSRs).
9216dce513Schristos
9316dce513Schristos@table @code
9416dce513Schristos@item IE
9516dce513SchristosInterrupt enable.
9616dce513Schristos@item IM
9716dce513SchristosInterrupt mask.
9816dce513Schristos@item IP
9916dce513SchristosInterrupt pending.
10016dce513Schristos@item ICC
10116dce513SchristosInstruction cache control.
10216dce513Schristos@item DCC
10316dce513SchristosData cache control.
10416dce513Schristos@item CC
10516dce513SchristosCycle counter.
10616dce513Schristos@item CFG
10716dce513SchristosConfiguration.
10816dce513Schristos@item EBA
10916dce513SchristosException base address.
11016dce513Schristos@item DC
11116dce513SchristosDebug control.
11216dce513Schristos@item DEBA
11316dce513SchristosDebug exception base address.
11416dce513Schristos@item JTX
11516dce513SchristosJTAG transmit.
11616dce513Schristos@item JRX
11716dce513SchristosJTAG receive.
11816dce513Schristos@item BP0
11916dce513SchristosBreakpoint 0.
12016dce513Schristos@item BP1
12116dce513SchristosBreakpoint 1.
12216dce513Schristos@item BP2
12316dce513SchristosBreakpoint 2.
12416dce513Schristos@item BP3
12516dce513SchristosBreakpoint 3.
12616dce513Schristos@item WP0
12716dce513SchristosWatchpoint 0.
12816dce513Schristos@item WP1
12916dce513SchristosWatchpoint 1.
13016dce513Schristos@item WP2
13116dce513SchristosWatchpoint 2.
13216dce513Schristos@item WP3
13316dce513SchristosWatchpoint 3.
13416dce513Schristos@end table
13516dce513Schristos
13616dce513Schristos@node LM32-Modifiers
13716dce513Schristos@subsection Relocatable Expression Modifiers
13816dce513Schristos
13916dce513Schristos@cindex LM32 modifiers
14016dce513Schristos@cindex syntax, LM32
14116dce513Schristos
14216dce513SchristosThe assembler supports several modifiers when using relocatable addresses
14316dce513Schristosin LM32 instruction operands.  The general syntax is the following:
14416dce513Schristos
14516dce513Schristos@smallexample
14616dce513Schristosmodifier(relocatable-expression)
14716dce513Schristos@end smallexample
14816dce513Schristos
14916dce513Schristos@table @code
15016dce513Schristos@cindex symbol modifiers
15116dce513Schristos
15216dce513Schristos@item lo
15316dce513Schristos
15416dce513SchristosThis modifier allows you to use bits 0 through 15 of
15516dce513Schristosan address expression as 16 bit relocatable expression.
15616dce513Schristos
15716dce513Schristos@item hi
15816dce513Schristos
15916dce513SchristosThis modifier allows you to use bits 16 through 23 of an address expression
16016dce513Schristosas 16 bit relocatable expression.
16116dce513Schristos
16216dce513SchristosFor example
16316dce513Schristos
16416dce513Schristos@smallexample
16516dce513Schristosori  r4, r4, lo(sym+10)
16616dce513Schristosorhi r4, r4, hi(sym+10)
16716dce513Schristos@end smallexample
16816dce513Schristos
16916dce513Schristos@item gp
17016dce513Schristos
17116dce513SchristosThis modified creates a 16-bit relocatable expression that is
17216dce513Schristosthe offset of the symbol from the global pointer.
17316dce513Schristos
17416dce513Schristos@smallexample
17516dce513Schristosmva r4, gp(sym)
17616dce513Schristos@end smallexample
17716dce513Schristos
17816dce513Schristos@item got
17916dce513Schristos
18016dce513SchristosThis modifier places a symbol in the GOT and creates a 16-bit
18116dce513Schristosrelocatable expression that is the offset into the GOT of this
18216dce513Schristossymbol.
18316dce513Schristos
18416dce513Schristos@smallexample
18516dce513Schristoslw r4, (gp+got(sym))
18616dce513Schristos@end smallexample
18716dce513Schristos
18816dce513Schristos@item gotofflo16
18916dce513Schristos
19016dce513SchristosThis modifier allows you to use the bits 0 through 15 of an
19116dce513Schristosaddress which is an offset from the GOT.
19216dce513Schristos
19316dce513Schristos@item gotoffhi16
19416dce513Schristos
19516dce513SchristosThis modifier allows you to use the bits 16 through 31 of an
19616dce513Schristosaddress which is an offset from the GOT.
19716dce513Schristos
19816dce513Schristos@smallexample
19916dce513Schristosorhi r4, r4, gotoffhi16(lsym)
20016dce513Schristosaddi r4, r4, gotofflo16(lsym)
20116dce513Schristos@end smallexample
20216dce513Schristos
20316dce513Schristos@end table
20416dce513Schristos
20516dce513Schristos@node LM32-Chars
20616dce513Schristos@subsection Special Characters
20716dce513Schristos
20816dce513Schristos@cindex line comment character, LM32
20916dce513Schristos@cindex LM32 line comment character
21016dce513SchristosThe presence of a @samp{#} on a line indicates the start of a comment
21116dce513Schristosthat extends to the end of the current line.  Note that if a line
21216dce513Schristosstarts with a @samp{#} character then it can also be a logical line
21316dce513Schristosnumber directive (@pxref{Comments}) or a preprocessor
21416dce513Schristoscontrol command (@pxref{Preprocessing}).
21516dce513Schristos
21616dce513Schristos@cindex line separator, LM32
21716dce513Schristos@cindex statement separator, LM32
21816dce513Schristos@cindex LM32 line separator
21916dce513SchristosA semicolon (@samp{;}) can be used to separate multiple statements on
22016dce513Schristosthe same line.
22116dce513Schristos
22216dce513Schristos@node LM32 Opcodes
22316dce513Schristos@section Opcodes
22416dce513Schristos
22516dce513Schristos@cindex LM32 opcode summary
22616dce513Schristos@cindex opcode summary, LM32
22716dce513Schristos@cindex mnemonics, LM32
22816dce513Schristos@cindex instruction summary, LM32
22916dce513SchristosFor detailed information on the LM32 machine instruction set, see
23016dce513Schristos@url{http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/}.
23116dce513Schristos
23216dce513Schristos@code{@value{AS}} implements all the standard LM32 opcodes.
233