OpenCores
URL https://opencores.org/ocsvn/lxp32/lxp32/trunk

Subversion Repositories lxp32

[/] [lxp32/] [trunk/] [verify/] [lxp32/] [src/] [firmware/] [test010.asm] - Diff between revs 2 and 9

Only display areas with differences | Details | Blame | View Log

Rev 2 Rev 9
/*
/*
 * This test verifies interrupt handling using a simple timer model
 * This test verifies interrupt handling using a simple timer model
 */
 */
        lc r100, 0x10000000 // test result output pointer
        lc r100, 0x10000000 // test result output pointer
        lc r101, halt
        lc r101, halt
        lc r102, failure
        lc r102, failure
        lc r103, 0x20000000 // timer: number of pulses (0xFFFFFFFF - infinite)
        lc r103, 0x20000000 // timer: number of pulses (0xFFFFFFFF - infinite)
        lc r104, 0x20000004 // timer: delay between pulses (in cycles)
        lc r104, 0x20000004 // timer: delay between pulses (in cycles)
        lc iv0, timer_handler0
        lc iv0, timer_handler0
        lc iv1, timer_handler1
        lc iv1, timer_handler1
        mov cr, 3 // enable interrupts 0 and 1
        mov cr, 3 // enable interrupts 0 and 1
        lc r32, 2000 // cycle counter
        lc r32, 2000 // cycle counter
        lc r33, cnt_loop
        lc r33, cnt_loop
        mov r34, 0 // interrupt 0 call counter
        mov r34, 0 // interrupt 0 call counter
        mov r35, 0 // interrupt 1 call counter
        mov r35, 0 // interrupt 1 call counter
        sw r104, 100
        sw r104, 100
        sw r103, 10
        sw r103, 10
cnt_loop:
cnt_loop:
        sub r32, r32, 1
        sub r32, r32, 1
        cjmpug r33, r32, 0 // cnt_loop
        cjmpug r33, r32, 0 // cnt_loop
        cjmpne r102, r34, 10 // failure
        cjmpne r102, r34, 10 // failure
        cjmpne r102, r35, 4 // failure
        cjmpne r102, r35, 4 // failure
        sw r100, 1
        sw r100, 1
        jmp r101 // halt
        jmp r101 // halt
failure:
failure:
        sw r100, 2
        sw r100, 2
halt:
halt:
        hlt
        hlt
        jmp r101 // halt
        jmp r101 // halt
timer_handler0:
timer_handler0:
        add r34, r34, 1
        add r34, r34, 1
        lc r0, 0x10000004
        lc r0, 0x10000004
        sw r0, r34
        sw r0, r34
        cjmpne irp, r34, 5 // exit interrupt handler if r34!=5
        cjmpne irp, r34, 5 // exit interrupt handler if r34!=5
        mov cr, 1 // disable interrupt 1
        mov cr, 1 // disable interrupt 1
        iret
        iret
timer_handler1:
timer_handler1:
        add r35, r35, 1
        add r35, r35, 1
// Interrupt 1 has lower priority than interrupt 0 and will be called later
// Interrupt 1 has lower priority than interrupt 0 and will be called later
        cjmpne r102, r34, r35
        cjmpne r102, r34, r35
        lc r0, 0x10000008
        lc r0, 0x10000008
        sw r0, r35
        sw r0, r35
        iret
        iret
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.