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

Subversion Repositories lxp32

[/] [lxp32/] [trunk/] [verify/] [lxp32/] [src/] [firmware/] [test019.asm] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 9 ring0_mipt
/*
2
 * This test verifies non-returnable interrupt handling
3
 * Note: "iret" is never called here
4
 */
5
 
6
        lc r100, 0x10000000 // test result output pointer
7
        lcs r101, halt
8
        lc r102, failure
9
        lc r103, 0x20000000 // timer: number of pulses (0xFFFFFFFF - infinite)
10
        lc r104, 0x20000004 // timer: delay between pulses (in cycles)
11
        lcs r105, success
12
 
13
        lcs r32, 0 // counter
14
 
15
        lcs iv0, test_loop@1 // set IRF to mark the interrupt as non-returnable
16
        mov cr, 1 // enable timer interrupt
17
        sw r104, 100 // delay between interrupts
18
        sw r103, 100 // generate 100 interrupts
19
        hlt // wait for a non-returnable interrupt
20
 
21
test_loop:
22
        add r32, r32, 1
23
        cjmpuge r105, r32, 100 // success
24
        hlt // wait for a non-returnable interrupt
25
 
26
failure:
27
        sw r100, 2 // should never reach here
28
        jmp r101 // halt
29
 
30
success:
31
        sw r100, 1 // success
32
 
33
halt:
34
        hlt
35
        jmp r101 // halt

powered by: WebSVN 2.1.0

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