update Config/mcucfg_8051.h.

Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
This commit is contained in:
零中断延迟的RTOS
2024-04-07 16:04:51 +00:00
committed by Gitee
parent 552356fa8b
commit 1d03e8ecf5

View File

@@ -104,30 +104,32 @@
// <e> 自定义任务切换现场保护
// <i> CosyOS在任务切换时默认自动保存的寄存器{PCnext,A,B,DPH,DPL,PSW,R0-R7(REGBANK0)}。
// <i> 如您需要额外增加对其它寄存器的现场保护,可在下方自行添加代码。
// <i> 下方各定义项已经直接给出示例代码(保存:REGBANK1,P_SW2直接在文本编辑界面中修改即可。
// <i> 下方各定义项已经直接给出示例代码(保存:DPS、DPH1、DPL1、P_SW2直接在文本编辑界面中修改即可。
#define __MCUCFG_USERREG_SAVING 0
#if __MCUCFG_USERREG_SAVING == 1
// <o> 定义用于现场保护的数组
// <i> 定义一个"unsigned char"类型的数组,结尾必须加语句结束符";"。
#define mUserReg_ unsigned char user_reg[9];
#define mUserReg_ unsigned char user_reg[4];
// <o> 定义保存现场代码
// <i> 用c语言代码将相应寄存器的内容拷贝至自定义的数组中。
#define mUserReg_PUSH \
do{ \
*(unsigned long *)(s_task_current->user_reg + 0) = *(unsigned long data *)0x08; \
*(unsigned long *)(s_task_current->user_reg + 4) = *(unsigned long data *)0x0C; \
s_task_current->user_reg[8] = P_SW2; \
s_task_current->user_reg[0] = DPS; \
s_task_current->user_reg[1] = DPH1; \
s_task_current->user_reg[2] = DPL1; \
s_task_current->user_reg[3] = P_SW2; \
}while(false)
// <o> 定义恢复现场代码
// <i> 用c语言代码将自定义数组中的数据恢复至相应的寄存器。
#define mUserReg_POP \
do{ \
*(unsigned long data *)0x08 = *(unsigned long *)(s_task_current->user_reg + 0); \
*(unsigned long data *)0x0C = *(unsigned long *)(s_task_current->user_reg + 4); \
P_SW2 = s_task_current->user_reg[8]; \
DPS = s_task_current->user_reg[0]; \
DPH1 = s_task_current->user_reg[1]; \
DPL1 = s_task_current->user_reg[2]; \
P_SW2 = s_task_current->user_reg[3]; \
}while(false)
#else