Statistics
| Branch: | Revision:

root / tests / xtensa / test_timer.S @ 7d890b40

History | View | Annotate | Download (2 kB)

1
.include "macros.inc"
2

    
3
test_suite timer
4

    
5
test ccount
6
    rsr     a3, ccount
7
    rsr     a4, ccount
8
    sub     a3, a4, a3
9
    assert  eqi, a3, 1
10
test_end
11

    
12
test ccompare
13
    movi    a2, 0
14
    wsr     a2, intenable
15
    rsr     a2, interrupt
16
    wsr     a2, intclear
17
    wsr     a2, ccompare1
18
    wsr     a2, ccompare2
19

    
20
    movi    a3, 20
21
    rsr     a2, ccount
22
    addi    a2, a2, 20
23
    wsr     a2, ccompare0
24
    rsr     a2, interrupt
25
    assert  eqi, a2, 0
26
    loop    a3, 1f
27
    rsr     a3, interrupt
28
    bnez    a3, 2f
29
1:
30
    test_fail
31
2:
32
test_end
33

    
34
test ccompare0_interrupt
35
    set_vector kernel, 2f
36
    movi    a2, 0
37
    wsr     a2, intenable
38
    rsr     a2, interrupt
39
    wsr     a2, intclear
40
    wsr     a2, ccompare1
41
    wsr     a2, ccompare2
42

    
43
    movi    a3, 20
44
    rsr     a2, ccount
45
    addi    a2, a2, 20
46
    wsr     a2, ccompare0
47
    rsync
48
    rsr     a2, interrupt
49
    assert  eqi, a2, 0
50

    
51
    movi    a2, 0x40
52
    wsr     a2, intenable
53
    rsil    a2, 0
54
    loop    a3, 1f
55
    nop
56
1:
57
    test_fail
58
2:
59
    rsr     a2, exccause
60
    assert  eqi, a2, 4 /* LEVEL1_INTERRUPT_CAUSE */
61
test_end
62

    
63
test ccompare1_interrupt
64
    set_vector level3, 2f
65
    movi    a2, 0
66
    wsr     a2, intenable
67
    rsr     a2, interrupt
68
    wsr     a2, intclear
69
    wsr     a2, ccompare0
70
    wsr     a2, ccompare2
71

    
72
    movi    a3, 20
73
    rsr     a2, ccount
74
    addi    a2, a2, 20
75
    wsr     a2, ccompare1
76
    rsync
77
    rsr     a2, interrupt
78
    assert  eqi, a2, 0
79
    movi    a2, 0x400
80
    wsr     a2, intenable
81
    rsil    a2, 2
82
    loop    a3, 1f
83
    nop
84
1:
85
    test_fail
86
2:
87
test_end
88

    
89
test ccompare2_interrupt
90
    set_vector level5, 2f
91
    movi    a2, 0
92
    wsr     a2, intenable
93
    rsr     a2, interrupt
94
    wsr     a2, intclear
95
    wsr     a2, ccompare0
96
    wsr     a2, ccompare1
97

    
98
    movi    a3, 20
99
    rsr     a2, ccount
100
    addi    a2, a2, 20
101
    wsr     a2, ccompare2
102
    rsync
103
    rsr     a2, interrupt
104
    assert  eqi, a2, 0
105
    movi    a2, 0x2000
106
    wsr     a2, intenable
107
    rsil    a2, 4
108
    loop    a3, 1f
109
    nop
110
1:
111
    test_fail
112
2:
113
test_end
114

    
115
test_suite_end