mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-10 19:14:58 -06:00
target/xtensa: implement exclusive access option
The Exclusive Instructions provide a general-purpose mechanism for atomic updates of memory-based synchronization variables that can be used for exclusion algorithms. Use cmpxchg-based implementation that is sufficient for the typical use of exclusive access in atomic operations. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
98736654f3
commit
b345e14053
7 changed files with 200 additions and 2 deletions
48
tests/tcg/xtensa/test_exclusive.S
Normal file
48
tests/tcg/xtensa/test_exclusive.S
Normal file
|
@ -0,0 +1,48 @@
|
|||
#include "macros.inc"
|
||||
|
||||
test_suite exclusive
|
||||
|
||||
#if XCHAL_HAVE_EXCLUSIVE
|
||||
|
||||
test exclusive_nowrite
|
||||
movi a2, 0x29
|
||||
wsr a2, atomctl
|
||||
clrex
|
||||
movi a2, 1f
|
||||
movi a3, 1
|
||||
s32ex a3, a2
|
||||
getex a3
|
||||
assert eqi, a3, 0
|
||||
l32i a3, a2, 0
|
||||
assert eqi, a3, 3
|
||||
|
||||
.data
|
||||
.align 4
|
||||
1:
|
||||
.word 3
|
||||
.text
|
||||
test_end
|
||||
|
||||
test exclusive_write
|
||||
movi a2, 0x29
|
||||
wsr a2, atomctl
|
||||
movi a2, 1f
|
||||
l32ex a3, a2
|
||||
assert eqi, a3, 3
|
||||
movi a3, 2
|
||||
s32ex a3, a2
|
||||
getex a3
|
||||
assert eqi, a3, 1
|
||||
l32i a3, a2, 0
|
||||
assert eqi, a3, 2
|
||||
|
||||
.data
|
||||
.align 4
|
||||
1:
|
||||
.word 3
|
||||
.text
|
||||
test_end
|
||||
|
||||
#endif
|
||||
|
||||
test_suite_end
|
Loading…
Add table
Add a link
Reference in a new issue