File:  [Qemu by Fabrice Bellard] / qemu / tests / xtensa / test_timer.S
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 19:19:08 2018 UTC (8 years, 3 months ago) by root
Branches: qemu, MAIN
CVS tags: qemu1001, HEAD
qemu 1.0.1

.include "macros.inc"

test_suite timer

test ccount
    rsr     a3, ccount
    rsr     a4, ccount
    sub     a3, a4, a3
    assert  eqi, a3, 1
test_end

test ccompare
    movi    a2, 0
    wsr     a2, intenable
    rsr     a2, interrupt
    wsr     a2, intclear
    movi    a2, 0
    wsr     a2, ccompare1
    wsr     a2, ccompare2

    movi    a3, 20
    rsr     a2, ccount
    addi    a2, a2, 20
    wsr     a2, ccompare0
    rsr     a2, interrupt
    assert  eqi, a2, 0
    loop    a3, 1f
    rsr     a3, interrupt
    bnez    a3, 2f
1:
    test_fail
2:
test_end

test ccompare0_interrupt
    set_vector kernel, 2f
    movi    a2, 0
    wsr     a2, intenable
    rsr     a2, interrupt
    wsr     a2, intclear
    movi    a2, 0
    wsr     a2, ccompare1
    wsr     a2, ccompare2

    movi    a3, 20
    rsr     a2, ccount
    addi    a2, a2, 20
    wsr     a2, ccompare0
    rsync
    rsr     a2, interrupt
    assert  eqi, a2, 0

    movi    a2, 0x40
    wsr     a2, intenable
    rsil    a2, 0
    loop    a3, 1f
    nop
1:
    test_fail
2:
    rsr     a2, exccause
    assert  eqi, a2, 4 /* LEVEL1_INTERRUPT_CAUSE */
test_end

test ccompare1_interrupt
    set_vector level3, 2f
    movi    a2, 0
    wsr     a2, intenable
    rsr     a2, interrupt
    wsr     a2, intclear
    movi    a2, 0
    wsr     a2, ccompare0
    wsr     a2, ccompare2

    movi    a3, 20
    rsr     a2, ccount
    addi    a2, a2, 20
    wsr     a2, ccompare1
    rsync
    rsr     a2, interrupt
    assert  eqi, a2, 0
    movi    a2, 0x400
    wsr     a2, intenable
    rsil    a2, 2
    loop    a3, 1f
    nop
1:
    test_fail
2:
test_end

test ccompare2_interrupt
    set_vector level5, 2f
    movi    a2, 0
    wsr     a2, intenable
    rsr     a2, interrupt
    wsr     a2, intclear
    movi    a2, 0
    wsr     a2, ccompare0
    wsr     a2, ccompare1

    movi    a3, 20
    rsr     a2, ccount
    addi    a2, a2, 20
    wsr     a2, ccompare2
    rsync
    rsr     a2, interrupt
    assert  eqi, a2, 0
    movi    a2, 0x2000
    wsr     a2, intenable
    rsil    a2, 4
    loop    a3, 1f
    nop
1:
    test_fail
2:
test_end

test ccompare_interrupt_masked
    set_vector kernel, 2f
    movi    a2, 0
    wsr     a2, intenable
    rsr     a2, interrupt
    wsr     a2, intclear
    movi    a2, 0
    wsr     a2, ccompare2

    movi    a3, 40
    rsr     a2, ccount
    addi    a2, a2, 20
    wsr     a2, ccompare1
    addi    a2, a2, 20
    wsr     a2, ccompare0
    rsync
    rsr     a2, interrupt
    assert  eqi, a2, 0

    movi    a2, 0x40
    wsr     a2, intenable
    rsil    a2, 0
    loop    a3, 1f
    nop
1:
    test_fail
2:
    rsr     a2, exccause
    assert  eqi, a2, 4 /* LEVEL1_INTERRUPT_CAUSE */
test_end

test ccompare_interrupt_masked_waiti
    set_vector kernel, 2f
    movi    a2, 0
    wsr     a2, intenable
    rsr     a2, interrupt
    wsr     a2, intclear
    movi    a2, 0
    wsr     a2, ccompare2

    movi    a3, 40
    rsr     a2, ccount
    addi    a2, a2, 20
    wsr     a2, ccompare1
    addi    a2, a2, 20
    wsr     a2, ccompare0
    rsync
    rsr     a2, interrupt
    assert  eqi, a2, 0

    movi    a2, 0x40
    wsr     a2, intenable
    waiti   0
    test_fail
2:
    rsr     a2, exccause
    assert  eqi, a2, 4 /* LEVEL1_INTERRUPT_CAUSE */
test_end

test_suite_end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.