Technical Support
On-Line Manuals
Assembler Reference
Conventions and feedback
Assembler command line options
ARM and Thumb Instructions
Instruction summary
Instruction width specifiers
Memory access instructions
General data processing instructions
Flexible second operand (Operand2)
Operand2 as a constant
Operand2 as a register with optional shift
Shift operations
Multiply instructions
Saturating instructions
Parallel instructions
Parallel add and subtract
Packing and unpacking instructions
Branch and control instructions
Coprocessor instructions
Miscellaneous instructions
ThumbEE instructions
Pseudo-instructions
Condition codes
ADD, SUB, RSB, ADC, SBC, and RSC
ADR (PC-relative)
ADR (register-relative)
ADRL pseudo-instruction
AND, ORR, EOR, BIC, and ORN
ASR, LSL, LSR, ROR, and RRX
B, BL, BX, BLX, and BXJ
BFC and BFI
BKPT
CBZ and CBNZ
CDP and CDP2
CHKA
CLREX
CLZ
CMP and CMN
CPS
CPY pseudo-instruction
DBG
DMB, DSB, and ISB
ENTERX and LEAVEX
ERET
HB, HBL, HBLP, and HBP
IT
LDC, LDC2, STC, and STC2
LDM and STM
LDR and STR (immediate offset)
LDR and STR (register offset)
LDR and STR, unprivileged
LDR (PC-relative)
LDR (register-relative)
LDR pseudo-instruction
LDREX and STREX
MAR and MRA
MCR, MCR2, MCRR, and MCRR2
MIA, MIAPH, and MIAxy
MOV and MVN
MOV32 pseudo--instruction
MOVT
MRC, MRC2, MRRC and MRRC2
MRS (system coprocessor register to ARM register)
MRS (PSR to general-purpose register)
MSR (ARM register to system coprocessor register)
MSR (general-purpose register to PSR)
MUL, MLA, and MLS
NEG pseudo-instruction
PKHBT and PKHTB
PLD, PLDW, and PLI
PUSH and POP
QADD, QSUB, QDADD, and QDSUB
REV, REV16, REVSH, and RBIT
RFE
SBFX and UBFX
SDIV and UDIV
SEL
SETEND
SEV, WFE, WFI, and YIELD
SMC
NOP
SMLAD and SMLSD
SMLALxy
SMLALD and SMLSLD
SMMUL, SMMLA, and SMMLS
SMUAD{X} and SMUSD{X}
SMULxy and SMLAxy
SMULWy and SMLAWy
SRS
SSAT and USAT
SSAT16 and USAT16
SUBS pc, lr
SVC
SWP and SWPB
SXT, SXTA, UXT, and UXTA
SYS
TBB and TBH
TST and TEQ
UMULL, UMLAL, SMULL, and SMLAL
UMAAL
UND pseudo-instruction
USAD8 and USADA8
VFP Programming
Directives Reference
|
Assembler Reference
DMB, DSB, and ISB
Data Memory Barrier, Data Synchronization Barrier, and Instruction
Synchronization Barrier. Syntax
DMB{cond} {option}
DSB{cond} {option}
ISB{cond} {option}
where: condis an optional condition code. optionis an optional limitation on the operation of the
hint.
DMB
Data Memory Barrier acts as a memory barrier. It ensures that
all explicit memory accesses that appear in program order before
the DMB instruction are observed before any explicit
memory accesses that appear in program order after the DMB instruction.
It does not affect the ordering of any other instructions executing
on the processor. Permitted values of option are: SYFull system DMB operation. This is the default and
can be omitted. STDMB
operation that waits only for stores to complete. ISHDMB
operation only to the inner shareable domain. ISHSTDMB
operation that waits only for stores to complete, and only to the
inner shareable domain. NSHDMB
operation only out to the point of unification. NSHSTDMB
operation that waits only for stores to complete and only out to
the point of unification. OSHDMB
operation only to the outer shareable domain. OSHSTDMB
operation that waits only for stores to complete, and only to the
outer shareable domain.
DSB
Data Synchronization Barrier acts as a special kind of memory
barrier. No instruction in program order after this instruction
executes until this instruction completes. This instruction completes
when: All explicit memory
accesses before this instruction complete. All Cache, Branch predictor and TLB maintenance
operations before this instruction complete.
Permitted values of option are: SYFull system DSB operation. This is the default and
can be omitted. STDSB
operation that waits only for stores to complete. ISHDSB
operation only to the inner shareable domain. ISHSTDSB
operation that waits only for stores to complete, and only to the
inner shareable domain. NSHDSB
operation only out to the point of unification. NSHSTDSB
operation that waits only for stores to complete and only out to
the point of unification. OSHDSB
operation only to the outer shareable domain. OSHSTDSB
operation that waits only for stores to complete, and only to the
outer shareable domain.
ISB
Instruction Synchronization Barrier flushes the pipeline in
the processor, so that all instructions following the ISB are
fetched from cache or memory, after the instruction has been completed. It
ensures that the effects of context altering operations, such as
changing the ASID, or completed TLB maintenance operations, or branch
predictor maintenance operations, in addition to all changes to
the CP15 registers, executed before the ISB instruction
are visible to the instructions fetched after the ISB. In addition, the ISB instruction ensures that
any branches that appear in program order after it are always written
into the branch prediction logic with the context that is visible
after the ISB instruction. This is required to ensure
correct execution of the instruction stream. Permitted values of option are: SYFull
system ISB operation. This is the default, and can be omitted.
NoteWhen the target architecture is ARMv7-M, an ISB instruction
is unpredictable if used
in an IT block and it is not the last instruction in the block. Alias
The following alternative values of option are
supported for DMB and DSB, but ARM recommends that
you do not use them: Architectures
These ARM and 32-bit Thumb instructions are available in ARMv7. There are no 16-bit Thumb versions of these instructions. See also
|