Statistics
| Branch: | Revision:

root / tests / tcg / xtensa / test_break.S @ e7dfa64d

History | View | Annotate | Download (5.3 kB)

1
.include "macros.inc"
2

    
3
#define debug_level 6
4
#define debug_vector level6
5

    
6
test_suite break
7

    
8
test break
9
    set_vector debug_vector, 0
10
    rsil    a2, debug_level
11
    _break  0, 0
12

    
13
    set_vector debug_vector, 2f
14
    rsil    a2, debug_level - 1
15
1:
16
    _break  0, 0
17
    test_fail
18
2:
19
    rsr     a2, ps
20
    movi    a3, 0x1f
21
    and     a2, a2, a3
22
    movi    a3, 0x10 | debug_level
23
    assert  eq, a2, a3
24
    rsr     a2, epc6
25
    movi    a3, 1b
26
    assert  eq, a2, a3
27
    rsr     a2, debugcause
28
    movi    a3, 0x8
29
    assert  eq, a2, a3
30
test_end
31

    
32
test breakn
33
    set_vector debug_vector, 0
34
    rsil    a2, debug_level
35
    _break.n  0
36

    
37
    set_vector debug_vector, 2f
38
    rsil    a2, debug_level - 1
39
1:
40
    _break.n  0
41
    test_fail
42
2:
43
    rsr     a2, ps
44
    movi    a3, 0x1f
45
    and     a2, a2, a3
46
    movi    a3, 0x10 | debug_level
47
    assert  eq, a2, a3
48
    rsr     a2, epc6
49
    movi    a3, 1b
50
    assert  eq, a2, a3
51
    rsr     a2, debugcause
52
    movi    a3, 0x10
53
    assert  eq, a2, a3
54
test_end
55

    
56
test ibreak
57
    set_vector debug_vector, 0
58
    rsil    a2, debug_level
59
    movi    a2, 1f
60
    wsr     a2, ibreaka0
61
    movi    a2, 1
62
    wsr     a2, ibreakenable
63
    isync
64
1:
65
    rsil    a2, debug_level - 1
66
    movi    a2, 1f
67
    wsr     a2, ibreaka0
68
    movi    a2, 0
69
    wsr     a2, ibreakenable
70
    isync
71
1:
72
    set_vector debug_vector, 2f
73
    movi    a2, 1f
74
    wsr     a2, ibreaka0
75
    movi    a2, 1
76
    wsr     a2, ibreakenable
77
    isync
78
1:
79
    test_fail
80
2:
81
    rsr     a2, ps
82
    movi    a3, 0x1f
83
    and     a2, a2, a3
84
    movi    a3, 0x10 | debug_level
85
    assert  eq, a2, a3
86
    rsr     a2, epc6
87
    movi    a3, 1b
88
    assert  eq, a2, a3
89
    rsr     a2, debugcause
90
    movi    a3, 0x2
91
    assert  eq, a2, a3
92
test_end
93

    
94
test ibreak_priority
95
    set_vector debug_vector, 2f
96
    rsil    a2, debug_level - 1
97
    movi    a2, 1f
98
    wsr     a2, ibreaka0
99
    movi    a2, 1
100
    wsr     a2, ibreakenable
101
    isync
102
1:
103
    break   0, 0
104
    test_fail
105
2:
106
    rsr     a2, debugcause
107
    movi    a3, 0x2
108
    assert  eq, a2, a3
109
test_end
110

    
111
test icount
112
    set_vector debug_vector, 2f
113
    rsil    a2, debug_level - 1
114
    movi    a2, -2
115
    wsr     a2, icount
116
    movi    a2, 1
117
    wsr     a2, icountlevel
118
    isync
119
    rsil    a2, 0
120
    nop
121
1:
122
    break   0, 0
123
    test_fail
124
2:
125
    movi    a2, 0
126
    wsr     a2, icountlevel
127
    rsr     a2, epc6
128
    movi    a3, 1b
129
    assert  eq, a2, a3
130
    rsr     a2, debugcause
131
    movi    a3, 0x1
132
    assert  eq, a2, a3
133
test_end
134

    
135
.macro check_dbreak dr
136
    rsr     a2, epc6
137
    movi    a3, 1b
138
    assert  eq, a2, a3
139
    rsr     a2, debugcause
140
    movi    a3, 0x4 | (\dr << 8)
141
    assert  eq, a2, a3
142
    movi    a2, 0
143
    wsr     a2, dbreakc\dr
144
.endm
145

    
146
.macro dbreak_test dr, ctl, break, access, op
147
    set_vector debug_vector, 2f
