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

Subversion Repositories pss

[/] [pss/] [trunk/] [pss/] [SW/] [onboard/] [Trap/] [Trap.c] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 AlexAntono
#define IO_GPR                  (*(volatile unsigned int *)(0x8A000000))
2
 
3
#define REG_CPU_CONTROL         (*(volatile unsigned int *)(0x40000000))
4
#define REG_CPU_PC              (*(volatile unsigned int *)(0x40000004))
5
#define REG_CPU_A31             (*(volatile unsigned int *)(0x40000008))
6
#define REG_DBG_A31             (*(volatile unsigned int *)(0x4000000C))
7
 
8
#define REG_INTC_CONTROL        (*(volatile unsigned int *)(0x40000010))
9
#define REG_INTC_MASK           (*(volatile unsigned int *)(0x40000014))
10
#define REG_INTC_REQ            (*(volatile unsigned int *)(0x40000018))
11
#define REG_MEM_SIZE_KB         (*(volatile unsigned int *)(0x4000001C))
12
 
13
#define REG_DMA_CONTROL         (*(volatile unsigned int *)(0x40000020))
14
#define REG_DMA_SOURCEADDR      (*(volatile unsigned int *)(0x40000024))
15
#define REG_DMA_DESTADDR        (*(volatile unsigned int *)(0x40000028))
16
#define REG_DMA_SIZE            (*(volatile unsigned int *)(0x4000002C))
17
 
18
#define REG_SGI                 (*(volatile unsigned int *)(0x40000030))
19
 
20
#define REG_BUS_ERROR_ADDR      (*(volatile unsigned int *)(0x40000038))
21
#define REG_BUS_ERROR_PC        (*(volatile unsigned int *)(0x4000003C))
22
 
23
#define REG_TRAP_CONTROL        (*(volatile unsigned int *)(0x40000040))
24
#define REG_TRAP_ADDR           (*(volatile unsigned int *)(0x40000044))
25
 
26
#define REG_INTC_CONTROL        (*(volatile unsigned int *)(0x40000010))
27
#define REG_INTC_MASK           (*(volatile unsigned int *)(0x40000014))
28
#define REG_INTC_REQ            (*(volatile unsigned int *)(0x40000018))
29
 
30
 
31
void _zpu_interrupt(void)
32
{
33
        IO_GPR = 0x123455AA;
34
    REG_INTC_REQ = 0xFF;                // deasserting requests
35
    while (1) {}
36
}
37
 
38
int recursive_count(int counter)
39
{
40
    int i;
41
    for (i = 0; i < 100000; i++) {}
42
 
43
    counter++;
44
    IO_GPR = counter;
45
    if (counter == 10000) return counter;
46
    else recursive_count(counter);
47
}
48
 
49
int main()
50
{
51
    int counter;
52
    counter = 0;
53
 
54
    REG_TRAP_ADDR = 0x00001800;
55
    REG_TRAP_CONTROL = 0x01;
56
 
57
    REG_INTC_MASK = 0xFF;
58
 
59
    REG_INTC_CONTROL = 0x01;        // enabling IE
60
 
61
    IO_GPR = recursive_count(counter);
62
 
63
    while (1) {}
64
}

powered by: WebSVN 2.1.0

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