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