Commit 72b3b8f2 authored by Max Filippov's avatar Max Filippov
Browse files

target/xtensa: tests: fix timer tests



Don't expect that CCOUNT increments are equal to the number of executed
instructions. Verify that timer interrupt does not fire before the
programmed CCOMPARE value and does fire after.

Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
parent 122d3020
Loading
Loading
Loading
Loading
+33 −28
Original line number Diff line number Diff line
#include "macros.inc"

#define CCOUNT_SHIFT 4
#define WAIT_LOOPS 20

.macro      make_ccount_delta target, delta
    rsr     \delta, ccount
    rsr     \target, ccount
    sub     \delta, \target, \delta
    slli    \delta, \delta, CCOUNT_SHIFT
    add     \target, \target, \delta
.endm

test_suite timer

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

test ccompare
@@ -18,18 +28,18 @@ test ccompare
    wsr     a2, ccompare1
    wsr     a2, ccompare2

    movi    a3, 20
    rsr     a2, ccount
    addi    a2, a2, 20
    make_ccount_delta a2, a15
    wsr     a2, ccompare0
    rsr     a2, interrupt
    assert  eqi, a2, 0
    loop    a3, 1f
    rsr     a3, interrupt
    bnez    a3, 2f
1:
    test_fail
    rsr     a3, interrupt
    rsr     a4, ccount
    rsr     a5, interrupt
    sub     a4, a4, a2
    bgez    a4, 2f
    assert  eqi, a3, 0
    j       1b
2:
    assert  nei, a5, 0
test_end

test ccompare0_interrupt
@@ -42,9 +52,8 @@ test ccompare0_interrupt
    wsr     a2, ccompare1
    wsr     a2, ccompare2

    movi    a3, 20
    rsr     a2, ccount
    addi    a2, a2, 20
    movi    a3, WAIT_LOOPS
    make_ccount_delta a2, a15
    wsr     a2, ccompare0
    rsync
    rsr     a2, interrupt
@@ -72,9 +81,8 @@ test ccompare1_interrupt
    wsr     a2, ccompare0
    wsr     a2, ccompare2

    movi    a3, 20
    rsr     a2, ccount
    addi    a2, a2, 20
    movi    a3, WAIT_LOOPS
    make_ccount_delta a2, a15
    wsr     a2, ccompare1
    rsync
    rsr     a2, interrupt
@@ -99,9 +107,8 @@ test ccompare2_interrupt
    wsr     a2, ccompare0
    wsr     a2, ccompare1

    movi    a3, 20
    rsr     a2, ccount
    addi    a2, a2, 20
    movi    a3, WAIT_LOOPS
    make_ccount_delta a2, a15
    wsr     a2, ccompare2
    rsync
    rsr     a2, interrupt
@@ -125,11 +132,10 @@ test ccompare_interrupt_masked
    movi    a2, 0
    wsr     a2, ccompare2

    movi    a3, 40
    rsr     a2, ccount
    addi    a2, a2, 20
    movi    a3, 2 * WAIT_LOOPS
    make_ccount_delta a2, a15
    wsr     a2, ccompare1
    addi    a2, a2, 20
    add     a2, a2, a15
    wsr     a2, ccompare0
    rsync
    rsr     a2, interrupt
@@ -156,11 +162,10 @@ test ccompare_interrupt_masked_waiti
    movi    a2, 0
    wsr     a2, ccompare2

    movi    a3, 40
    rsr     a2, ccount
    addi    a2, a2, 20
    movi    a3, 2 * WAIT_LOOPS
    make_ccount_delta a2, a15
    wsr     a2, ccompare1
    addi    a2, a2, 20
    add     a2, a2, a15
    wsr     a2, ccompare0
    rsync
    rsr     a2, interrupt