SAM3X8E Atmel Corporation, SAM3X8E Datasheet - Page 109

no-image

SAM3X8E

Manufacturer Part Number
SAM3X8E
Description
Manufacturer
Atmel Corporation
Datasheets
11.12.8.2
11.12.8.3
11.12.8.4
11.12.8.5
11057A–ATARM–17-Feb-12
11057A–ATARM–17-Feb-12
try
MOV
LDREX
CMP
ITT
STREXEQ R0, R1, [LockAddr]
CMPEQ
BNE
....
Operation
Restrictions
Condition flags
Examples
R1, #0x1
R0, [LockAddr]
R0, #0
EQ
R0, #0
try
LDREX, LDREXB, and LDREXH load a word, byte, and halfword respectively from a memory
address.
STREX, STREXB, and STREXH attempt to store a word, byte, and halfword respectively to a
memory address. The address used in any Store-Exclusive instruction must be the same as the
address in the most recently executed Load-exclusive instruction. The value stored by the Store-
Exclusive instruction must also have the same data size as the value loaded by the preceding
Load-exclusive instruction. This means software must always use a Load-exclusive instruction
and a matching Store-Exclusive instruction to perform a synchronization operation, see
chronization primitives” on page 74
If an Store-Exclusive instruction performs the store, it writes 0 to its destination register. If it does
not perform the store, it writes 1 to its destination register. If the Store-Exclusive instruction
writes 0 to the destination register, it is guaranteed that no other process in the system has
accessed the memory location between the Load-exclusive and Store-Exclusive instructions.
For reasons of performance, keep the number of instructions between corresponding Load-
Exclusive and Store-Exclusive instruction to a minimum.
The result of executing a Store-Exclusive instruction to an address that is different from that
used in the preceding Load-Exclusive instruction is unpredictable.
In these instructions:
These instructions do not change the flags.
• do not use PC
• do not use SP for Rd and Rt
• for STREX, Rd must be different from both Rt and Rn
• the value of offset must be a multiple of four in the range 0-1020.
; Initialize the ‘lock taken’ value
; Load the lock value
; Is the lock free?
; IT instruction for STREXEQ and CMPEQ
; Try and claim the lock
; Did this succeed?
; No – try again
; Yes – we have the lock
SAM3X/A
SAM3X/A
“Syn-
109
109

Related parts for SAM3X8E