54 lines
754 B
ArmAsm
54 lines
754 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_RV32U
|
|
RVTEST_CODE_BEGIN
|
|
|
|
li a3, 111
|
|
la a0, 3f
|
|
la a1, 1f
|
|
la a2, 2f
|
|
lw a0, 0(a0)
|
|
|
|
# test I$ hit
|
|
.align 6
|
|
sw a0, 0(a1)
|
|
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
|
|
|
|
sw a0, 0(a2)
|
|
fence.i
|
|
|
|
.align 6
|
|
2: addi a3, a3, 555
|
|
TEST_CASE( 3, a3, 777, nop )
|
|
|
|
3: addi a3, a3, 333
|
|
|
|
TEST_PASSFAIL
|
|
|
|
RVTEST_CODE_END
|
|
|
|
.data
|
|
RVTEST_DATA_BEGIN
|
|
|
|
TEST_DATA
|
|
|
|
RVTEST_DATA_END
|