From b0a6351d52af8bdf6fa9cca0d313df323249a520 Mon Sep 17 00:00:00 2001 From: vetch Date: Tue, 10 Dec 2019 15:32:16 +0100 Subject: tmp kernel --- interrupts.c | 10 ++++++++++ interrupts.h | 1 + kernel.c | 1 + 3 files changed, 12 insertions(+) diff --git a/interrupts.c b/interrupts.c index 3dc3d6f..79007cb 100644 --- a/interrupts.c +++ b/interrupts.c @@ -12,4 +12,14 @@ void __attribute__((interrupt("UNDEF"))) undefined_instruction_vector(void) { /* Do Nothing! */ } +} + +__irq void IRQHandler (void) +{ + volatile unsigned int *base = (unsigned int *) 0x80000000; + if (*base == 1) // which interrupt was it? + { + uart_putc(*base); // process the interrupt + } + *(base+1) = 0; // clear the interrupt } \ No newline at end of file diff --git a/interrupts.h b/interrupts.h index 9dacc42..561df70 100644 --- a/interrupts.h +++ b/interrupts.h @@ -32,6 +32,7 @@ typedef struct { volatile uint32_t Disable_Basic_IRQs; } rpi_irq_controller_t; + extern rpi_irq_controller_t* RPI_GetIrqController(void); #endif //RPI_MMU_EXAMPLE_INTERRUPTS_H diff --git a/kernel.c b/kernel.c index 95d803d..81d261f 100644 --- a/kernel.c +++ b/kernel.c @@ -33,6 +33,7 @@ void kernel_main(uint32_t r0, uint32_t r1, uint32_t atags) // there and jumps to it... never, ever, ever returns demo_go_unprivileged(); + while(1); -- cgit v1.2.3