binutils-gdb/sim/testsuite/frv/fr550/dcul.cgs
Mike Frysinger 1368b914e9 sim: testsuite: flatten tree
Now that all port tests live under testsuite/sim/*/, and none live
in testsuite/ directly, flatten the structure by moving all of the
dirs under testsuite/sim/ to testsuite/ directly.

We need to stop passing --tool to dejagnu so that it searches all
dirs and not just ones that start with "sim".  Since we have no
other dirs in this tree, and no plans to add any, should be fine.
2021-01-15 19:18:34 -05:00

119 lines
2.6 KiB
Plaintext

# FRV testcase for dcul GRi
# mach: all
.include "../testutils.inc"
start
.global dcul
dcul:
or_spr_immed 0xc8000000,hsr0 ; caches enabled -- copy-back mode
; preload and lock all the lines in set 0 of the data cache
set_gr_immed 0x70000,gr10
lock_data_cache gr10
set_mem_immed 0x11111111,gr10
test_mem_immed 0x11111111,gr10
inc_gr_immed 0x2000,gr10
set_gr_immed 1,gr11
lock_data_cache gr10
set_mem_immed 0x22222222,gr10
test_mem_immed 0x22222222,gr10
inc_gr_immed 0x2000,gr10
set_gr_immed 63,gr11
lock_data_cache gr10
set_mem_immed 0x33333333,gr10
test_mem_immed 0x33333333,gr10
inc_gr_immed 0x2000,gr10
set_gr_immed 64,gr11
lock_data_cache gr10
set_mem_immed 0x44444444,gr10
test_mem_immed 0x44444444,gr10
; Now write to another address which should be in the same set
; the write should go through to memory, since all the lines in the
; set are locked
inc_gr_immed 0x2000,gr10
set_mem_immed 0xdeadbeef,gr10
test_mem_immed 0xdeadbeef,gr10
; Invalidate the data cache. Only the last value stored should have made
; it through to memory
set_gr_immed 0x70000,gr10
invalidate_data_cache gr10
test_mem_immed 0,gr10
inc_gr_immed 0x2000,gr10
invalidate_data_cache gr10
test_mem_immed 0,gr10
inc_gr_immed 0x2000,gr10
invalidate_data_cache gr10
test_mem_immed 0,gr10
inc_gr_immed 0x2000,gr10
invalidate_data_cache gr10
test_mem_immed 0,gr10
inc_gr_immed 0x2000,gr10
invalidate_data_cache gr10
test_mem_immed 0xdeadbeef,gr10
; Now preload load and lock all the lines in set 0 of the data cache
; again
set_gr_immed 0x70000,gr10
lock_data_cache gr10
set_mem_immed 0x11111111,gr10
test_mem_immed 0x11111111,gr10
inc_gr_immed 0x2000,gr10
set_gr_immed 1,gr11
lock_data_cache gr10
set_mem_immed 0x22222222,gr10
test_mem_immed 0x22222222,gr10
inc_gr_immed 0x2000,gr10
set_gr_immed 63,gr11
lock_data_cache gr10
set_mem_immed 0x33333333,gr10
test_mem_immed 0x33333333,gr10
inc_gr_immed 0x2000,gr10
set_gr_immed 64,gr11
lock_data_cache gr10
set_mem_immed 0x44444444,gr10
test_mem_immed 0x44444444,gr10
; unlock one line
set_gr_immed 0x78000,gr10
dcul gr10
; Now write to another address which should be in the same set.
set_gr_immed 0x7a000,gr10
set_mem_immed 0xbeefdead,gr10
; All of the stored values should be retrievable
set_gr_immed 0x70000,gr10
test_mem_immed 0x11111111,gr10
inc_gr_immed 0x2000,gr10
test_mem_immed 0x22222222,gr10
inc_gr_immed 0x2000,gr10
test_mem_immed 0x33333333,gr10
inc_gr_immed 0x2000,gr10
test_mem_immed 0x44444444,gr10
inc_gr_immed 0x2000,gr10
test_mem_immed 0xdeadbeef,gr10
inc_gr_immed 0x2000,gr10
test_mem_immed 0xbeefdead,gr10
pass