1 # frv testcase to generate interrupts for bad register alignment
3 .include "testutils.inc"
9 and_spr_immed -4081,tbr ; clear tbr.tt
11 inc_gr_immed 0x080,gr17 ; address of exception handler
13 inc_gr_immed 0x050,gr17 ; address of exception handler
19 set_gr_immed 4,gr20 ; PC increment
21 inc_gr_immed -12,sp ; for memory alignment
24 bad1: stdi gr1,@(sp,0) ; misaligned reg
28 bad2: lddi @(sp,0),gr9 ; misaligned reg
32 bad3: stdc cpr1,@(sp,gr0) ; misaligned reg
36 bad4: lddc @(sp,gr0),cpr9 ; misaligned reg
40 bad5: stqi gr2,@(sp,0) ; misaligned reg
44 bad6: ldqi @(sp,0),gr10 ; misaligned reg
48 bad7: stqc cpr2,@(sp,gr0) ; misaligned reg
52 bad8: ldqc @(sp,gr0),cpr10 ; misaligned reg
55 set_gr_immed 0,gr20 ; PC increment
57 bad9: stdfi fr1,@(sp,0) ; misaligned reg
61 bada: lddfi @(sp,0),fr9 ; misaligned reg
65 badb: stqfi fr2,@(sp,0) ; misaligned reg
69 badc: ldqfi @(sp,0),fr10 ; misaligned reg
79 ; check register_exception
80 test_spr_immed 0x1,esfr1 ; esr0 is active
81 test_spr_gr epcr0,gr17
82 test_spr_bits 0x0001,0,0x1,esr0 ; esr0 is valid
83 test_spr_bits 0x003e,1,0xc,esr0 ; esr0.ec is set
84 test_spr_bits 0x00c0,6,0x1,esr0 ; esr0.rec is set
85 test_spr_bits 0x0800,11,0x0,esr0 ; esr0.eav is not set
92 test_spr_immed 0,esfr1 ; no esr's active