diff options
author | vetch <vetch97@gmail.com> | 2019-12-10 15:32:16 +0100 |
---|---|---|
committer | vetch <vetch97@gmail.com> | 2019-12-10 15:32:16 +0100 |
commit | b0a6351d52af8bdf6fa9cca0d313df323249a520 (patch) | |
tree | 53c8e3455bc38a82da2cf43a5b47acdb4a80022e | |
parent | e904acc2fa2b92519e732de030d9888bec8f2bfb (diff) | |
download | rpi-MMU-example-b0a6351d52af8bdf6fa9cca0d313df323249a520.tar.gz rpi-MMU-example-b0a6351d52af8bdf6fa9cca0d313df323249a520.zip |
tmp kernel
-rw-r--r-- | interrupts.c | 10 | ||||
-rw-r--r-- | interrupts.h | 1 | ||||
-rw-r--r-- | kernel.c | 1 |
3 files changed, 12 insertions, 0 deletions
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 @@ -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); |