1#progos: nowhere:disabled-due-to-randomness
2#mach: crisv10 crisv32
3#sim(crisv10): --hw-device "/rv/trace? true"
4#sim(crisv32): --hw-device "/rv/trace? true"
5#output: /rv: WD\n
6#output: /rv: REG R 0xd0000032\n
7#output: /rv: := 0xabcdef01\n
8#output: /rv: IRQ 0x4\n
9#output: /rv: REG R 0xd0000036\n
10#output: /rv: := 0x76543210\n
11#output: /rv: REG R 0xd0000036\n
12#output: /rv: := 0x76543211\n
13#output: /rv: REG R 0xd0000030\n
14#output: /rv: IRQ 0x0\n
15#output: /rv: := 0xeeff4455\n
16#output: pass\n
17
18# Trivial test of interrupts.
19# Locations of IRQ notifiers above depend on when the simulator is
20# polled; adjustments may be needed (after checking that no poll is
21# gone due to a bug!)
22
23#r W,
24#r r,a8832,abcdef01
25#r I,4
26#r r,a8836,76543210
27#r r,a8836,76543211
28#r I,0
29#r r,a8830,eeff4455
30
31 .lcomm dummy,4
32
33 .include "testutils.inc"
34 start
35 .if ..asm.arch.cris.v32
36 move irqvec1,$ebp
37 .else
38 move irqvec1,$ibr
39 .endif
40 test_h_mem 0xabcdef01 0xd0000032
41 nop
42 nop
43 test_h_mem 0x76543210 0xd0000036
44 ei
45 test_h_mem 0,dummy
46wouldreturnhere:
47 nop
48killme:
49 fail
50
51returnhere:
52 test_h_mem 0x76543211 0xd0000036
53 test_h_mem 0xeeff4455 0xd0000030
54 pass
55
56irq0x33:
57 .if ..asm.arch.cris.v32
58 test_h_dr wouldreturnhere,$erp
59 move returnhere,$erp
60 rete
61 rfe
62 .else
63 move $dccr,$r0
64 test_h_dr wouldreturnhere,$irp
65 move returnhere,$irp
66 reti
67 move $r0,$dccr
68 .endif
69
70 singlevec irqvec1,0x33,irq0x33
71