亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os_cpu_a_backup.s

?? UCOS在ARM7TDMI上的移植。與它的官方版不同的是
?? S
?? 第 1 頁 / 共 2 頁
字號:
;********************************************************************************************************
;                                               uC/OS-II
;                                         The Real-Time Kernel
;
;                               (c) Copyright 1992-2004, Micrium, Weston, FL
;                                          All Rights Reserved
;
;                                           ARM Generic Port
;                                            IAR C Compiler
;
; File    : OS_CPU_A.ASM
; Version : V1.50
; By      : Jean J. Labrosse
;********************************************************************************************************

            GLOBAL  OS_CPU_SR_Save               ; Functions declared in this file
            GLOBAL  OS_CPU_SR_Restore
            GLOBAL  OSStartHighRdy               
            GLOBAL  OSCtxSw
            GLOBAL  OSIntCtxSw
            GLOBAL  OS_CPU_IRQ_ISR
;            GLOBAL  OS_CPU_FIQ_ISR


NO_INT      EQU     0xC0                         ; Mask used to disable interrupts (Both FIR and IRQ)
SYS32_MODE  EQU     0x1F
FIQ32_MODE  EQU     0x11
IRQ32_MODE  EQU     0x12


;*********************************************************************************************************
;                                   CRITICAL SECTION METHOD 3 FUNCTIONS
;
; Description: Disable/Enable interrupts by preserving the state of interrupts.  Generally speaking you
;              would store the state of the interrupt disable flag in the local variable 'cpu_sr' and then
;              disable interrupts.  'cpu_sr' is allocated in all of uC/OS-II's functions that need to 
;              disable interrupts.  You would restore the interrupt disable state by copying back 'cpu_sr'
;              into the CPU's status register.
;
; Prototypes :     OS_CPU_SR  OS_CPU_SR_Save(void);
;                  void       OS_CPU_SR_Restore(OS_CPU_SR cpu_sr);
;
;
; Note(s)    : 1) These functions are used in general like this:
;
;                 void Task (void *p_arg)
;                 {
;                 #if OS_CRITICAL_METHOD == 3          /* Allocate storage for CPU status register */
;                     OS_CPU_SR  cpu_sr;
;                 #endif
;
;                          :
;                          :
;                     OS_ENTER_CRITICAL();             /* cpu_sr = OS_CPU_SaveSR();                */
;                          :
;                          :
;                     OS_EXIT_CRITICAL();              /* OS_CPU_RestoreSR(cpu_sr);                */
;                          :
;                          :
;                 }
;
;              2) OS_CPU_SaveSR() is implemented as recommended by Atmel's application note:
;
;                    "Disabling Interrupts at Processor Level"
;*********************************************************************************************************
        AREA    OS_ASM_CODE, CODE, READONLY
;        ENTRY
        CODE32

            IMPORT  OSRunning                    ; External references
            IMPORT  OSPrioCur
            IMPORT  OSPrioHighRdy
            IMPORT  OSTCBCur
            IMPORT  OSTCBHighRdy
            IMPORT  OSIntNesting
            IMPORT  OSIntEnter
            IMPORT  OSIntExit
            IMPORT  OSTaskSwHook
            IMPORT  OS_CPU_IRQ_ISR_Handler
 ;           IMPORT  OS_CPU_FIQ_ISR_Handler


;        RSEG CODE:CODE:NOROOT(2)

OS_CPU_SR_Save

        mrs r0,CPSR
        orr r1,r0,#NO_INT
        msr CPSR_c,r1
        mov pc,lr


OS_CPU_SR_Restore

        msr CPSR_c,r0
        mov pc,lr
        
