Figure 2-14 Strexh Instruction - ARM ARM1176JZF-S Technical Reference Manual

Table of Contents

Advertisement

2.11.3
Load or Store Doubleword
ARM DDI 0301H
ID012310
STREXH
Figure 2-14 shows the format of the Store Register Halfword Exclusive, STREXH, instruction.
31
28 27
Cond
0 0 0 1 1 1 1 0
Syntax
STREXH{<cond>} <Rd>, <Rm>, [<Rn>]
Operation
if ConditionPassed(cond) then
processor_id = ExecutingProcessor()
if IsExclusiveLocal(processor_id) then
if Shared(Rn)==1 then
physical_address=TLB(Rn)
if IsExclusiveGlobal(physical_address,processor_id,2) then
Memory[Rn,2] = Rm
Rd = 0
ClearByAddress(physical_address,2)
else
Rd =1
else
Memory[Rn,2] = Rm
Rd = 0
else
Rd = 1
ClearExclusiveLocal(processor_id)
The LDREXD and STREXD instructions behave as follows:
The operands are considered as two words, that load or store to consecutive
word-addressed locations in memory.
Register restrictions are the same as LDRD and STRD. For STRD in ARM state, the
registers Rm and R(m+1) provide the value that is stored, where m is an even number.
The address in memory must be 64-bit aligned, address[2:0] == b000
When (A,U) == (0,1), (1,0) or (1,1) in CP15 register 1, the instruction generates alignment
faults if this condition is not met.
For more information, see Operation of unaligned accesses on page 4-13.
The transaction must be a single access or indivisible burst on bus widths < 64 bits
For AXI based systems, the exclusive access signal, AxPROT[4], must remain asserted
throughout the burst where AxSIZE < 0x3.
The LDREXD and STREXD instructions share the same data monitors as the LDREX and
STREX instructions, a local and a global monitor for each processor, for shared memory
support.
Copyright © 2004-2009 ARM Limited. All rights reserved.
Non-Confidential, Unrestricted Access
21 20 19
16
15
12 11
Rn
Rd
Programmer's Model
8
7
4 3
SBO
1 0 0 1

Figure 2-14 STREXH instruction

0
Rm
2-32

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents