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