2017-01-02 11:36:43 +08:00
|
|
|
@c Copyright (C) 2008-2017 Free Software Foundation, Inc.
|
2008-12-24 03:10:25 +08:00
|
|
|
@c This is part of the GAS manual.
|
|
|
|
@c For copying conditions, see the file as.texinfo.
|
|
|
|
|
|
|
|
@ifset GENERIC
|
|
|
|
@page
|
|
|
|
@node LM32-Dependent
|
|
|
|
@chapter LM32 Dependent Features
|
|
|
|
@end ifset
|
|
|
|
|
|
|
|
@ifclear GENERIC
|
|
|
|
@node Machine Dependencies
|
2016-12-21 16:43:52 +08:00
|
|
|
@chapter LM32 Dependent Features
|
2008-12-24 03:10:25 +08:00
|
|
|
@end ifclear
|
|
|
|
|
|
|
|
@cindex LM32 support
|
|
|
|
@menu
|
|
|
|
* LM32 Options:: Options
|
|
|
|
* LM32 Syntax:: Syntax
|
|
|
|
* LM32 Opcodes:: Opcodes
|
|
|
|
@end menu
|
|
|
|
|
|
|
|
@node LM32 Options
|
|
|
|
@section Options
|
|
|
|
@cindex LM32 options (none)
|
|
|
|
@cindex options for LM32 (none)
|
|
|
|
|
|
|
|
@table @code
|
|
|
|
|
|
|
|
@cindex @code{-mmultiply-enabled} command line option, LM32
|
|
|
|
@item -mmultiply-enabled
|
|
|
|
Enable multiply instructions.
|
|
|
|
|
|
|
|
@cindex @code{-mdivide-enabled} command line option, LM32
|
|
|
|
@item -mdivide-enabled
|
|
|
|
Enable divide instructions.
|
|
|
|
|
|
|
|
@cindex @code{-mbarrel-shift-enabled} command line option, LM32
|
|
|
|
@item -mbarrel-shift-enabled
|
|
|
|
Enable barrel-shift instructions.
|
|
|
|
|
|
|
|
@cindex @code{-msign-extend-enabled} command line option, LM32
|
|
|
|
@item -msign-extend-enabled
|
|
|
|
Enable sign extend instructions.
|
|
|
|
|
|
|
|
@cindex @code{-muser-enabled} command line option, LM32
|
|
|
|
@item -muser-enabled
|
|
|
|
Enable user defined instructions.
|
|
|
|
|
|
|
|
@cindex @code{-micache-enabled} command line option, LM32
|
|
|
|
@item -micache-enabled
|
|
|
|
Enable instruction cache related CSRs.
|
|
|
|
|
|
|
|
@cindex @code{-mdcache-enabled} command line option, LM32
|
|
|
|
@item -mdcache-enabled
|
|
|
|
Enable data cache related CSRs.
|
|
|
|
|
|
|
|
@cindex @code{-mbreak-enabled} command line option, LM32
|
|
|
|
@item -mbreak-enabled
|
|
|
|
Enable break instructions.
|
|
|
|
|
|
|
|
@cindex @code{-mall-enabled} command line option, LM32
|
|
|
|
@item -mall-enabled
|
|
|
|
Enable all instructions and CSRs.
|
|
|
|
|
|
|
|
@end table
|
|
|
|
|
|
|
|
|
|
|
|
@node LM32 Syntax
|
|
|
|
@section Syntax
|
|
|
|
@menu
|
|
|
|
* LM32-Regs:: Register Names
|
|
|
|
* LM32-Modifiers:: Relocatable Expression Modifiers
|
2011-01-18 21:37:39 +08:00
|
|
|
* LM32-Chars:: Special Characters
|
2008-12-24 03:10:25 +08:00
|
|
|
@end menu
|
|
|
|
|
|
|
|
@node LM32-Regs
|
|
|
|
@subsection Register Names
|
|
|
|
|
|
|
|
@cindex LM32 register names
|
|
|
|
@cindex register names, LM32
|
|
|
|
|
|
|
|
LM32 has 32 x 32-bit general purpose registers @samp{r0},
|
|
|
|
@samp{r1}, ... @samp{r31}.
|
|
|
|
|
|
|
|
The following aliases are defined: @samp{gp} - @samp{r26},
|
|
|
|
@samp{fp} - @samp{r27}, @samp{sp} - @samp{r28},
|
|
|
|
@samp{ra} - @samp{r29}, @samp{ea} - @samp{r30},
|
|
|
|
@samp{ba} - @samp{r31}.
|
|
|
|
|
|
|
|
LM32 has the following Control and Status Registers (CSRs).
|
|
|
|
|
|
|
|
@table @code
|
|
|
|
@item IE
|
|
|
|
Interrupt enable.
|
|
|
|
@item IM
|
|
|
|
Interrupt mask.
|
|
|
|
@item IP
|
|
|
|
Interrupt pending.
|
|
|
|
@item ICC
|
|
|
|
Instruction cache control.
|
|
|
|
@item DCC
|
|
|
|
Data cache control.
|
|
|
|
@item CC
|
|
|
|
Cycle counter.
|
|
|
|
@item CFG
|
|
|
|
Configuration.
|
|
|
|
@item EBA
|
|
|
|
Exception base address.
|
|
|
|
@item DC
|
|
|
|
Debug control.
|
|
|
|
@item DEBA
|
|
|
|
Debug exception base address.
|
|
|
|
@item JTX
|
|
|
|
JTAG transmit.
|
|
|
|
@item JRX
|
|
|
|
JTAG receive.
|
|
|
|
@item BP0
|
|
|
|
Breakpoint 0.
|
|
|
|
@item BP1
|
|
|
|
Breakpoint 1.
|
|
|
|
@item BP2
|
|
|
|
Breakpoint 2.
|
|
|
|
@item BP3
|
|
|
|
Breakpoint 3.
|
|
|
|
@item WP0
|
|
|
|
Watchpoint 0.
|
|
|
|
@item WP1
|
|
|
|
Watchpoint 1.
|
|
|
|
@item WP2
|
|
|
|
Watchpoint 2.
|
|
|
|
@item WP3
|
|
|
|
Watchpoint 3.
|
|
|
|
@end table
|
|
|
|
|
|
|
|
@node LM32-Modifiers
|
|
|
|
@subsection Relocatable Expression Modifiers
|
|
|
|
|
|
|
|
@cindex LM32 modifiers
|
|
|
|
@cindex syntax, LM32
|
|
|
|
|
|
|
|
The assembler supports several modifiers when using relocatable addresses
|
|
|
|
in LM32 instruction operands. The general syntax is the following:
|
|
|
|
|
|
|
|
@smallexample
|
|
|
|
modifier(relocatable-expression)
|
|
|
|
@end smallexample
|
|
|
|
|
|
|
|
@table @code
|
|
|
|
@cindex symbol modifiers
|
|
|
|
|
|
|
|
@item lo
|
|
|
|
|
|
|
|
This modifier allows you to use bits 0 through 15 of
|
|
|
|
an address expression as 16 bit relocatable expression.
|
|
|
|
|
|
|
|
@item hi
|
|
|
|
|
|
|
|
This modifier allows you to use bits 16 through 23 of an address expression
|
|
|
|
as 16 bit relocatable expression.
|
|
|
|
|
|
|
|
For example
|
|
|
|
|
|
|
|
@smallexample
|
|
|
|
ori r4, r4, lo(sym+10)
|
|
|
|
orhi r4, r4, hi(sym+10)
|
|
|
|
@end smallexample
|
|
|
|
|
|
|
|
@item gp
|
|
|
|
|
|
|
|
This modified creates a 16-bit relocatable expression that is
|
|
|
|
the offset of the symbol from the global pointer.
|
|
|
|
|
|
|
|
@smallexample
|
|
|
|
mva r4, gp(sym)
|
|
|
|
@end smallexample
|
|
|
|
|
|
|
|
@item got
|
|
|
|
|
|
|
|
This modifier places a symbol in the GOT and creates a 16-bit
|
|
|
|
relocatable expression that is the offset into the GOT of this
|
|
|
|
symbol.
|
|
|
|
|
|
|
|
@smallexample
|
|
|
|
lw r4, (gp+got(sym))
|
|
|
|
@end smallexample
|
|
|
|
|
|
|
|
@item gotofflo16
|
|
|
|
|
|
|
|
This modifier allows you to use the bits 0 through 15 of an
|
|
|
|
address which is an offset from the GOT.
|
|
|
|
|
|
|
|
@item gotoffhi16
|
|
|
|
|
|
|
|
This modifier allows you to use the bits 16 through 31 of an
|
|
|
|
address which is an offset from the GOT.
|
|
|
|
|
|
|
|
@smallexample
|
|
|
|
orhi r4, r4, gotoffhi16(lsym)
|
|
|
|
addi r4, r4, gotofflo16(lsym)
|
|
|
|
@end smallexample
|
|
|
|
|
|
|
|
@end table
|
|
|
|
|
2011-01-18 21:37:39 +08:00
|
|
|
@node LM32-Chars
|
|
|
|
@subsection Special Characters
|
|
|
|
|
|
|
|
@cindex line comment character, LM32
|
|
|
|
@cindex LM32 line comment character
|
|
|
|
The presence of a @samp{#} on a line indicates the start of a comment
|
|
|
|
that extends to the end of the current line. Note that if a line
|
|
|
|
starts with a @samp{#} character then it can also be a logical line
|
|
|
|
number directive (@pxref{Comments}) or a preprocessor
|
|
|
|
control command (@pxref{Preprocessing}).
|
|
|
|
|
|
|
|
@cindex line separator, LM32
|
|
|
|
@cindex statement separator, LM32
|
|
|
|
@cindex LM32 line separator
|
|
|
|
A semicolon (@samp{;}) can be used to separate multiple statements on
|
|
|
|
the same line.
|
|
|
|
|
2008-12-24 03:10:25 +08:00
|
|
|
@node LM32 Opcodes
|
|
|
|
@section Opcodes
|
|
|
|
|
|
|
|
@cindex LM32 opcode summary
|
|
|
|
@cindex opcode summary, LM32
|
|
|
|
@cindex mnemonics, LM32
|
|
|
|
@cindex instruction summary, LM32
|
|
|
|
For detailed information on the LM32 machine instruction set, see
|
|
|
|
@url{http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/}.
|
|
|
|
|
|
|
|
@code{@value{AS}} implements all the standard LM32 opcodes.
|