55 lines
776 B
ArmAsm
55 lines
776 B
ArmAsm
# See LICENSE for license details.
|
|
|
|
#*****************************************************************************
|
|
# fence_i.S
|
|
#-----------------------------------------------------------------------------
|
|
#
|
|
# Test self-modifying code and the fence.i instruction.
|
|
#
|
|
|
|
#include "riscv_test.h"
|
|
#include "test_macros.h"
|
|
|
|
RVTEST_RV64U
|
|
RVTEST_CODE_BEGIN
|
|
|
|
li a3, 111
|
|
lh a0, insn
|
|
lh a1, insn+2
|
|
|
|
# test I$ hit
|
|
.align 6
|
|
sh a0, 1f, t0
|
|
sh a1, 1f+2, t0
|
|
fence.i
|
|
|
|
1: addi a3, a3, 222
|
|
TEST_CASE( 2, a3, 444, nop )
|
|
|
|
# test prefetcher hit
|
|
li a4, 100
|
|
1: addi a4, a4, -1
|
|
bnez a4, 1b
|
|
|
|
sh a0, 1f, t0
|
|
sh a1, 1f+2, t0
|
|
fence.i
|
|
|
|
.align 6
|
|
1: addi a3, a3, 555
|
|
TEST_CASE( 3, a3, 777, nop )
|
|
|
|
TEST_PASSFAIL
|
|
|
|
RVTEST_CODE_END
|
|
|
|
.data
|
|
RVTEST_DATA_BEGIN
|
|
|
|
TEST_DATA
|
|
|
|
insn:
|
|
addi a3, a3, 333
|
|
|
|
RVTEST_DATA_END
|