148
    rsil    a2, debug_level - 1
149
    movi    a2, \ctl
150
    wsr     a2, dbreakc\dr
151
    movi    a2, \break
152
    wsr     a2, dbreaka\dr
153
    movi    a2, \access
154
    isync
155
1:
156
    \op     a3, a2, 0
157
    test_fail
158
2:
159
    check_dbreak \dr
160
    reset_ps
161
.endm
162

    
163
test dbreak_exact
164
    dbreak_test 0, 0x4000003f, 0xd000007f, 0xd000007f, l8ui
165
    dbreak_test 1, 0x4000003e, 0xd000007e, 0xd000007e, l16ui
166
    dbreak_test 0, 0x4000003c, 0xd000007c, 0xd000007c, l32i
167

    
168
    dbreak_test 1, 0x8000003f, 0xd000007f, 0xd000007f, s8i
169
    dbreak_test 0, 0x8000003e, 0xd000007e, 0xd000007e, s16i
170
    dbreak_test 1, 0x8000003c, 0xd000007c, 0xd000007c, s32i
171
test_end
172

    
173
test dbreak_overlap
174
    dbreak_test 0, 0x4000003f, 0xd000007d, 0xd000007c, l16ui
175
    dbreak_test 1, 0x4000003f, 0xd000007d, 0xd000007c, l32i
176

    
177
    dbreak_test 0, 0x4000003e, 0xd000007e, 0xd000007f, l8ui
178
    dbreak_test 1, 0x4000003e, 0xd000007e, 0xd000007c, l32i
179

    
180
    dbreak_test 0, 0x4000003c, 0xd000007c, 0xd000007d, l8ui
181
    dbreak_test 1, 0x4000003c, 0xd000007c, 0xd000007c, l16ui
182

    
183
    dbreak_test 0, 0x40000038, 0xd0000078, 0xd000007b, l8ui
184
    dbreak_test 1, 0x40000038, 0xd0000078, 0xd000007a, l16ui
185
    dbreak_test 0, 0x40000038, 0xd0000078, 0xd000007c, l32i
186

    
187
    dbreak_test 1, 0x40000030, 0xd0000070, 0xd0000075, l8ui
188
    dbreak_test 0, 0x40000030, 0xd0000070, 0xd0000076, l16ui
189
    dbreak_test 1, 0x40000030, 0xd0000070, 0xd0000078, l32i
190

    
191
    dbreak_test 0, 0x40000020, 0xd0000060, 0xd000006f, l8ui
192
    dbreak_test 1, 0x40000020, 0xd0000060, 0xd0000070, l16ui
193
    dbreak_test 0, 0x40000020, 0xd0000060, 0xd0000074, l32i
194

    
195

    
196
    dbreak_test 0, 0x8000003f, 0xd000007d, 0xd000007c, s16i
197
    dbreak_test 1, 0x8000003f, 0xd000007d, 0xd000007c, s32i
198

    
199
    dbreak_test 0, 0x8000003e, 0xd000007e, 0xd000007f, s8i
200
    dbreak_test 1, 0x8000003e, 0xd000007e, 0xd000007c, s32i
201

    
202
    dbreak_test 0, 0x8000003c, 0xd000007c, 0xd000007d, s8i
203
    dbreak_test 1, 0x8000003c, 0xd000007c, 0xd000007c, s16i
204

    
205
    dbreak_test 0, 0x80000038, 0xd0000078, 0xd000007b, s8i
206
    dbreak_test 1, 0x80000038, 0xd0000078, 0xd000007a, s16i
207
    dbreak_test 0, 0x80000038, 0xd0000078, 0xd000007c, s32i
208

    
209
    dbreak_test 1, 0x80000030, 0xd0000070, 0xd0000075, s8i
210
    dbreak_test 0, 0x80000030, 0xd0000070, 0xd0000076, s16i
211
    dbreak_test 1, 0x80000030, 0xd0000070, 0xd0000078, s32i
212

    
213
    dbreak_test 0, 0x80000020, 0xd0000060, 0xd000006f, s8i
214
    dbreak_test 1, 0x80000020, 0xd0000060, 0xd0000070, s16i
215
    dbreak_test 0, 0x80000020, 0xd0000060, 0xd0000074, s32i
216
test_end
217

    
218
test dbreak_invalid
219
    dbreak_test 0, 0x40000030, 0xd0000071, 0xd0000070, l16ui
220
    dbreak_test 1, 0x40000035, 0xd0000072, 0xd0000070, l32i
221
test_end
222

    
223
test_suite_end