From 551b5427798e0fabcd14dc801b064a79df5de41a Mon Sep 17 00:00:00 2001 From: Kimplul Date: Thu, 3 Aug 2023 18:42:07 +0300 Subject: fix cpu_send_ipi --- arch/riscv64/kernel/cpu.c | 29 +---------------------------- arch/riscv64/kernel/sbi.h | 4 ++-- 2 files changed, 3 insertions(+), 30 deletions(-) diff --git a/arch/riscv64/kernel/cpu.c b/arch/riscv64/kernel/cpu.c index 44950ea..dc87a13 100644 --- a/arch/riscv64/kernel/cpu.c +++ b/arch/riscv64/kernel/cpu.c @@ -44,34 +44,7 @@ struct tcb *cur_tcb() return t; } -/** - * Helper for cpu_send_ipi() to convert linear \p cpu_id to SBI \c - * hart_mask_base. - * - * @param cpu_id CPU id to convert. - * @return Corresponding \c hart_mask_base. - */ -static long __cpu_offset(id_t cpu_id) -{ - return cpu_id / (sizeof(long) * 8); -} - -/** - * Helper for cpu_send_ipi() to convert linear \p cpu_id to SBI \c - * hart_mask. - * - * @param cpu_id CPU id to convert. - * @param offset Offset from __cpu_offset(). - * @return Corresponding \c hart_mask. - */ -static long __cpu_mask(id_t cpu_id, long offset) -{ - return cpu_id - offset * sizeof(long) * 8; -} - void cpu_send_ipi(id_t cpu_id) { - long offset = __cpu_offset(cpu_id); - long mask = __cpu_mask(cpu_id, offset); - sbi_send_ipi(mask, offset); + sbi_send_ipi(1, cpu_id); } diff --git a/arch/riscv64/kernel/sbi.h b/arch/riscv64/kernel/sbi.h index 9b3ffbc..ef38b35 100644 --- a/arch/riscv64/kernel/sbi.h +++ b/arch/riscv64/kernel/sbi.h @@ -122,8 +122,8 @@ static inline struct sbiret sbi_system_reset(uint32_t reset_type, static inline struct sbiret sbi_send_ipi(unsigned long hart_mask, unsigned long hart_mask_base) { - return sbi_ecall(EID_sPI, FID_IPI, hart_mask, hart_mask_base, 0, 0, 0, - 0); + return sbi_ecall(EID_sPI, FID_IPI, hart_mask, hart_mask_base, + 0, 0, 0, 0); } #endif /* KMI_RISCV_SBI_H */ -- cgit v1.3