docs/system/gdb.rst: Add some more heading structure
[qemu/ar7.git] / tests / tcg / xtensa / test_cache.S
blob7e6ba4c18a2b19188b0a04750baa674adea4562f
1 #include "macros.inc"
3 .purgem test_init
4 .macro test_init
5     call0   cache_unlock_invalidate
6 .endm
8 test_suite cache
10 #if XCHAL_HAVE_PTP_MMU
12 .macro      pf_op op
13     \op     a2, 0
14     \op     a3, 0
15     \op     a4, 0
16 .endm
18 test prefetch
19     movi    a2, 0xd0000000 /* cacheable */
20     movi    a3, 0xd8000000 /* non-cacheable */
21     movi    a4, 0x00001235 /* unmapped */
23 #if XCHAL_DCACHE_SIZE
24     pf_op   dpfr
25     pf_op   dpfro
26     pf_op   dpfw
27     pf_op   dpfwo
28 #endif
29 #ifdef XCHAL_ICACHE_SIZE
30     pf_op   ipf
31 #endif
32 #if XCHAL_HAVE_PTP_MMU && !XCHAL_HAVE_SPANNING_WAY
33 #if XCHAL_DCACHE_LINE_LOCKABLE
34     dpfl    a2, 0
35 #endif
36 #if XCHAL_ICACHE_LINE_LOCKABLE
37     ipfl    a2, 0
38 #endif
39 #endif
40 test_end
42 .macro cache_fault op, addr, exc_code
43     set_vector kernel, 2f
45     movi    a4, \addr
47     \op     a4, 0
48     test_fail
50     rsr     a2, epc1
51     movi    a3, 1b
52     assert  eq, a2, a3
53     rsr     a2, excvaddr
54     assert  eq, a2, a4
55     rsr     a2, exccause
56     movi    a3, \exc_code
57     assert  eq, a2, a3
58 .endm
60 #if XCHAL_HAVE_PTP_MMU && !XCHAL_HAVE_SPANNING_WAY
62 #if XCHAL_DCACHE_LINE_LOCKABLE
63 test dpfl_tlb_miss
64     cache_fault dpfl, 0x00002345, 24
65 test_end
66 #endif
68 #if XCHAL_DCACHE_SIZE
69 #if XCHAL_DCACHE_IS_WRITEBACK
70 test dhwb_tlb_miss
71     cache_fault dhwb, 0x00002345, 24
72 test_end
74 test dhwbi_tlb_miss
75     cache_fault dhwbi, 0x00002345, 24
76 test_end
77 #endif
79 test dhi_tlb_miss
80     cache_fault dhi, 0x00002345, 24
81 test_end
83 #if XCHAL_DCACHE_LINE_LOCKABLE
84 test dhu_tlb_miss
85     cache_fault dhu, 0x00002345, 24
86 test_end
87 #endif
88 #endif
90 #if XCHAL_ICACHE_SIZE
91 #if XCHAL_ICACHE_LINE_LOCKABLE
92 test ipfl_tlb_miss
93     cache_fault ipfl, 0x00002345, 16
94 test_end
96 test ihu_tlb_miss
97     cache_fault ihu, 0x00002345, 16
98 test_end
99 #endif
101 test ihi_tlb_miss
102     cache_fault ihi, 0x00002345, 16
103 test_end
104 #endif
106 #endif
108 #endif
110 test_suite_end
112 cache_unlock_invalidate:
113 #if XCHAL_DCACHE_SIZE
114     movi    a2, 0
115     movi    a3, XCHAL_DCACHE_SIZE
117 #if XCHAL_DCACHE_LINE_LOCKABLE
118     diu     a2, 0
119 #endif
120     dii     a2, 0
121     addi    a2, a2, XCHAL_DCACHE_LINESIZE
122     bltu    a2, a3, 1b
123 #endif
124 #if XCHAL_ICACHE_SIZE
125     movi    a2, 0
126     movi    a3, XCHAL_ICACHE_SIZE
128 #if XCHAL_ICACHE_LINE_LOCKABLE
129     iiu     a2, 0
130 #endif
131     iii     a2, 0
132     addi    a2, a2, XCHAL_ICACHE_LINESIZE
133     bltu    a2, a3, 1b
134 #endif
135     ret