plic_driver.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // See LICENSE file for licence details
  2. #ifndef PLIC_DRIVER_H
  3. #define PLIC_DRIVER_H
  4. #include "platform.h"
  5. typedef struct __plic_instance_t
  6. {
  7. uintptr_t base_addr;
  8. uint32_t num_sources;
  9. uint32_t num_priorities;
  10. } plic_instance_t;
  11. typedef uint32_t plic_source;
  12. typedef uint32_t plic_priority;
  13. typedef uint32_t plic_threshold;
  14. void PLIC_init (
  15. plic_instance_t * this_plic,
  16. uintptr_t base_addr,
  17. uint32_t num_sources,
  18. uint32_t num_priorities
  19. );
  20. void PLIC_set_threshold (plic_instance_t * this_plic,
  21. plic_threshold threshold);
  22. void PLIC_enable_interrupt (plic_instance_t * this_plic,
  23. plic_source source);
  24. void PLIC_disable_interrupt (plic_instance_t * this_plic,
  25. plic_source source);
  26. void PLIC_set_priority (plic_instance_t * this_plic,
  27. plic_source source,
  28. plic_priority priority);
  29. plic_source PLIC_claim_interrupt(plic_instance_t * this_plic);
  30. void PLIC_complete_interrupt(plic_instance_t * this_plic,
  31. plic_source source);
  32. #endif