interrupt.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * Copyright (c) 2006-2023, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2024/01/11 flyingcys The first version
  9. */
  10. #ifndef __INTERRUPT_H__
  11. #define __INTERRUPT_H__
  12. #include <rtconfig.h>
  13. #define NR_CPUS 1
  14. #define IRQ_OFFSET 16
  15. #define INTERRUPTS_MAX (IRQ_OFFSET + IRQ_MAX_NR)
  16. #define PLIC_BASE 0x70000000
  17. #define PLIC_PRIORITY0 (PLIC_BASE + 0x0)
  18. #define PLIC_PRIORITY1 (PLIC_BASE + 0x4)
  19. #define PLIC_PRIORITY2 (PLIC_BASE + 0x8)
  20. #define PLIC_PRIORITY3 (PLIC_BASE + 0xc)
  21. #define PLIC_PRIORITY4 (PLIC_BASE + 0x10)
  22. #define PLIC_PENDING1 (PLIC_BASE + 0x1000)
  23. #define PLIC_PENDING2 (PLIC_BASE + 0x1004)
  24. #define PLIC_PENDING3 (PLIC_BASE + 0x1008)
  25. #define PLIC_PENDING4 (PLIC_BASE + 0x100C)
  26. #define PLIC_ENABLE1 (PLIC_BASE + 0x2000)
  27. #define PLIC_ENABLE2 (PLIC_BASE + 0x2004)
  28. #define PLIC_ENABLE3 (PLIC_BASE + 0x2008)
  29. #define PLIC_ENABLE4 (PLIC_BASE + 0x200C)
  30. #define PLIC_THRESHOLD (PLIC_BASE + 0x200000)
  31. #define PLIC_CLAIM (PLIC_BASE + 0x200004)
  32. #define PLIC_PRIORITY_OFFSET (0x0)
  33. #define PLIC_PENDING_OFFSET (0x1000)
  34. #define PLIC_ENABLE_OFFSET (0x2000)
  35. #define PLIC_ENABLE_STRIDE 0x80
  36. #define PLIC_CONTEXT_STRIDE 0x1000
  37. #define PLIC_PRIORITY(id) (BSP_PLIC_PHY_ADDR + PLIC_PRIORITY_OFFSET + (id) * 4)
  38. #define PLIC_PENDING(id) (BSP_PLIC_PHY_ADDR + PLIC_PENDING_OFFSET + ((id) / 32))
  39. #define PLIC_ENABLE(id) (BSP_PLIC_PHY_ADDR + PLIC_ENABLE_OFFSET + ((id) / 32))
  40. void rt_hw_interrupt_init(void);
  41. void rt_hw_interrupt_mask(int vector);
  42. void rt_hw_interrupt_umask(int vector);
  43. rt_isr_handler_t rt_hw_interrupt_install(int vector, rt_isr_handler_t handler, void *param, const char *name);
  44. #endif