Home | History | Annotate | Line # | Download | only in interrupts
      1 # FRV testcase for handling of shadow registers SR0-SR4
      2 # mach: frv
      3 
      4 	.include "testutils.inc"
      5 
      6 	start
      7 
      8 	.global tra
      9 tra:
     10 	test_spr_bits	0x800,11,1,psr	; PSR.ESR set
     11 	test_spr_bits	0x4,2,1,psr	; PSR.S set
     12 
     13 	; Set up exception handler for later
     14 	and_spr_immed	-4081,tbr		; clear tbr.tt
     15 	set_gr_spr	tbr,gr7
     16 	inc_gr_immed	2112,gr7		; address of exception handler
     17 	set_bctrlr_0_0	gr7	; bctrlr 0,0
     18 	set_spr_immed	128,lcr
     19 	set_psr_et	1
     20 
     21 	set_gr_immed	0x11111111,gr4	; SGR4-7
     22 	set_gr_immed	0x22222222,gr5
     23 	set_gr_immed	0x33333333,gr6
     24 	set_gr_immed	0x44444444,gr7
     25 	set_spr_immed	0x55555555,sr0 	; UGR4-7
     26 	set_spr_immed	0x66666666,sr1
     27 	set_spr_immed	0x77777777,sr2
     28 	set_spr_immed	0x88888888,sr3
     29 
     30 	and_spr_immed	0xfffff7ff,psr	; turn off PSR.ESR
     31 	test_gr_immed	0x11111111,gr4	; SGR4-7
     32 	test_gr_immed	0x22222222,gr5
     33 	test_gr_immed	0x33333333,gr6
     34 	test_gr_immed	0x44444444,gr7
     35 	test_spr_immed	0x11111111,sr0	; SGR4-7
     36 	test_spr_immed	0x22222222,sr1
     37 	test_spr_immed	0x33333333,sr2
     38 	test_spr_immed	0x44444444,sr3
     39 
     40 	set_spr_immed	0x55555555,sr0 	; SGR4-7
     41 	set_spr_immed	0x66666666,sr1
     42 	set_spr_immed	0x77777777,sr2
     43 	set_spr_immed	0x88888888,sr3
     44 	test_gr_immed	0x55555555,gr4	; SGR4-7
     45 	test_gr_immed	0x66666666,gr5
     46 	test_gr_immed	0x77777777,gr6
     47 	test_gr_immed	0x88888888,gr7
     48 	test_spr_immed	0x55555555,sr0	; SGR4-7
     49 	test_spr_immed	0x66666666,sr1
     50 	test_spr_immed	0x77777777,sr2
     51 	test_spr_immed	0x88888888,sr3
     52 
     53 	set_gr_immed	0x11111111,gr4	; SGR4-7
     54 	set_gr_immed	0x22222222,gr5
     55 	set_gr_immed	0x33333333,gr6
     56 	set_gr_immed	0x44444444,gr7
     57 	test_gr_immed	0x11111111,gr4	; SGR4-7
     58 	test_gr_immed	0x22222222,gr5
     59 	test_gr_immed	0x33333333,gr6
     60 	test_gr_immed	0x44444444,gr7
     61 	test_spr_immed	0x11111111,sr0	; SGR4-7
     62 	test_spr_immed	0x22222222,sr1
     63 	test_spr_immed	0x33333333,sr2
     64 	test_spr_immed	0x44444444,sr3
     65 
     66 	or_spr_immed	0x00000800,psr	; turn on PSR.ESR
     67 	test_gr_immed	0x11111111,gr4	; SGR4-7 -- SR0-3 (UGR4-7) are undefined
     68 	test_gr_immed	0x22222222,gr5
     69 	test_gr_immed	0x33333333,gr6
     70 	test_gr_immed	0x44444444,gr7
     71 
     72 	set_spr_immed	0x55555555,sr0	; UGR4-7
     73 	set_spr_immed	0x66666666,sr1
     74 	set_spr_immed	0x77777777,sr2
     75 	set_spr_immed	0x88888888,sr3
     76 	test_gr_immed	0x11111111,gr4	; SGR4-7
     77 	test_gr_immed	0x22222222,gr5
     78 	test_gr_immed	0x33333333,gr6
     79 	test_gr_immed	0x44444444,gr7
     80 	test_spr_immed	0x55555555,sr0	; UGR4-7
     81 	test_spr_immed	0x66666666,sr1
     82 	test_spr_immed	0x77777777,sr2
     83 	test_spr_immed	0x88888888,sr3
     84 
     85 	and_spr_immed	0xfffffffb,psr	; turn off PSR.S
     86 	test_spr_immed	0x11111111,sr0 	; SGR4-7
     87 	test_spr_immed	0x22222222,sr1
     88 	test_spr_immed	0x33333333,sr2
     89 	test_spr_immed	0x44444444,sr3
     90 	test_gr_immed	0x55555555,gr4	; UGR4-7
     91 	test_gr_immed	0x66666666,gr5
     92 	test_gr_immed	0x77777777,gr6
     93 	test_gr_immed	0x88888888,gr7
     94 
     95 	; need to generate a trap to return to supervisor mode
     96 	set_spr_addr	ok0,lr
     97 	tira 		gr0,4		; should branch to tbr + (128 + 4)*16
     98 
     99 	test_spr_bits	0x800,11,0,psr	; PSR.ESR clear
    100 	test_spr_bits	0x4,2,0,psr	; PSR.S clear
    101 	test_gr_immed	0x11111111,gr4	; SGR4-7
    102 	test_gr_immed	0x22222222,gr5
    103 	test_gr_immed	0x33333333,gr6
    104 	test_gr_immed	0x44444444,gr7
    105 	test_spr_immed	0x11111111,sr0	; SGR4-7
    106 	test_spr_immed	0x22222222,sr1
    107 	test_spr_immed	0x33333333,sr2
    108 	test_spr_immed	0x44444444,sr3
    109 
    110 	set_gr_immed	0x55555555,gr4 	; SGR4-7
    111 	set_gr_immed	0x66666666,gr5
    112 	set_gr_immed	0x77777777,gr6
    113 	set_gr_immed	0x88888888,gr7
    114 	test_gr_immed	0x55555555,gr4	; SGR4-7
    115 	test_gr_immed	0x66666666,gr5
    116 	test_gr_immed	0x77777777,gr6
    117 	test_gr_immed	0x88888888,gr7
    118 	test_spr_immed	0x55555555,sr0	; SGR4-7
    119 	test_spr_immed	0x66666666,sr1
    120 	test_spr_immed	0x77777777,sr2
    121 	test_spr_immed	0x88888888,sr3
    122 
    123 	set_gr_immed	0x11111111,gr4	; SGR4-7
    124 	set_gr_immed	0x22222222,gr5
    125 	set_gr_immed	0x33333333,gr6
    126 	set_gr_immed	0x44444444,gr7
    127 	test_gr_immed	0x11111111,gr4	; SGR4-7
    128 	test_gr_immed	0x22222222,gr5
    129 	test_gr_immed	0x33333333,gr6
    130 	test_gr_immed	0x44444444,gr7
    131 	test_spr_immed	0x11111111,sr0	; SGR4-7
    132 	test_spr_immed	0x22222222,sr1
    133 	test_spr_immed	0x33333333,sr2
    134 	test_spr_immed	0x44444444,sr3
    135 
    136 	; need to generate a trap to return to supervisor mode
    137 	set_spr_addr	ok1,lr
    138 	tira 		gr0,4		; should branch to tbr + (128 + 4)*16
    139 
    140 	pass
    141 
    142 ok0:	; exception handler should branch here the first time
    143 	test_spr_bits	0x800,11,1,psr	; PSR.ESR set
    144 	test_spr_bits	0x4,2,1,psr	; PSR.S set
    145 	test_gr_immed	0x11111111,gr4	; SGR4-7
    146 	test_gr_immed	0x22222222,gr5
    147 	test_gr_immed	0x33333333,gr6
    148 	test_gr_immed	0x44444444,gr7
    149 	test_spr_immed	0x55555555,sr0	; UGR4-7
    150 	test_spr_immed	0x66666666,sr1
    151 	test_spr_immed	0x77777777,sr2
    152 	test_spr_immed	0x88888888,sr3
    153 
    154 	and_spr_immed	0xfffff7ff,psr	; turn off PSR.ESR
    155 	test_gr_immed	0x11111111,gr4	; SGR4-7
    156 	test_gr_immed	0x22222222,gr5
    157 	test_gr_immed	0x33333333,gr6
    158 	test_gr_immed	0x44444444,gr7
    159 	test_spr_immed	0x11111111,sr0	; SGR4-7
    160 	test_spr_immed	0x22222222,sr1
    161 	test_spr_immed	0x33333333,sr2
    162 	test_spr_immed	0x44444444,sr3
    163 	rett		0
    164 	fail
    165 
    166 ok1:	; exception handler should branch here the second time
    167 	test_spr_bits	0x800,11,0,psr	; PSR.ESR clear
    168 	test_spr_bits	0x4,2,1,psr	; PSR.S set
    169 
    170 	test_gr_immed	0x11111111,gr4	; SGR4-7
    171 	test_gr_immed	0x22222222,gr5
    172 	test_gr_immed	0x33333333,gr6
    173 	test_gr_immed	0x44444444,gr7
    174 	test_spr_immed	0x11111111,sr0	; SGR4-7
    175 	test_spr_immed	0x22222222,sr1
    176 	test_spr_immed	0x33333333,sr2
    177 	test_spr_immed	0x44444444,sr3
    178 
    179 	set_spr_immed	0x55555555,sr0 	; SGR4-7
    180 	set_spr_immed	0x66666666,sr1
    181 	set_spr_immed	0x77777777,sr2
    182 	set_spr_immed	0x88888888,sr3
    183 	test_gr_immed	0x55555555,gr4	; SGR4-7
    184 	test_gr_immed	0x66666666,gr5
    185 	test_gr_immed	0x77777777,gr6
    186 	test_gr_immed	0x88888888,gr7
    187 	test_spr_immed	0x55555555,sr0	; SGR4-7
    188 	test_spr_immed	0x66666666,sr1
    189 	test_spr_immed	0x77777777,sr2
    190 	test_spr_immed	0x88888888,sr3
    191 
    192 	set_gr_immed	0x11111111,gr4	; SGR4-7
    193 	set_gr_immed	0x22222222,gr5
    194 	set_gr_immed	0x33333333,gr6
    195 	set_gr_immed	0x44444444,gr7
    196 	test_gr_immed	0x11111111,gr4	; SGR4-7
    197 	test_gr_immed	0x22222222,gr5
    198 	test_gr_immed	0x33333333,gr6
    199 	test_gr_immed	0x44444444,gr7
    200 	test_spr_immed	0x11111111,sr0	; SGR4-7
    201 	test_spr_immed	0x22222222,sr1
    202 	test_spr_immed	0x33333333,sr2
    203 	test_spr_immed	0x44444444,sr3
    204 	rett		0
    205 	fail
    206