From 4170e57f18cf20e987cc7f102c567adc936615af Mon Sep 17 00:00:00 2001 From: linzewen Date: Mon, 12 Apr 2021 18:23:24 -0700 Subject: [PATCH] Fix some issues Move some functions from head file to c file Change interrupt function argument The "hwiPrio" argument high 16 bit for level and low 16 bit for priority Signed-off-by: linzewen --- .../risc-v/nuclei/gcc/los_arch_interrupt.h | 17 -------------- kernel/arch/risc-v/nuclei/gcc/los_interrupt.c | 22 ++++++++++++++++++- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/kernel/arch/risc-v/nuclei/gcc/los_arch_interrupt.h b/kernel/arch/risc-v/nuclei/gcc/los_arch_interrupt.h index 63a27c8d..99d04e0b 100644 --- a/kernel/arch/risc-v/nuclei/gcc/los_arch_interrupt.h +++ b/kernel/arch/risc-v/nuclei/gcc/los_arch_interrupt.h @@ -196,23 +196,6 @@ extern UINT32 HalUnalignedAccessFix(UINTPTR mcause, UINTPTR mepc, UINTPTR mtval, extern VOID DisplayTaskInfo(VOID); -extern UINT32 g_intCount; - -__attribute__((always_inline)) static inline VOID HalIntEnter(VOID) -{ - g_intCount += 1; -} - -__attribute__((always_inline)) static inline VOID HalIntExit(VOID) -{ - g_intCount -= 1; -} - -__attribute__((always_inline)) static inline UINT32 HalIsIntAcvive(VOID) -{ - return (g_intCount > 0); -} - #ifdef __cplusplus #if __cplusplus } diff --git a/kernel/arch/risc-v/nuclei/gcc/los_interrupt.c b/kernel/arch/risc-v/nuclei/gcc/los_interrupt.c index 2e2f808b..b9e17802 100644 --- a/kernel/arch/risc-v/nuclei/gcc/los_interrupt.c +++ b/kernel/arch/risc-v/nuclei/gcc/los_interrupt.c @@ -89,7 +89,11 @@ LITE_OS_SEC_TEXT_INIT VOID HalHwiInit(VOID) // default to 0 ECLIC_SetLevelIRQ(hwiNum, 0); /* set interrupt priority */ - ECLIC_SetPriorityIRQ(hwiNum, hwiPrio); + // high 16 bit for level + ECLIC_SetLevelIRQ(hwiNum, (hwiPrio >> 16)); + /* set interrupt priority */ + // low 16 bit for priority + ECLIC_SetPriorityIRQ(hwiNum, (hwiPrio & 0xffff)); if (handler != NULL) { /* set interrupt handler entry to vector table */ ECLIC_SetVector(hwiNum, (rv_csr_t)handler); @@ -168,6 +172,22 @@ WEAK UINT32 HalUnalignedAccessFix(UINTPTR mcause, UINTPTR mepc, UINTPTR mtval, V PRINTK("Unaligned acess fixes are not support by default!\r\n"); return LOS_NOK; } + +__attribute__((always_inline)) inline VOID HalIntEnter(VOID) +{ + g_intCount += 1; +} + +__attribute__((always_inline)) inline VOID HalIntExit(VOID) +{ + g_intCount -= 1; +} + +__attribute__((always_inline)) inline UINT32 HalIsIntAcvive(VOID) +{ + return (g_intCount > 0); +} + #ifdef __cplusplus #if __cplusplus }