From 49bd4c133fc83de1cb1761ff089a2de03699d991 Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Thu, 24 Mar 2022 16:44:51 -0700 Subject: IRQ Subscription --- include/cpu/irq.h | 14 ++++++++++++++ include/globals.h | 2 ++ include/symbols.h | 2 +- include/usr/main.h | 3 ++- 4 files changed, 19 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/cpu/irq.h b/include/cpu/irq.h index 1879707..c5e59bb 100644 --- a/include/cpu/irq.h +++ b/include/cpu/irq.h @@ -1,6 +1,19 @@ #ifndef CPU_IRQ_H #define CPU_IRQ_H +#define UART_IRQ 0 +#define SYS_TIMER_0_IRQ 1 +#define SYS_TIMER_1_IRQ 2 +#define SYS_TIMER_2_IRQ 3 +#define SYS_TIMER_3_IRQ 4 +#define LOCAL_TIMER_IRQ 5 +#define MAX_IRQS LOCAL_TIMER_IRQ+1 + +struct IrqEntry { + void* handler; + void* handler_info; +}; + static inline void enableirq(void) { asm volatile("cpsie i"); @@ -20,5 +33,6 @@ static inline void disablefiq(void) unsigned long c_irq_handler(void); unsigned long c_fiq_handler(void); +void subscribe_irq(unsigned long irq_num, void* handler, void* handler_info); #endif diff --git a/include/globals.h b/include/globals.h index 6c7e1f1..478b62e 100644 --- a/include/globals.h +++ b/include/globals.h @@ -1,5 +1,6 @@ #ifndef GLOBALS_H #define GLOBALS_H +#include #include #include @@ -20,6 +21,7 @@ extern struct Mutex mutexs[MAX_MUTEXS]; extern struct Entry mutex_entries[MAX_MUTEXS]; extern struct Thread threads[MAX_THREADS]; extern struct Entry thread_entries[MAX_THREADS]; +extern struct IrqEntry irqs[MAX_IRQS]; #endif #endif diff --git a/include/symbols.h b/include/symbols.h index 90cfcf0..b81b1a9 100644 --- a/include/symbols.h +++ b/include/symbols.h @@ -50,7 +50,7 @@ enum IRQ_BASIC_DISABLE = (IRQ_BASE + 0x224), // Peripherals Interrupts - UART_IRQ = 57, + //UART_IRQ = 57, GPIO_IRQ_0 = 49, GPIO_IRQ_1 = 50, GPIO_IRQ_2 = 51, diff --git a/include/usr/main.h b/include/usr/main.h index 5fd29f9..3aec5a9 100644 --- a/include/usr/main.h +++ b/include/usr/main.h @@ -2,11 +2,12 @@ #define USR_MAIN_H #ifdef RPI_BUILD - #define USR_TIME 40 + #define USR_TIME 260 #else #define USR_TIME 2000 #endif void main(void); +void handle_data(unsigned char); #endif -- cgit v1.2.1