lsi53c895a: check message length value is valid
[qemu/ar7.git] / tests / tcg / xtensa / test_cache.S
blob6b2df9734b2e44487f575818141a3c04c1a15337
1 #include "macros.inc"
3 .purgem test_init
4 .macro test_init
5     call0   cache_unlock_invalidate
6 .endm
8 test_suite cache
10 .macro      pf_op op
11     \op     a2, 0
12     \op     a3, 0
13     \op     a4, 0
14 .endm
16 test prefetch
17     movi    a2, 0xd0000000 /* cacheable */
18     movi    a3, 0xd8000000 /* non-cacheable */
19     movi    a4, 0x00001235 /* unmapped */
21     pf_op   dpfr
22     pf_op   dpfro
23     pf_op   dpfw
24     pf_op   dpfwo
25     pf_op   ipf
27     dpfl    a2, 0
28     ipfl    a2, 0
29 test_end
31 .macro cache_fault op, addr, exc_code
32     set_vector kernel, 2f
34     movi    a4, \addr
36     \op     a4, 0
37     test_fail
39     rsr     a2, epc1
40     movi    a3, 1b
41     assert  eq, a2, a3
42     rsr     a2, excvaddr
43     assert  eq, a2, a4
44     rsr     a2, exccause
45     movi    a3, \exc_code
46     assert  eq, a2, a3
47 .endm
49 test dpfl_tlb_miss
50     cache_fault dpfl, 0x00002345, 24
51 test_end
53 test dhwb_tlb_miss
54     cache_fault dhwb, 0x00002345, 24
55 test_end
57 test dhwbi_tlb_miss
58     cache_fault dhwbi, 0x00002345, 24
59 test_end
61 test dhi_tlb_miss
62     cache_fault dhi, 0x00002345, 24
63 test_end
65 test dhu_tlb_miss
66     cache_fault dhu, 0x00002345, 24
67 test_end
70 test ipfl_tlb_miss
71     cache_fault ipfl, 0x00002345, 16
72 test_end
74 test ihu_tlb_miss
75     cache_fault ihu, 0x00002345, 16
76 test_end
78 test ihi_tlb_miss
79     cache_fault ihi, 0x00002345, 16
80 test_end
82 test_suite_end
84 .macro cache_all op1, op2, size, linesize
85     movi    a2, 0
86     movi    a3, \size
88     \op1    a2, 0
89     \op2    a2, 0
90     addi    a2, a2, \linesize
91     bltu    a2, a3, 1b
92 .endm
94 cache_unlock_invalidate:
95     cache_all diu, dii, XCHAL_DCACHE_SIZE, XCHAL_DCACHE_LINESIZE
96     cache_all iiu, iii, XCHAL_ICACHE_SIZE, XCHAL_ICACHE_LINESIZE
97     ret