# 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