;OS_CPU_SR_Save
;        MRS     R0,CPSR                     ; Set IRQ and FIQ bits in CPSR to disable all interrupts
;        ORR     R1,R0,#NO_INT
;        MSR     CPSR_c,R1
;        MRS     R1,CPSR                     ; Confirm that CPSR contains the proper interrupt disable flags
;        AND     R1,R1,#NO_INT
;        CMP     R1,#NO_INT
;        BNE     OS_CPU_SR_Save              ; Not properly disabled (try again)
;        MOV     PC,LR                       ; Disabled, return the original CPSR contents in R0
;
;
;OS_CPU_SR_Restore
;        MSR     CPSR_c,R0
;        MOV     PC,LR
;
;
;;*********************************************************************************************************
;;                                          START MULTITASKING
;                                       void OSStartHighRdy(void)
;
; Note(s) : 1) OSStartHighRdy() MUST:
;              a) Call OSTaskSwHook() then,
;              b) Set OSRunning to TRUE,
;              c) Switch to the highest priority task.
;*********************************************************************************************************

;        RSEG CODE:CODE:NOROOT(2)
 ;       CODE32

OSStartHighRdy  

        MSR     CPSR_cxsf, #0xDF        ; Switch to SYS mode with IRQ and FIQ disabled
        
        BL      OSTaskSwHook            ; OSTaskSwHook();

        LDR     R4, =OSRunning        ; OSRunning = TRUE
        MOV     R5, #1
        STRB    R5, [R4]

                                        ; SWITCH TO HIGHEST PRIORITY TASK
        LDR     R4, =OSTCBHighRdy     ;    Get highest priority task TCB address
        LDR     R4, [R4]                ;    get stack pointer
        LDR     SP, [R4]                ;    switch to the new stack

        LDR     R4,  [SP], #4           ;    pop new task's CPSR
        MSR     CPSR_cxsf,R4
        LDR     R0,  [SP], #4           ;    pop new task's context
        LDR     R1,  [SP], #4
        LDR     R2,  [SP], #4
        LDR     R3,  [SP], #4
        LDR     R4,  [SP], #4
        LDR     R5,  [SP], #4
        LDR     R6,  [SP], #4
        LDR     R7,  [SP], #4
        LDR     R8,  [SP], #4
        LDR     R9,  [SP], #4
        LDR     R10, [SP], #4
        LDR     R11, [SP], #4
        LDR     R12, [SP], #4
        LDR     LR,  [SP], #4
        LDR     PC,  [SP], #4


;*********************************************************************************************************
;                         PERFORM A CONTEXT SWITCH (From task level) - OSCtxSw()
;
; Note(s) : 1) OSCtxSw() is called in SYS mode with BOTH FIQ and IRQ interrupts DISABLED
;
;           2) The pseudo-code for OSCtxSw() is:
;              a) Save the current task's context onto the current task's stack
;              b) OSTCBCur->OSTCBStkPtr = SP;
;              c) OSTaskSwHook();
;              d) OSPrioCur             = OSPrioHighRdy;
;              e) OSTCBCur              = OSTCBHighRdy;
;              f) SP                    = OSTCBHighRdy->OSTCBStkPtr;
;              g) Restore the new task's context from the new task's stack
;              h) Return to new task's code
;
;           3) Upon entry: 
;              OSTCBCur      points to the OS_TCB of the task to suspend
;              OSTCBHighRdy  points to the OS_TCB of the task to resume
;*********************************************************************************************************

;        RSEG CODE:CODE:NOROOT(2)
        CODE32

