rustv32i/tests/check/zalrsc.S
2025-03-09 20:55:16 +01:00

59 lines
952 B
ArmAsm

# Load-Reserved/Store-Conditional Instructions
#include "../helper.S"
.macro RESET_MEM
li t0, 0
sc.w zero, t0, (t0) # reset reservation set
li t1, -1
sw t1, 0(t0)
li t1, -2
sw t1, 4(t0)
.endm
START_TEST
RESET_MEM
lr.w t1, (t0)
ASSERT_EQ t1, -1
lr.w.aq t1, (t0)
ASSERT_EQ t1, -1
lr.w.rl t1, (t0)
ASSERT_EQ t1, -1
lr.w.aqrl t1, (t0)
ASSERT_EQ t1, -1
RESET_MEM
# invalid SC
li t2, 10
sc.w t1, t2, (t0)
ASSERT_EQ t1, 1
li t2, 10
sc.w.aq t1, t2, (t0)
ASSERT_EQ t1, 1
li t2, 10
sc.w.rl t1, t2, (t0)
ASSERT_EQ t1, 1
li t2, 10
sc.w.aqrl t1, t2, (t0)
ASSERT_EQ t1, 1
RESET_MEM
li t1, 10
lr.w zero, (t0)
sc.w t1, t1, (t0)
ASSERT_EQ t1, 0
li t1, 10
lr.w.aq zero, (t0)
sc.w.rl t1, t1, (t0)
ASSERT_EQ t1, 0
li t1, 10
lr.w.aqrl zero, (t0)
sc.w.aqrl t1, t1, (t0)
ASSERT_EQ t1, 0
PASS