source: rtems/c/src/lib/libcpu/powerpc/mpc505/ictrl/ictrl.h @ f2442183

4.104.114.84.95
Last change on this file since f2442183 was f2442183, checked in by Joel Sherrill <joel.sherrill@…>, on Oct 18, 2000 at 6:33:47 PM

2000-10-18 Sergei Organov <osv@…>

  • Added full support for MPC505.
  • mpc505/ictrl: New directory.
  • configure.in, mpc505/Makefile.am: Modified to reflect ictrl addition.
  • mpc505/ictrl/.cvsignore, mpc505/ictrl/Makefile.am, mpc505/ictrl/ictrl.c, mpc505/ictrl/ictrl.h: New files.
  • mpc505/timer/timer.c: Use <rtems.h>, not "rtems.h".
  • mpc505/vectors/Makefile.am: alignment exception handler now included.
  • mpc505/vectors/vectors.S: Now use constants for exception numbers.
  • old_exception_processing/ppc_offs.h: New file.
  • old_exception_processing/Makefile.am: Account for ppc_offs.h.
  • old_exception_processing/cpu.h: Make Nest and Disable levels volatile.
  • old_exception_processing/cpu_asm.S: Offsets moved to ppc_offs.h.
  • 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
12extern "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. */
19enum {
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. */
32typedef 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 */
44typedef void (*ExtIsrHandler) (void);
45
46/* Initialization. Must be called once after RTEMS interrupts sybsystem
47   is initiailized. 'predriver_hook' is one of such places. */
48extern void extIsrInit( void );
49
50/* Set interrupt handler 'handler' for external interrupt number
51   'interrupt'. */
52extern 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.