OSCtxSw
                                        ; SAVE CURRENT TASK'S CONTEXT
        STR     LR,  [SP, #-4]!         ;     Return address
        STR     LR,  [SP, #-4]!
        STR     R12, [SP, #-4]!
        STR     R11, [SP, #-4]!
        STR     R10, [SP, #-4]!
        STR     R9,  [SP, #-4]!
        STR     R8,  [SP, #-4]!
        STR     R7,  [SP, #-4]!
        STR     R6,  [SP, #-4]!
        STR     R5,  [SP, #-4]!
        STR     R4,  [SP, #-4]!
        STR     R3,  [SP, #-4]!
        STR     R2,  [SP, #-4]!
        STR     R1,  [SP, #-4]!
        STR     R0,  [SP, #-4]!
        MRS     R4,  CPSR               ;    push current CPSR
        STR     R4,  [SP, #-4]!
        
        LDR     R4, =OSTCBCur         ; OSTCBCur->OSTCBStkPtr = SP;
        LDR     R5, [R4]
        STR     SP, [R5]

        BL      OSTaskSwHook            ; OSTaskSwHook();

        LDR     R4, =OSPrioCur        ; OSPrioCur = OSPrioHighRdy
        LDR     R5, =OSPrioHighRdy
        LDRB    R6, [R5]
        STRB    R6, [R4]
        
        LDR     R4, =OSTCBCur         ; OSTCBCur  = OSTCBHighRdy;
        LDR     R6, =OSTCBHighRdy
        LDR     R6, [R6]
        STR     R6, [R4]

        LDR     SP, [R6]                ; SP = OSTCBHighRdy->OSTCBStkPtr;

                                        ; RESTORE NEW TASK'S CONTEXT
        LDR     R4,  [SP], #4           ;    pop new task's CPSR
        MSR     CPSR_cxsf, R4
        LDR     R0,  [SP], #4           ;    pop new task's context
        LDR     R1,  [SP], #4
        LDR     R2,  [SP], #4
        LDR     R3,  [SP], #4
        LDR     R4,  [SP], #4
        LDR     R5,  [SP], #4
        LDR     R6,  [SP], #4
        LDR     R7,  [SP], #4
        LDR     R8,  [SP], #4
        LDR     R9,  [SP], #4
        LDR     R10, [SP], #4

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美aaaaaa午夜精品| 国产精品久久久久影院老司| 国产 欧美在线| 久久成人精品无人区| 青青草伊人久久| 奇米影视一区二区三区小说| 日韩激情视频在线观看| 亚洲国产精品久久久男人的天堂| 成人欧美一区二区三区白人| 国产精品电影院| 亚洲欧美日韩国产中文在线| 国产精品久久久久永久免费观看 | 成人免费一区二区三区在线观看| 久久亚洲精品小早川怜子| 精品福利一二区| 久久午夜免费电影| 国产欧美日韩在线看| 国产精品久久久久久久久搜平片 | 91国产成人在线| 欧美私人免费视频| 7777精品伊人久久久大香线蕉| 69精品人人人人| 久久久国产精品麻豆| 国产精品无码永久免费888| 亚洲欧美日韩中文播放| 亚洲综合久久久| 蜜桃精品视频在线观看| 国产成人无遮挡在线视频| voyeur盗摄精品| 欧美日韩一区二区欧美激情| 欧美一区二区三区在线| 亚洲国产精品99久久久久久久久| 亚洲图片另类小说| 日韩精品高清不卡| 国产精品18久久久久久久久久久久| 东方欧美亚洲色图在线| 欧美日韩亚州综合| 久久久精品天堂| 亚洲美女淫视频| 精品在线观看免费| 色综合一区二区| 国产精品伦一区二区三级视频| 亚洲天堂中文字幕| 美女国产一区二区| 一本大道久久精品懂色aⅴ| 在线不卡一区二区| 中文字幕一区免费在线观看| 亚洲成人一区二区在线观看| 国产乱码精品一区二区三区av| 日本久久一区二区三区| 久久蜜桃香蕉精品一区二区三区| 亚洲精品美国一| 国产传媒日韩欧美成人| 9191成人精品久久| 亚洲视频一二区| 国产在线播放一区| 777奇米成人网| 一区二区三区在线视频播放 | 国产一区二区三区久久久 | 欧美中文字幕亚洲一区二区va在线 | 国产a区久久久| 91精品国产91综合久久蜜臀| 亚洲女爱视频在线| 国产aⅴ综合色| 日韩亚洲欧美综合| 午夜精品久久久久影视| 成+人+亚洲+综合天堂| 精品国免费一区二区三区| 亚洲高清免费观看| 在线日韩一区二区| 亚洲欧美综合网| 成人高清免费观看| 国产精品久久久久久久久果冻传媒 | 精品国产sm最大网站免费看| 一区二区三区四区激情| 波波电影院一区二区三区| 久久久久久久久久久电影| 美日韩一级片在线观看| 884aa四虎影成人精品一区| 亚洲自拍与偷拍| 在线免费观看日韩欧美| 亚洲欧美另类久久久精品2019| eeuss影院一区二区三区 | 成人av电影在线| 欧美激情一区二区在线| 国产精品一级黄| 日本一区二区高清| av在线播放不卡| 亚洲麻豆国产自偷在线| 欧洲亚洲国产日韩| 性做久久久久久久久| 欧美精品日韩综合在线| 日韩国产成人精品| 精品入口麻豆88视频| 国产激情一区二区三区| 亚洲欧洲无码一区二区三区| 91视频免费看| 亚洲成av人片一区二区三区| 欧美美女直播网站| 美女一区二区在线观看| www久久精品| 成人国产视频在线观看| 国产精品视频免费看| 91免费版在线| 偷窥国产亚洲免费视频| 久久综合av免费| 99视频有精品| 日韩在线卡一卡二| 久久久久久久久久看片| 91在线精品一区二区| 视频一区二区三区中文字幕| 欧美成人三级在线| 91日韩精品一区| 久久精品国产99国产精品| 国产精品理伦片| 欧美日韩mp4| 国产乱子伦一区二区三区国色天香 | 在线播放中文字幕一区| 午夜精品福利一区二区蜜股av| 欧美一级精品大片| eeuss国产一区二区三区| 婷婷亚洲久悠悠色悠在线播放 | 午夜精品福利一区二区三区蜜桃| 日韩精品一区二区三区四区视频| 色综合久久久久综合| 全部av―极品视觉盛宴亚洲| 中文字幕+乱码+中文字幕一区| 欧美丰满高潮xxxx喷水动漫| 国产精品亚洲第一区在线暖暖韩国| 亚洲午夜激情网页| 欧美激情在线一区二区| 日韩一级精品视频在线观看| 91最新地址在线播放| 国产一区二区三区精品视频| 视频一区中文字幕| 一区二区三区不卡在线观看| 国产精品污污网站在线观看| 久久综合久久99| 制服.丝袜.亚洲.中文.综合| 91久久一区二区| 99天天综合性| 成人国产免费视频| 黄色精品一二区| 秋霞影院一区二区| 亚洲成在线观看| 亚洲国产成人91porn| 亚洲视频一区二区在线观看| 欧美高清一级片在线观看| 久久亚洲一级片| 久久综合久久综合久久综合| 欧美一区二区日韩| 91麻豆精品国产| 欧美高清精品3d| 欧美老人xxxx18| 欧美日韩精品免费| 欧美日韩精品久久久| 在线视频你懂得一区| 色吧成人激情小说| 色视频一区二区| 欧美性生活一区| 欧美高清性hdvideosex| 欧美久久久影院| 91精品婷婷国产综合久久| 欧美日韩国产123区| 欧美一区在线视频| 91精品国产一区二区三区香蕉| 欧美日韩国产色站一区二区三区| 在线观看www91| 欧美性大战久久久久久久蜜臀| 欧美性猛交xxxx乱大交退制版| 精品视频1区2区| 日韩小视频在线观看专区| 欧美成人一区二区三区| 国产女主播视频一区二区| 中文字幕一区在线观看| 亚洲一卡二卡三卡四卡五卡| 亚洲成人资源网| 欧美aa在线视频| 国产精品乡下勾搭老头1| 99热99精品| 欧美理论电影在线| 久久久国产精品麻豆| 亚洲三级在线观看| 欧美aⅴ一区二区三区视频| 国产自产视频一区二区三区| 成人福利视频网站| 欧美日韩在线播| 久久天天做天天爱综合色| 亚洲色欲色欲www| 日韩av在线播放中文字幕| 国产麻豆精品视频| 色欧美片视频在线观看| 91精品国产黑色紧身裤美女| 国产欧美一区二区三区在线看蜜臀| 国产精品久久久久影院老司| 丝袜诱惑制服诱惑色一区在线观看 | 国内精品久久久久影院薰衣草| 懂色av一区二区三区免费看| 欧美三级乱人伦电影| 久久精品亚洲乱码伦伦中文|