删除文件 Port/80251/port_80251.c

This commit is contained in:
零中断延迟的RTOS
2026-06-10 09:08:44 +00:00
committed by Gitee
parent 6dd19699b5
commit c2845979a6
-277
View File
@@ -1,277 +0,0 @@
/**************************************************************************//**
* @item CosyOS-III Port
* @file port_80251.c
* @brief 80251 Core Port File
* @author 迟凯峰
* @version V2.3.1
* @date 2026.03.01
******************************************************************************/
#include "os_var.h"
#ifdef __PORT_80251_H
s_u16_t _SYS_MEM_ m_bsp_add = sizeof(s_taskhand_ts);
static s_u8_t xdata mVOID _at_ 0;
/*
* 全局临界区
*/
static bit m_oldirq;
static volatile s_u8_t _SYS_MEM_ m_glocri_counter/**/sZeroInstall;
void mx_disable_irq(void)
{
if(_testbit_(EA)){
m_oldirq = 1;
}
else if(!m_glocri_counter){
m_oldirq = 0;
}
m_glocri_counter++;
}
void mx_resume_irq(void)
{
m_glocri_counter--;
if(!m_glocri_counter){
EA = m_oldirq;
}
}
/*
* 中断FIFO服务
*/
#if (MCUCFG_PENDSVFIFO_DEPTH > 0)
#if (SYSCFG_PENDSVFIFO_MONITOR == __ENABLED__)
s_u8_t mPendSV_FIFO_DepthMAX/**/sZeroInstall;
s_u16_t mPendSV_FIFO_CountMAX/**/sZeroInstall;
#endif
bit m_sign_fifo = true;
static void _STATIC_MEM_ *mPendSV_FIFO_0[MCUCFG_PENDSVFIFO_DEPTH] _at_ 0x0100;
static void _STATIC_MEM_ *mPendSV_FIFO_1[MCUCFG_PENDSVFIFO_DEPTH] _at_ 0x0200;
static void _fifo_x_(void _STATIC_MEM_ *sv)
{
(*sPendSV_FIFOHandler[*(const s_u8_t _STATIC_MEM_ *)sv])(sv);
}
s_u8_t _SYS_MEM_ m_fifo_0_count = MCUCFG_PENDSVFIFO_DEPTH;
s_u8_t _SYS_MEM_ m_fifo_1_count = MCUCFG_PENDSVFIFO_DEPTH;
#define mWriteCode(n) \
bit m_sign_fifo_0_##n = true; \
bit m_sign_fifo_1_##n = true
mWriteCode(0);
mWriteCode(1);
mWriteCode(2);
mWriteCode(3);
mWriteCode(4);
mWriteCode(5);
mWriteCode(6);
mWriteCode(7);
#if (MCUCFG_PENDSVFIFO_DEPTH > 8)
mWriteCode(8);
mWriteCode(9);
mWriteCode(10);
mWriteCode(11);
mWriteCode(12);
mWriteCode(13);
mWriteCode(14);
mWriteCode(15);
#if (MCUCFG_PENDSVFIFO_DEPTH > 16)
mWriteCode(16);
mWriteCode(17);
mWriteCode(18);
mWriteCode(19);
mWriteCode(20);
mWriteCode(21);
mWriteCode(22);
mWriteCode(23);
#if (MCUCFG_PENDSVFIFO_DEPTH > 24)
mWriteCode(24);
mWriteCode(25);
mWriteCode(26);
mWriteCode(27);
mWriteCode(28);
mWriteCode(29);
mWriteCode(30);
mWriteCode(31);
#if (MCUCFG_PENDSVFIFO_DEPTH > 32)
mWriteCode(32);
mWriteCode(33);
mWriteCode(34);
mWriteCode(35);
mWriteCode(36);
mWriteCode(37);
mWriteCode(38);
mWriteCode(39);
#endif
#endif
#endif
#endif
#undef mWriteCode
#define mWriteCode(m, n) \
if(m_sign_fifo_##m##_##n){ i = n; goto __FIFO_##m##_END; } \
m_sign_fifo_##m##_##n = true; \
_fifo_x_(*(void _STATIC_MEM_ * _STATIC_MEM_ *)(mPendSV_FIFO_##m + n))
void mPendSV_FIFOHandler(void)
{
s_u8_t i;
s_u16_t j = 0;
__FIFO_0:
m_sign_fifo = false;
mWriteCode(0, 0);
mWriteCode(0, 1);
mWriteCode(0, 2);
mWriteCode(0, 3);
mWriteCode(0, 4);
mWriteCode(0, 5);
mWriteCode(0, 6);
mWriteCode(0, 7);
#if (MCUCFG_PENDSVFIFO_DEPTH > 8)
mWriteCode(0, 8);
mWriteCode(0, 9);
mWriteCode(0, 10);
mWriteCode(0, 11);
mWriteCode(0, 12);
mWriteCode(0, 13);
mWriteCode(0, 14);
mWriteCode(0, 15);
#if (MCUCFG_PENDSVFIFO_DEPTH > 16)
mWriteCode(0, 16);
mWriteCode(0, 17);
mWriteCode(0, 18);
mWriteCode(0, 19);
mWriteCode(0, 20);
mWriteCode(0, 21);
mWriteCode(0, 22);
mWriteCode(0, 23);
#if (MCUCFG_PENDSVFIFO_DEPTH > 24)
mWriteCode(0, 24);
mWriteCode(0, 25);
mWriteCode(0, 26);
mWriteCode(0, 27);
mWriteCode(0, 28);
mWriteCode(0, 29);
mWriteCode(0, 30);
mWriteCode(0, 31);
#if (MCUCFG_PENDSVFIFO_DEPTH > 32)
mWriteCode(0, 32);
mWriteCode(0, 33);
mWriteCode(0, 34);
mWriteCode(0, 35);
mWriteCode(0, 36);
mWriteCode(0, 37);
mWriteCode(0, 38);
mWriteCode(0, 39);
#endif
#endif
#endif
#endif
j += MCUCFG_PENDSVFIFO_DEPTH;
#if (SYSCFG_PENDSVFIFO_MONITOR == __ENABLED__)
if(m_fifo_0_count > mPendSV_FIFO_DepthMAX){
mPendSV_FIFO_DepthMAX = m_fifo_0_count;
}
m_fifo_0_count = MCUCFG_PENDSVFIFO_DEPTH;
#endif
goto __FIFO_1;
__FIFO_0_END:
j += i;
#if (SYSCFG_PENDSVFIFO_MONITOR == __ENABLED__)
if(i > mPendSV_FIFO_DepthMAX){
mPendSV_FIFO_DepthMAX = i;
}
#endif
__FIFO_1:
m_sign_fifo = true;
mWriteCode(1, 0);
mWriteCode(1, 1);
mWriteCode(1, 2);
mWriteCode(1, 3);
mWriteCode(1, 4);
mWriteCode(1, 5);
mWriteCode(1, 6);
mWriteCode(1, 7);
#if (MCUCFG_PENDSVFIFO_DEPTH > 8)
mWriteCode(1, 8);
mWriteCode(1, 9);
mWriteCode(1, 10);
mWriteCode(1, 11);
mWriteCode(1, 12);
mWriteCode(1, 13);
mWriteCode(1, 14);
mWriteCode(1, 15);
#if (MCUCFG_PENDSVFIFO_DEPTH > 16)
mWriteCode(1, 16);
mWriteCode(1, 17);
mWriteCode(1, 18);
mWriteCode(1, 19);
mWriteCode(1, 20);
mWriteCode(1, 21);
mWriteCode(1, 22);
mWriteCode(1, 23);
#if (MCUCFG_PENDSVFIFO_DEPTH > 24)
mWriteCode(1, 24);
mWriteCode(1, 25);
mWriteCode(1, 26);
mWriteCode(1, 27);
mWriteCode(1, 28);
mWriteCode(1, 29);
mWriteCode(1, 30);
mWriteCode(1, 31);
#if (MCUCFG_PENDSVFIFO_DEPTH > 32)
mWriteCode(1, 32);
mWriteCode(1, 33);
mWriteCode(1, 34);
mWriteCode(1, 35);
mWriteCode(1, 36);
mWriteCode(1, 37);
mWriteCode(1, 38);
mWriteCode(1, 39);
#endif
#endif
#endif
#endif
j += MCUCFG_PENDSVFIFO_DEPTH;
#if (SYSCFG_PENDSVFIFO_MONITOR == __ENABLED__)
if(m_fifo_1_count > mPendSV_FIFO_DepthMAX){
mPendSV_FIFO_DepthMAX = m_fifo_1_count;
}
m_fifo_1_count = MCUCFG_PENDSVFIFO_DEPTH;
#endif
goto __END;
__FIFO_1_END:
j += i;
#if (SYSCFG_PENDSVFIFO_MONITOR == __ENABLED__)
if(i > mPendSV_FIFO_DepthMAX){
mPendSV_FIFO_DepthMAX = i;
}
#endif
__END:
if(!m_sign_fifo_0_0 && j < MCUCFG_PENDSVFIFO_COUNT) goto __FIFO_0;
#if (SYSCFG_PENDSVFIFO_MONITOR == __ENABLED__)
if(mPendSV_FIFO_CountMAX < j) mPendSV_FIFO_CountMAX = j;
#endif
}
#undef mWriteCode
#endif
#endif