diff options
author | Ralf Corsepius <ralf.corsepius@rtems.org> | 2004-03-08 15:36:03 +0000 |
---|---|---|
committer | Ralf Corsepius <ralf.corsepius@rtems.org> | 2004-03-08 15:36:03 +0000 |
commit | 0aee2be50e93ea3e719102e6f0e59d8364f8ba0c (patch) | |
tree | f16e0ae9765416f62e4f512b10cad61d57cf2c02 /c/src/lib/libcpu/powerpc/mpc5xx/ictrl/ictrl.h | |
parent | Unused (diff) | |
download | rtems-0aee2be50e93ea3e719102e6f0e59d8364f8ba0c.tar.bz2 |
2004-03-08 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* 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@lancier-monitoring.de>).
Diffstat (limited to 'c/src/lib/libcpu/powerpc/mpc5xx/ictrl/ictrl.h')
-rw-r--r-- | c/src/lib/libcpu/powerpc/mpc5xx/ictrl/ictrl.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/c/src/lib/libcpu/powerpc/mpc5xx/ictrl/ictrl.h b/c/src/lib/libcpu/powerpc/mpc5xx/ictrl/ictrl.h new file mode 100644 index 0000000000..303ece825d --- /dev/null +++ b/c/src/lib/libcpu/powerpc/mpc5xx/ictrl/ictrl.h @@ -0,0 +1,75 @@ +#ifndef _ICTRL_H +#define _ICTRL_H + +/* + * mpc505/509 external interrupt controller management. + * + * FIXME: should be somehow merged into general RTEMS interrupt + * management code. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#define _SIU_IRQENABLE ((unsigned long volatile *const)0x8007EFA8) +#define _SIU_IRQPEND ((unsigned long volatile *const)0x8007EFA0) + +/* Interrupt masks. */ +enum { + IMASK_EXT0 = 0x80000000, + IMASK_EXT1 = 0x20000000, + IMASK_EXT2 = 0x08000000, + IMASK_EXT3 = 0x02000000, + IMASK_EXT4 = 0x00800000, + IMASK_EXT5 = 0x00200000, + IMASK_EXT6 = 0x00080000, + IMASK_ALL = IMASK_EXT0 | IMASK_EXT1 | IMASK_EXT2 | IMASK_EXT3 | + IMASK_EXT4 | IMASK_EXT5 | IMASK_EXT6 +}; + +/* Interrupt numbers. */ +typedef enum { + IRQ_EXT0, + IRQ_EXT1, + IRQ_EXT2, + IRQ_EXT3, + IRQ_EXT4, + IRQ_EXT5, + IRQ_EXT6, + NUM_IRQS +} ExtInt; + +/* Type of external interrupt handlers */ +typedef void (*ExtIsrHandler) (void); + +/* Initialization. Must be called once after RTEMS interrupts sybsystem + is initiailized. 'predriver_hook' is one of such places. */ +extern void extIsrInit( void ); + +/* Set interrupt handler 'handler' for external interrupt number + 'interrupt'. */ +extern void extIrqSetHandler(ExtInt interrupt, ExtIsrHandler handler); + +/* Check is external interrupt 'irq' (IMASK_XXXX) is pended. */ +#define extIrqIsSet(irq) \ + (*_SIU_IRQPEND & (irq)) + +/* Enable external interrupt 'irq' (IMASK_XXXX) processing. */ +#define extIrqEnable(irq) \ + (*_SIU_IRQENABLE |= (irq)) + +/* Disable external interrupt 'irq' (IMASK_XXXX) processing. */ +#define extIrqDisable(irq) \ + (*_SIU_IRQENABLE &= ~(irq)) + +/* Check if external interrupt 'irq' (IMASK_XXXX) processing is + enabled. */ +#define extIrqGetEnable \ + (*_SIU_IRQENABLE) + +#ifdef __cplusplus +} +#endif + +#endif /* _ICTRL_H */ |