xref: /qemu/tests/tcg/xtensa/test_exclusive.S (revision 293c76cb48332d2bbd70bd975dc60ee3650b3170)
1*b345e140SMax Filippov#include "macros.inc"
2*b345e140SMax Filippov
3*b345e140SMax Filippovtest_suite exclusive
4*b345e140SMax Filippov
5*b345e140SMax Filippov#if XCHAL_HAVE_EXCLUSIVE
6*b345e140SMax Filippov
7*b345e140SMax Filippovtest exclusive_nowrite
8*b345e140SMax Filippov    movi    a2, 0x29
9*b345e140SMax Filippov    wsr     a2, atomctl
10*b345e140SMax Filippov    clrex
11*b345e140SMax Filippov    movi    a2, 1f
12*b345e140SMax Filippov    movi    a3, 1
13*b345e140SMax Filippov    s32ex   a3, a2
14*b345e140SMax Filippov    getex   a3
15*b345e140SMax Filippov    assert  eqi, a3, 0
16*b345e140SMax Filippov    l32i    a3, a2, 0
17*b345e140SMax Filippov    assert  eqi, a3, 3
18*b345e140SMax Filippov
19*b345e140SMax Filippov.data
20*b345e140SMax Filippov.align 4
21*b345e140SMax Filippov1:
22*b345e140SMax Filippov    .word   3
23*b345e140SMax Filippov.text
24*b345e140SMax Filippovtest_end
25*b345e140SMax Filippov
26*b345e140SMax Filippovtest exclusive_write
27*b345e140SMax Filippov    movi    a2, 0x29
28*b345e140SMax Filippov    wsr     a2, atomctl
29*b345e140SMax Filippov    movi    a2, 1f
30*b345e140SMax Filippov    l32ex   a3, a2
31*b345e140SMax Filippov    assert  eqi, a3, 3
32*b345e140SMax Filippov    movi    a3, 2
33*b345e140SMax Filippov    s32ex   a3, a2
34*b345e140SMax Filippov    getex   a3
35*b345e140SMax Filippov    assert  eqi, a3, 1
36*b345e140SMax Filippov    l32i    a3, a2, 0
37*b345e140SMax Filippov    assert  eqi, a3, 2
38*b345e140SMax Filippov
39*b345e140SMax Filippov.data
40*b345e140SMax Filippov.align 4
41*b345e140SMax Filippov1:
42*b345e140SMax Filippov    .word   3
43*b345e140SMax Filippov.text
44*b345e140SMax Filippovtest_end
45*b345e140SMax Filippov
46*b345e140SMax Filippov#endif
47*b345e140SMax Filippov
48*b345e140SMax Filippovtest_suite_end
49