callback addr as u32 not a void ptr
[my-code/arm.git] / betty / interrupts.h
index ab93f8f..c1a4f04 100644 (file)
 #define INTERRUPT_EXT_POLAR_HIGH       1
 
 #define INTERRUPT_SET                  0x00
-#define INTERRUPT_EINUSE               0x01
+#define INTERRUPT_USED                 0x01
+#define INTERRUPT_PRIORITY_USED                0x02
 
 /* type definitions */
 
 typedef struct s_interrupt {
-       void *default_callback;
-       u8 default_mode;
-       void *callback[INTERRUPT_MAX_VIC];
-       u8 mode[INTERRUPT_MAX_VIC];
+       void (*default_soft_callback)(void);
 } t_interrupt;
 
 /* function prototypes */
 
-void interrupt_set_default_callback(t_interrupt *ir,void *callback);
-
-void interrupt_ext_ir_conf(u8 pin,u8 mode,u8 polar,
-                           void (*ext_ir_callback)(t_interrupt *ir));
+void interrupt_init(void);
+void interrupt_set_default_callback(u32 callback_addr);
+void interrupt_set_soft_callback(void (*callback)(void));
+void interrupt_soft_clear(u8 src_number);
+void interrupt_clear(u8 src_number);
+void interrupt_soft_enable(u8 src_number);
+int interrupt_enable(u8 src_number,u8 mode,u8 priority,u32 callback_addr);
 
 void interrupt_handler_reset(void);
 void interrupt_handler_undef_instruction(void);