RTEMS 5.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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
69extern "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.