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 11 #ifndef __INTERRUPT_H__ 12 #define __INTERRUPT_H__ 13 14 #include <rtconfig.h> 15 16 #define NR_CPUS 1 17 18 #define IRQ_OFFSET 16 19 #define INTERRUPTS_MAX (IRQ_OFFSET + IRQ_MAX_NR) 20 21 #define PLIC_BASE 0x70000000 22 #define PLIC_PRIORITY0 (PLIC_BASE + 0x0) 23 #define PLIC_PRIORITY1 (PLIC_BASE + 0x4) 24 #define PLIC_PRIORITY2 (PLIC_BASE + 0x8) 25 #define PLIC_PRIORITY3 (PLIC_BASE + 0xc) 26 #define PLIC_PRIORITY4 (PLIC_BASE + 0x10) 27 28 #define PLIC_PENDING1 (PLIC_BASE + 0x1000) 29 #define PLIC_PENDING2 (PLIC_BASE + 0x1004) 30 #define PLIC_PENDING3 (PLIC_BASE + 0x1008) 31 #define PLIC_PENDING4 (PLIC_BASE + 0x100C) 32 33 #define PLIC_ENABLE1 (PLIC_BASE + 0x2000) 34 #define PLIC_ENABLE2 (PLIC_BASE + 0x2004) 35 #define PLIC_ENABLE3 (PLIC_BASE + 0x2008) 36 #define PLIC_ENABLE4 (PLIC_BASE + 0x200C) 37 38 #define PLIC_THRESHOLD (PLIC_BASE + 0x200000) 39 #define PLIC_CLAIM (PLIC_BASE + 0x200004) 40 41 #define PLIC_PRIORITY_OFFSET (0x0) 42 #define PLIC_PENDING_OFFSET (0x1000) 43 #define PLIC_ENABLE_OFFSET (0x2000) 44 45 #define PLIC_ENABLE_STRIDE 0x80 46 #define PLIC_CONTEXT_STRIDE 0x1000 47 48 #define PLIC_PRIORITY(id) (BSP_PLIC_PHY_ADDR + PLIC_PRIORITY_OFFSET + (id) * 4) 49 #define PLIC_PENDING(id) (BSP_PLIC_PHY_ADDR + PLIC_PENDING_OFFSET + ((id) / 32)) 50 #define PLIC_ENABLE(id) (BSP_PLIC_PHY_ADDR + PLIC_ENABLE_OFFSET + ((id) / 32)) 51 52 void rt_hw_interrupt_init(void); 53 void rt_hw_interrupt_mask(int vector); 54 void rt_hw_interrupt_umask(int vector); 55 rt_isr_handler_t rt_hw_interrupt_install(int vector, rt_isr_handler_t handler, void *param, const char *name); 56 57 #endif 58