4.104.114.84.95
Last change
on this file since 73b5bd5d was
0aee2be5,
checked in by Ralf Corsepius <ralf.corsepius@…>, on 03/08/04 at 15:36:03
|
2004-03-08 Ralf Corsepius <corsepiu@…>
- mpc5xx/.cvsignore, mpc5xx/Makefile.am: New.
- mpc5xx/exceptions/asm_utils.S, mpc5xx/exceptions/raw_exception.c,
mpc5xx/exceptions/raw_exception.h, mpc5xx/ictrl/ictrl.c,
mpc5xx/ictrl/ictrl.h, mpc5xx/timer/timer.c: New (Submission from
Wilfried Busalski <w.busalski@…>).
|
-
Property mode set to
100644
|
File size:
1.8 KB
|
Line | |
---|
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 */ |
---|
Note: See
TracBrowser
for help on using the repository browser.