[fix][irq] add nesting process for enable irq and disable irq

This commit is contained in:
jzlv 2021-07-28 15:03:33 +08:00
parent d92d1e9019
commit 97df783484
3 changed files with 10 additions and 18 deletions

View file

@ -9,6 +9,7 @@ PROJECT(${BOARD} C CXX ASM)
ENABLE_LANGUAGE(ASM)
include_directories(${CMAKE_SOURCE_DIR}/common/misc)
include_directories(${CMAKE_SOURCE_DIR}/drivers/${CHIP}_driver/risc-v/Core/Include)
include_directories(${CMAKE_SOURCE_DIR}/bsp/bsp_common/platform)
if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/bsp/board/${CHIP})

View file

@ -38,6 +38,11 @@ __WEAK__ void bl_show_info(void)
{
}
__WEAK__ int bflb_get_board_config(uint8_t func, uint8_t *pinlist)
{
return 0;
}
__WEAK__ enum uart_index_type board_get_debug_uart_index(void)
{
return 0;
@ -45,7 +50,7 @@ __WEAK__ enum uart_index_type board_get_debug_uart_index(void)
void bflb_platform_init(uint32_t baudrate)
{
disable_irq();
__disable_irq();
board_init();
@ -73,7 +78,7 @@ void bflb_platform_init(uint32_t baudrate)
else
MSG("dynamic memory init error\r\n");
enable_irq();
__enable_irq();
}
#if ((defined BOOTROM) || (defined BFLB_EFLASH_LOADER))

View file

@ -30,6 +30,8 @@
#include <stdbool.h>
#include <stdlib.h>
#include "gcc.h"
#include "cmsis_compatible_gcc.h"
/*@} end of group COMMON_Public_Types */
/** @defgroup COMMON_Public_Constants
@ -88,22 +90,6 @@
#define BIT(x) (1 << (x))
static uint8_t nesting = 0;
__attribute__((always_inline)) __STATIC_INLINE__ void enable_irq(void)
{
nesting--;
if (nesting == 0) {
__ASM__ volatile("csrsi mstatus, 8");
}
}
__attribute__((always_inline)) __STATIC_INLINE__ void disable_irq(void)
{
__ASM__ volatile("csrci mstatus, 8");
nesting++;
}
/**
* @brief Error type definition
*/