xref: /qemu/tests/tcg/xtensa/test_sr.S (revision e55239e2b65dbef085917e2dcc7336276877dfed)
1a2e67072SMax Filippov#include "macros.inc"
2efdfac94SMax Filippov
3efdfac94SMax Filippovtest_suite sr
4efdfac94SMax Filippov
5efdfac94SMax Filippov.macro  sr_op sym, op_sym, op_byte, sr
6efdfac94SMax Filippov    .if \sym
7efdfac94SMax Filippov    \op_sym a4, \sr
8efdfac94SMax Filippov    .else
9efdfac94SMax Filippov    .byte 0x40, \sr, \op_byte
10efdfac94SMax Filippov    .endif
11efdfac94SMax Filippov.endm
12efdfac94SMax Filippov
13efdfac94SMax Filippov.macro 	test_sr_op sym, mask, op, op_byte, sr
14efdfac94SMax Filippov    movi    a4, 0
15efdfac94SMax Filippov    .if (\mask)
16efdfac94SMax Filippov    set_vector kernel, 0
17efdfac94SMax Filippov    sr_op   \sym, \op, \op_byte, \sr
18efdfac94SMax Filippov    .else
19efdfac94SMax Filippov    set_vector kernel, 2f
20efdfac94SMax Filippov1:
21efdfac94SMax Filippov    sr_op   \sym, \op, \op_byte, \sr
22efdfac94SMax Filippov    test_fail
23efdfac94SMax Filippov2:
24efdfac94SMax Filippov    reset_ps
25efdfac94SMax Filippov    rsr     a2, exccause
26efdfac94SMax Filippov    assert  eqi, a2, 0
27efdfac94SMax Filippov    rsr     a2, epc1
28efdfac94SMax Filippov    movi    a3, 1b
29efdfac94SMax Filippov    assert  eq, a2, a3
30efdfac94SMax Filippov    .endif
31efdfac94SMax Filippov.endm
32efdfac94SMax Filippov
33efdfac94SMax Filippov.macro  test_sr_mask sr, sym, mask
34efdfac94SMax Filippovtest \sr
35efdfac94SMax Filippov    test_sr_op \sym, \mask & 1, rsr, 0x03, \sr
36efdfac94SMax Filippov    test_sr_op \sym, \mask & 2, wsr, 0x13, \sr
37efdfac94SMax Filippov    test_sr_op \sym, \mask & 4, xsr, 0x61, \sr
38efdfac94SMax Filippovtest_end
39efdfac94SMax Filippov.endm
40efdfac94SMax Filippov
41efdfac94SMax Filippov.macro  test_sr sr, conf
42efdfac94SMax Filippov    test_sr_mask    \sr, \conf, 7
43efdfac94SMax Filippov.endm
44efdfac94SMax Filippov
45efdfac94SMax Filippovtest_sr acchi, 1
46efdfac94SMax Filippovtest_sr acclo, 1
47efdfac94SMax Filippovtest_sr_mask /*atomctl*/99, 0, 0
48efdfac94SMax Filippovtest_sr_mask /*br*/4, 0, 0
49efdfac94SMax Filippovtest_sr_mask /*cacheattr*/98, 0, 0
50efdfac94SMax Filippovtest_sr ccompare0, 1
51efdfac94SMax Filippovtest_sr ccount, 1
52efdfac94SMax Filippovtest_sr cpenable, 1
53efdfac94SMax Filippovtest_sr dbreaka0, 1
54efdfac94SMax Filippovtest_sr dbreakc0, 1
55efdfac94SMax Filippovtest_sr_mask debugcause, 1, 1
56efdfac94SMax Filippovtest_sr depc, 1
57efdfac94SMax Filippovtest_sr dtlbcfg, 1
58efdfac94SMax Filippovtest_sr epc1, 1
59efdfac94SMax Filippovtest_sr epc2, 1
60efdfac94SMax Filippovtest_sr eps2, 1
61efdfac94SMax Filippovtest_sr exccause, 1
62efdfac94SMax Filippovtest_sr excsave1, 1
63efdfac94SMax Filippovtest_sr excsave2, 1
64efdfac94SMax Filippovtest_sr excvaddr, 1
65efdfac94SMax Filippovtest_sr ibreaka0, 1
66efdfac94SMax Filippovtest_sr ibreakenable, 1
67efdfac94SMax Filippovtest_sr icount, 1
68efdfac94SMax Filippovtest_sr icountlevel, 1
69efdfac94SMax Filippovtest_sr_mask /*intclear*/227, 0, 2
70efdfac94SMax Filippovtest_sr_mask /*interrupt*/226, 0, 3
71efdfac94SMax Filippovtest_sr intenable, 1
72efdfac94SMax Filippovtest_sr itlbcfg, 1
73efdfac94SMax Filippovtest_sr lbeg, 1
74efdfac94SMax Filippovtest_sr lcount, 1
75efdfac94SMax Filippovtest_sr lend, 1
76efdfac94SMax Filippovtest_sr litbase, 1
77efdfac94SMax Filippovtest_sr m0, 1
78*e55239e2SMax Filippovtest_sr_mask /*memctl*/97, 0, 0
79efdfac94SMax Filippovtest_sr misc0, 1
80efdfac94SMax Filippovtest_sr_mask /*prefctl*/40, 0, 0
81efdfac94SMax Filippovtest_sr_mask /*prid*/235, 0, 1
82efdfac94SMax Filippovtest_sr ps, 1
83efdfac94SMax Filippovtest_sr ptevaddr, 1
84efdfac94SMax Filippovtest_sr rasid, 1
85efdfac94SMax Filippovtest_sr sar, 1
86efdfac94SMax Filippovtest_sr scompare1, 1
87efdfac94SMax Filippovtest_sr vecbase, 1
88efdfac94SMax Filippovtest_sr windowbase, 1
89efdfac94SMax Filippovtest_sr windowstart, 1
90efdfac94SMax Filippov
91efdfac94SMax Filippovtest_suite_end
92