blob: 6ab28f7025fca6f89159ab5951d39be12c95cd91 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
/*
* Shows usage of interrupts. Goes along with zpu_core_small_wip.vhd.
*/
#include <stdio.h>
volatile int counter;
/* Example of single, fixed interval non-maskable, nested interrupt. The interrupt signal is
* held high for enough cycles to guarantee that it will be noticed, i.e. longer than
* any io access + 4 cycles roughly.
*
* Any non-trivial interrupt controller would have support for
* acknowledging interrupts(i.e. keep interrupts asserted until
* software acknowledges them via memory mapped IO).
*/
void _zpu_interrupt(void)
{
/* interrupts are enabled so we need to finish up quickly,
* lest we will get infinite recursion!*/
counter++;
}
int main(int argc, char **argv)
{
int t;
t=counter;
for (;;)
{
if (t==counter)
{
puts("No interrupt\n");
} else
{
puts("Got interrupt\n");
t=counter;
}
}
}
|