| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- // See LICENSE file for licence details
- #ifndef N22_FUNC_H
- #define N22_FUNC_H
- #include "n22_tmr.h"
- #include "n22_eclic.h"
- #define ECLIC_GROUP_LEVEL0_PRIO4 0
- #define ECLIC_GROUP_LEVEL1_PRIO3 1
- #define ECLIC_GROUP_LEVEL2_PRIO2 2
- #define ECLIC_GROUP_LEVEL3_PRIO1 3
- #define ECLIC_GROUP_LEVEL4_PRIO0 4
- void switch_m2u_mode();
- uint32_t get_tmr_freq();
- uint32_t mtime_lo(void);
- uint32_t mtime_hi(void);
- uint64_t get_timer_value();
- uint64_t get_instret_value();
- uint64_t get_cycle_value();
- void eclic_init(uint32_t num_irq);
- void eclic_enable_interrupt(uint32_t source);
- void eclic_disable_interrupt(uint32_t source);
- void eclic_set_pending(uint32_t source);
- void eclic_clear_pending(uint32_t source);
- void eclic_set_intctrl(uint32_t source, uint8_t intctrl);
- uint8_t eclic_get_intctrl(uint32_t source);
- void eclic_set_intattr(uint32_t source, uint8_t intattr);
- uint8_t eclic_get_intattr(uint32_t source);
- void eclic_set_ecliccfg(uint8_t ecliccfg);
- uint8_t eclic_get_ecliccfg();
- void eclic_set_mth(uint8_t mth);
- uint8_t eclic_get_mth();
- void eclic_set_nlbits(uint8_t nlbits);
- uint8_t eclic_get_nlbits();
- uint8_t eclic_set_int_level(uint32_t source, uint8_t level);
- uint8_t eclic_get_int_level(uint32_t source);
- uint8_t eclic_set_int_priority(uint32_t source, uint8_t priority);
- uint8_t eclic_get_int_priority(uint32_t source);
- void eclic_mode_enable();
- void eclic_set_shv(uint32_t source, uint8_t shv);
- void eclic_set_trig(uint32_t source, uint8_t trig);
- ///** \brief Wait For Interrupt
- //
- // Wait For Interrupt is a hint instruction that suspends execution
- // until one of a number of events occurs.
- // */
- __attribute__( ( always_inline ) ) static inline void __WFI(void) {
- __asm volatile ("wfi");
- }
- //
- //
- /** \brief Wait For Event
- Wait For Event is a hint instruction that permits the processor to enter
- a low-power state until one of a number of events occurs.
- */
- __attribute__( ( always_inline ) ) static inline void __WFE(void)
- {
- __asm volatile ("wfi");
- }
- void close_timer(void);
- void open_timer(void);
- void enable_timer_interrupt(void);
- void clear_timer_interrupt(void);
- #endif
|