RTEMS
6.3
Toggle main menu visibility
Loading...
Searching...
No Matches
bsps
powerpc
include
ictrl.h
1
#ifndef _ICTRL_H
2
#define _ICTRL_H
3
4
/*
5
* mpc505/509 external interrupt controller management.
6
*
7
* FIXME: should be somehow merged into general RTEMS interrupt
8
* management code.
9
*/
10
11
#ifdef __cplusplus
12
extern
"C"
{
13
#endif
14
15
#define _SIU_IRQENABLE ((unsigned long volatile *const)0x8007EFA8)
16
#define _SIU_IRQPEND ((unsigned long volatile *const)0x8007EFA0)
17
18
/* Interrupt masks. */
19
enum
{
20
IMASK_EXT0 = 0x80000000,
21
IMASK_EXT1 = 0x20000000,
22
IMASK_EXT2 = 0x08000000,
23
IMASK_EXT3 = 0x02000000,
24
IMASK_EXT4 = 0x00800000,
25
IMASK_EXT5 = 0x00200000,
26
IMASK_EXT6 = 0x00080000,
27
IMASK_ALL = IMASK_EXT0 | IMASK_EXT1 | IMASK_EXT2 | IMASK_EXT3 |
28
IMASK_EXT4 | IMASK_EXT5 | IMASK_EXT6
29
};
30
31
/* Interrupt numbers. */
32
typedef
enum
{
33
IRQ_EXT0,
34
IRQ_EXT1,
35
IRQ_EXT2,
36
IRQ_EXT3,
37
IRQ_EXT4,
38
IRQ_EXT5,
39
IRQ_EXT6,
40
NUM_IRQS
41
} ExtInt;
42
43
/* Type of external interrupt handlers */
44
typedef
void (*ExtIsrHandler) (void);
45
46
/* Initialization. Must be called once after RTEMS interrupts sybsystem
47
is initiailized. 'predriver_hook' is one of such places. */
48
extern
void
extIsrInit(
void
);
49
50
/* Set interrupt handler 'handler' for external interrupt number
51
'interrupt'. */
52
extern
void
extIrqSetHandler(ExtInt interrupt, ExtIsrHandler handler);
53
54
/* Check is external interrupt 'irq' (IMASK_XXXX) is pended. */
55
#define extIrqIsSet(irq) \
56
(*_SIU_IRQPEND & (irq))
57
58
/* Enable external interrupt 'irq' (IMASK_XXXX) processing. */
59
#define extIrqEnable(irq) \
60
(*_SIU_IRQENABLE |= (irq))
61
62
/* Disable external interrupt 'irq' (IMASK_XXXX) processing. */
63
#define extIrqDisable(irq) \
64
(*_SIU_IRQENABLE &= ~(irq))
65
66
/* Check if external interrupt 'irq' (IMASK_XXXX) processing is
67
enabled. */
68
#define extIrqGetEnable \
69
(*_SIU_IRQENABLE)
70
71
#ifdef __cplusplus
72
}
73
#endif
74
75
#endif
/* _ICTRL_H */
Generated by
1.18.0