s390: Error if vector index register omitted in assembly
[binutils-gdb.git] / sim / testsuite / frv / interrupts / badalign.cgs
blobb8660219da8c4ed4cceb02163c03a2e0f5030808
1 # frv testcase to generate interrupt for st $GRk,@($GRi,$GRj)
2 # mach: fr500 frv
3         .include "testutils.inc"
5         start
7         .global align
8 align:
9         and_spr_immed   -4081,tbr               ; clear tbr.tt
10         set_gr_spr      tbr,gr17
11         inc_gr_immed    0x100,gr17              ; address of exception handler
12         set_bctrlr_0_0  gr17
13         set_spr_immed   128,lcr
14         set_spr_addr    ok1,lr
15         set_psr_et      1
16         set_gr_immed    0xdeadbeef,gr17
17         set_gr_immed    0,gr15
18         inc_gr_immed    2,sp            ; out of alignment
20         test_spr_bits   1,0,1,isr       ; mem_address_not_aligned is masked
21         sti             gr17,@(sp,0)    ; no exception
22         ldi             @(sp,-2),gr18   ; stored at aligned address
23         test_gr_immed   0xdeadbeef,gr18
24         ldi             @(sp,0),gr19    ; no exception
25         test_gr_immed   0xdeadbeef,gr19
27         and_spr_immed   0xfffffffe,isr  ; turn off ISR.EMAM
28         set_gr_addr     bad1,gr16
29 bad1:   sti             gr17,@(sp,0)    ; misaligned write in slot I1
30         test_gr_immed   1,gr15
32         set_gr_addr     bad3,gr16
33         set_gr_gr       sp,gr20
34         set_gr_immed    1,gr21
35         set_gr_immed    0x10101010,gr10
36 bad2:   nop.p
37 bad3:   ldu             @(sp,gr21),gr10 ; misaligned read in slot I2
38         test_gr_immed   2,gr15          ; handler was called
39         test_gr_immed   0x10101010,gr10 ; gr10 not updated
40         test_gr_immed   1,gr21          ; gr21 not updated
41         inc_gr_immed    1,gr20
42         test_gr_gr      gr20,sp         ; sp updated
44         pass
46 ; exception handler
47 ok1:
48         cmpi            gr15,0,icc0
49         bne             icc0,0,load
50         ; handle interrupt on store
51         test_spr_immed  0x100,esfr1             ; esr8 is active
52         test_spr_gr     epcr8,gr16
53         test_spr_bits   0x0001,0,0x1,esr8       ; esr8 is valid
54         test_spr_bits   0x003e,1,0xb,esr8       ; esr8.ec is set
55         test_spr_bits   0x0800,11,0x1,esr8      ; esr8.eav is set
56         test_spr_gr     ear8,sp
57         test_spr_bits   0x01000,12,0x1,esr8     ; esr8.edv is set
58         test_spr_bits   0x1e000,13,0x3,esr8     ; esr8.edn is 3
59         test_spr_gr     edr3,gr17               ; edr3 is set
60         bra             ret
61 load:
62         ; handle interrupt on load
63         test_spr_immed  0x200,esfr1             ; esr9 is active
64         test_spr_gr     epcr9,gr16
65         test_spr_bits   0x0001,0,0x1,esr9       ; esr9 is valid
66         test_spr_bits   0x003e,1,0xb,esr9       ; esr9.ec is set
67         test_spr_bits   0x0800,11,0x1,esr9      ; esr9.eav is set
68         test_spr_gr     ear9,sp
69         test_spr_bits   0x1000,12,0x0,esr9      ; esr9.edv is not set
70 ret:
71         inc_gr_immed    1,gr15
72         rett            0
73         fail