diff options
author | Vegard Storheil Eriksen <zyp@jvnv.net> | 2021-09-15 23:16:11 +0200 |
---|---|---|
committer | Vegard Storheil Eriksen <zyp@jvnv.net> | 2021-09-15 23:16:11 +0200 |
commit | 968937d0d937487ab301f017c145889fc0e94692 (patch) | |
tree | a62e27423fdc515c71624def636b63b12f06cf57 /interrupt/clic.h | |
parent | 9194e871a4590d1118f40ea8dbf1d34e45bc759c (diff) |
platforms: Add initial RISC-V/GD32V support.
Diffstat (limited to 'interrupt/clic.h')
-rw-r--r-- | interrupt/clic.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/interrupt/clic.h b/interrupt/clic.h new file mode 100644 index 0000000..247aeec --- /dev/null +++ b/interrupt/clic.h @@ -0,0 +1,33 @@ +#pragma once + +#include "interrupt_enums.h" + +#include <mmio/mmio.h> + +struct CLIC_int_reg_t { + volatile uint8_t IP; + volatile uint8_t IE; + volatile uint8_t ATTR; + volatile uint8_t CTL; +}; + +struct CLIC_reg_t { + volatile uint32_t CFG; + volatile uint32_t INFO; + uint32_t _reserved[14]; + volatile uint32_t TRIG[32]; + uint32_t _reserved2[976]; + CLIC_int_reg_t INT[4096]; +}; + + +class CLIC_t : public mmio_ptr<CLIC_reg_t> { + public: + void enable(interrupt::irq n) const { + ptr()->INT[int(n)].IE = 1; + } + + void enable(interrupt::internal n) const { + ptr()->INT[int(n)].IE = 1; + } +}; |