OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [src_processor/] [lm32/] [sw/] [lm32/] [lm32_system.c] - Blame information for rev 48

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 48 alirezamon
 
2
#ifndef  LM32_SYS_C
3
        #define LM32_SYS_C
4
 
5
/***************************************************************************
6
 * IRQ handling
7
 */
8
 
9
/****************************************************************************
10
 * Types
11
 */
12
#include <stdint.h>
13
 
14
/****************************************************************************/
15
 
16
 
17
 
18
 
19
isr_ptr_t isr_table[32];
20
 
21
 
22
 
23
void isr_null()
24
{
25
 
26
}
27
 
28
void irq_handler(uint32_t pending)
29
{
30
        int i;
31
 
32
        for(i=0; i<32; i++) {
33
                if (pending & 0x01) (*isr_table[i])();
34
                pending >>= 1;
35
        }
36
}
37
 
38
void isr_init()
39
{
40
        int i;
41
        for(i=0; i<32; i++)
42
                isr_table[i] = &isr_null;
43
}
44
 
45
void isr_register(int irq, isr_ptr_t isr)
46
{
47
        isr_table[irq] = isr;
48
}
49
 
50
void isr_unregister(int irq)
51
{
52
        isr_table[irq] = &isr_null;
53
}
54
 
55
 
56
 
57
 
58
 
59
/******************
60
*       General inttrupt functions for all CPUs added to ProNoC
61
*******************/
62
 
63
 
64
 
65
int general_int_add(unsigned long irq, isr_ptr_t handler, void *arg)
66
{
67
 
68
        isr_register(irq, handler);
69
        return 0;
70
}
71
 
72
 
73
 
74
void general_int_enable(unsigned long irq){
75
        irq_set_mask( (0x00000001L << irq)| irq_get_mask() );
76
 
77
}
78
 
79
 
80
extern char _erodata, _fdata,_edata;
81
void __main (void){ //initial_global_data
82
 
83
        char *src = &_erodata;  //start of Data section in Rom
84
        char *dst = &_fdata;
85
 
86
        /* ROM has data at end of rodata; copy it. */
87
        while (dst < &_edata) {
88
        *dst++ = *src++;
89
        }
90
 
91
        main(); //call the main function now
92
}
93
 
94
 
95
#endif

powered by: WebSVN 2.1.0

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