⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 critical.s

📁 Rabbit 32Bit RTOS源代码
💻 S
字号:
;*********************************************************************
;*                  Copyright (c) 2011-2012,李士伟
;*                    All rights reserved.
;*文 件 名:critical.s
;*描    述:临界代码段操作相关汇编函数
;*当前版本:V1.01
;*作    者:李士伟
;*创建日期:2011.10.15
;*********************************************************************
;*********************************************************************
;*版    本:V1.01
;*修 改 人:李士伟
;*修改日期:2012.01.31
;*描    述:因系统调用的处理方式修改,而作相应修改
;*********************************************************************
; 汇编代码使用到的与处理器相关的宏定义
    GET arch\lpc2103\asm_cpu.inc

; 引出源本文件 内部函数标号
    EXPORT  __OS_ENTER_CRITICAL       ; 系统代码进入临界段
    EXPORT  __OS_EXIT_CRITICAL        ; 系统代码退出临界段
; 引入外部变量标号
    IMPORT  OSEnterSum

    CODE32
    PRESERVE8
    AREA  critical_section,CODE, READONLY
;*********************************************************************
;*函 数 名:__OS_ENTER_CRITICAL
;*描    述:关中断内核代码进入临界段
;*输入参数:无
;*输出参数:无
;*返 回 值:无
;*注    意:该函数运行内核代码时被直接调用关中断进入内核临界代码段
;*********************************************************************
__OS_ENTER_CRITICAL
    MRS    R0,  SPSR
    ORR    R0,  R0, #I_Bit
    MSR    SPSR_c, R0
    LDR    R1,  =OSEnterSum
    LDR    R0, [R1]
    ADD    R0,  R0, #1
    STR    R0, [R1]
    BX     LR

;*********************************************************************
;*函 数 名:__OS_ENTER_CRITICAL
;*描    述:if (--OSEnterSum == 0),开中断内核代码退出临界段
;*输入参数:无
;*输出参数:无
;*返 回 值:无
;*注    意:该函数运行内核代码时被直接调用关中断进入内核临界代码段
;*********************************************************************
__OS_EXIT_CRITICAL
    LDR    R1,  =OSEnterSum
    LDR    R0,  [R1]
    SUBS   R0,  R0, #1
    STR    R0,  [R1]
    BXNE   LR

; OSEnterSum == 0 清除关中断标志
    MRS    R0,  SPSR
    BIC    R0,  R0, #I_Bit
    MSR    SPSR_c, R0
    BX     LR

    END



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -