]> rtime.felk.cvut.cz Git - arc.git/blob - arch/arm/arm_cr4/kernel/irq_types.h
Fixed nested interrupts problem for Cortex R4.
[arc.git] / arch / arm / arm_cr4 / kernel / irq_types.h
1 /* -------------------------------- Arctic Core ------------------------------\r
2  * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
3  *\r
4  * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
5  *\r
6  * This source code is free software; you can redistribute it and/or modify it\r
7  * under the terms of the GNU General Public License version 2 as published by the\r
8  * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
9  *\r
10  * This program is distributed in the hope that it will be useful, but\r
11  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
12  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
13  * for more details.\r
14  * -------------------------------- Arctic Core ------------------------------*/\r
15 \r
16 #ifndef IRQ_TYPES_H\r
17 #define IRQ_TYPES_H\r
18 \r
19 \r
20 #define IrqGetCurrentInterruptSource() \\r
21         (((volatile sint8)vimREG->IRQIVEC) - 1)\r
22 \r
23 /** IrqActivateChannel turns the selected channel on in the VIM */\r
24 #define IrqActivateChannel(_channel) \\r
25         if (_channel > 31) { \\r
26                 vimREG->REQMASKSET1 |= (1 << (_channel - 32)); \\r
27         } else { \\r
28                 vimREG->REQMASKSET0 |= (1 << _channel); \\r
29         }\r
30 \r
31 \r
32 /** IrqDeactivateChannel turns the selected channel off in the VIM */\r
33 #define IrqDeactivateChannel(_channel) \\r
34         if (_channel > 31) { \\r
35                 vimREG->REQMASKCLR1 = (1 << (_channel - 32)); \\r
36         } else { \\r
37                 vimREG->REQMASKCLR0 = (1 << _channel); \\r
38         }\r
39 \r
40 \r
41 #define Irq_SOI() \\r
42         IrqDeactivateChannel(isrPtr->vector)\r
43 \r
44 \r
45 #define Irq_EOI() \\r
46         IrqActivateChannel(isrPtr->vector)\r
47 \r
48 \r
49 typedef enum {\r
50   ESM_LEVEL_0 = 0,\r
51   RESERVED = 1,\r
52   RTI_COMPARE_0,\r
53   RTI_COMPARE_1,\r
54   RTI_COMPARE_2,\r
55   RTI_COMPARE_3,\r
56   RTI_OVERFLOW_0,\r
57   RTI_OVERFLOW_1,\r
58   RTI_TIMEBASE,\r
59   DIO_LEVEL_0,\r
60   HET_LEVEL_0,\r
61   HET_TU_LEVEL_0,\r
62   MIBSP1_LEVEL_0,\r
63   LIN1_LEVEL_0,\r
64   MIBADC1_EVENT,\r
65   MIBADC1_GROUP_1,\r
66   CAN1_LEVEL_0,\r
67   RESERVED_0,\r
68   FR_LEVEL_0,\r
69   CRC_1,\r
70   ESM_LEVEL_1,\r
71   SSI = 21,\r
72   PMU,\r
73   DIO_LEVEL_1,\r
74   HET_LEVEL_1,\r
75   HET_TU_LEVEL_1,\r
76   MIBSP1_LEVEL_1,\r
77   LIN1_LEVEL_1,\r
78   MIBADC1_GROUP_2,\r
79   CAN1_LEVEL_1,\r
80   RESERVED_1,\r
81   MIBADC1_MAG,\r
82   FR_LEVEL_1,\r
83   DMA_FTCA,\r
84   DMA_LFSA,\r
85   CAN2_LEVEL_0,\r
86   DMM_LEVEL_0,\r
87   MIBSPI3_LEVEL_0,\r
88   MIBSPI3_LEVEL_1,\r
89   DMA_HBDC,\r
90   DMA_BTCA,\r
91   RESERVED_2,\r
92   CAN2_LEVEL_1,\r
93   DMM_LEVEL_1,\r
94   CAN1_IF_3,\r
95   CAN3_LEVEL_0,\r
96   CAN2_IF_3,\r
97   FPU,\r
98   FR_TU_STATUS,\r
99   LIN2_LEVEL_0,\r
100   MIBADC2_EVENT,\r
101   MIBADC2_GROUP_1,\r
102   FR_TOC,\r
103   MIBSPIP5_LEVEL_0,\r
104   LIN2_LEVEL_1,\r
105   CAN3_LEVEL_1,\r
106   MIBSPI5_LEVEL_1,\r
107   MIBADC2_GROUP_2,\r
108   FR_TU_ERROR,\r
109   MIBADC2_MAG,\r
110   CAN3_IF_3,\r
111   FR_TU_MPU,\r
112   FR_T1C,\r
113   NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS,\r
114 } IrqType;\r
115 \r
116 /* Total number of interrupts and exceptions\r
117  */\r
118 #define NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS 65\r
119 \r
120 typedef enum {\r
121           PERIPHERAL_CLOCK_AHB,\r
122           PERIPHERAL_CLOCK_APB1,\r
123           PERIPHERAL_CLOCK_APB2,\r
124           PERIPHERAL_CLOCK_CAN,\r
125           PERIPHERAL_CLOCK_DCAN1,\r
126           PERIPHERAL_CLOCK_DCAN2,\r
127           PERIPHERAL_CLOCK_DCAN3\r
128 } McuE_PeriperalClock_t;\r
129 \r
130 typedef enum {\r
131         CPU_0=0,\r
132 } Cpu_t;\r
133 \r
134 #endif /* IRQ_H_ */\r