RTEMS  5.0.0
irq.h
1 /*===============================================================*\
2 | Project: RTEMS virtex BSP |
3 +-----------------------------------------------------------------+
4 | Copyright (c) 2007 |
5 | Embedded Brains GmbH |
6 | Obere Lagerstr. 30 |
7 | D-82178 Puchheim |
8 | Germany |
9 | rtems@embedded-brains.de |
10 +-----------------------------------------------------------------+
11 | The license and distribution terms for this file may be |
12 | found in the file LICENSE in this distribution or at |
13 | |
14 | http://www.rtems.org/license/LICENSE. |
15 | |
16 +-----------------------------------------------------------------+
17 | this file declares constants of the interrupt controller |
18 \*===============================================================*/
19 #ifndef VIRTEX_IRQ_IRQ_H
20 #define VIRTEX_IRQ_IRQ_H
21 
22 #include <rtems/irq.h>
23 #include <rtems/irq-extension.h>
24 #include <bsp/opbintctrl.h>
25 
26 /*
27  * the following definitions specify the indices used
28  * to interface the interrupt handler API
29  */
30 
31 /*
32  * Peripheral IRQ handlers related definitions
33  */
34 #define BSP_OPBINTC_PER_IRQ_NUMBER XPAR_INTC_MAX_NUM_INTR_INPUTS
35 #define BSP_OPBINTC_IRQ_LOWEST_OFFSET 0
36 #define BSP_OPBINTC_IRQ_MAX_OFFSET (BSP_OPBINTC_IRQ_LOWEST_OFFSET\
37  +BSP_OPBINTC_PER_IRQ_NUMBER-1)
38 
39 #define BSP_IS_OPBINTC_IRQ(irqnum) \
40  (((irqnum) >= BSP_OPBINTC_IRQ_LOWEST_OFFSET) && \
41  ((irqnum) <= BSP_OPBINTC_IRQ_MAX_OFFSET))
42 /*
43  * Processor IRQ handlers related definitions
44  */
45 #define BSP_PROCESSOR_IRQ_NUMBER 3
46 #define BSP_PROCESSOR_IRQ_LOWEST_OFFSET (BSP_OPBINTC_IRQ_MAX_OFFSET+1)
47 #define BSP_PROCESSOR_IRQ_MAX_OFFSET (BSP_PROCESSOR_IRQ_LOWEST_OFFSET\
48  +BSP_PROCESSOR_IRQ_NUMBER-1)
49 
50 #define BSP_IS_PROCESSOR_IRQ(irqnum) \
51  (((irqnum) >= BSP_PROCESSOR_IRQ_LOWEST_OFFSET) && \
52  ((irqnum) <= BSP_PROCESSOR_IRQ_MAX_OFFSET))
53 /*
54  * Summary
55  */
56 #define BSP_IRQ_NUMBER (BSP_PROCESSOR_IRQ_MAX_OFFSET+1)
57 #define BSP_LOWEST_OFFSET BSP_OPBINTC_IRQ_LOWEST_OFFSET
58 #define BSP_MAX_OFFSET BSP_PROCESSOR_IRQ_MAX_OFFSET
59 
60 #define BSP_IS_VALID_IRQ(irqnum) \
61  (BSP_IS_PROCESSOR_IRQ(irqnum) \
62  || BSP_IS_OPBINTC_IRQ(irqnum))
63 
64 #define BSP_INTERRUPT_VECTOR_MIN 0
65 #define BSP_INTERRUPT_VECTOR_MAX BSP_PROCESSOR_IRQ_MAX_OFFSET
66 
67 #ifndef ASM
68 #ifdef __cplusplus
69 extern "C" {
70 #endif
71 
72 /*
73  * index table for the module specific handlers, a few entries are only placeholders
74  */
75  typedef enum {
76  BSP_OPBINTC_IRQ_FIRST = BSP_OPBINTC_IRQ_LOWEST_OFFSET,
77  /*
78  * Note: for this BSP, the peripheral names are derived
79  * from the Xilinx parameter file
80  */
81  BSP_OPBINTC_IRQ_LAST = BSP_OPBINTC_IRQ_MAX_OFFSET,
82  BSP_EXT = BSP_PROCESSOR_IRQ_LOWEST_OFFSET + 0,
83  BSP_PIT = BSP_PROCESSOR_IRQ_LOWEST_OFFSET + 1,
84  BSP_CRIT = BSP_PROCESSOR_IRQ_LOWEST_OFFSET + 2
85  } rtems_irq_symbolic_name;
86 
87 #define BSP_OPBINTC_XPAR(xname) (BSP_OPBINTC_IRQ_LOWEST_OFFSET+xname)
88 
89 #ifdef __cplusplus
90 }
91 #endif
92 #endif /* ASM */
93 
94 #endif /* VIRTEX_IRQ_IRQ_H */
Header file for the Interrupt Manager Extension.