File indexing completed on 2025-05-11 08:23:53
0001 #ifndef _ICTRL_H
0002 #define _ICTRL_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifdef __cplusplus
0012 extern "C" {
0013 #endif
0014
0015 #define _SIU_IRQENABLE ((unsigned long volatile *const)0x8007EFA8)
0016 #define _SIU_IRQPEND ((unsigned long volatile *const)0x8007EFA0)
0017
0018
0019 enum {
0020 IMASK_EXT0 = 0x80000000,
0021 IMASK_EXT1 = 0x20000000,
0022 IMASK_EXT2 = 0x08000000,
0023 IMASK_EXT3 = 0x02000000,
0024 IMASK_EXT4 = 0x00800000,
0025 IMASK_EXT5 = 0x00200000,
0026 IMASK_EXT6 = 0x00080000,
0027 IMASK_ALL = IMASK_EXT0 | IMASK_EXT1 | IMASK_EXT2 | IMASK_EXT3 |
0028 IMASK_EXT4 | IMASK_EXT5 | IMASK_EXT6
0029 };
0030
0031
0032 typedef enum {
0033 IRQ_EXT0,
0034 IRQ_EXT1,
0035 IRQ_EXT2,
0036 IRQ_EXT3,
0037 IRQ_EXT4,
0038 IRQ_EXT5,
0039 IRQ_EXT6,
0040 NUM_IRQS
0041 } ExtInt;
0042
0043
0044 typedef void (*ExtIsrHandler) (void);
0045
0046
0047
0048 extern void extIsrInit( void );
0049
0050
0051
0052 extern void extIrqSetHandler(ExtInt interrupt, ExtIsrHandler handler);
0053
0054
0055 #define extIrqIsSet(irq) \
0056 (*_SIU_IRQPEND & (irq))
0057
0058
0059 #define extIrqEnable(irq) \
0060 (*_SIU_IRQENABLE |= (irq))
0061
0062
0063 #define extIrqDisable(irq) \
0064 (*_SIU_IRQENABLE &= ~(irq))
0065
0066
0067
0068 #define extIrqGetEnable \
0069 (*_SIU_IRQENABLE)
0070
0071 #ifdef __cplusplus
0072 }
0073 #endif
0074
0075 #endif