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

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

?? os_cpu_a.s

?? demo net drive for linux
?? 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
;********************************************************************************************************

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


            PUBLIC  OS_CPU_SR_Save               ; Functions declared in this file
            PUBLIC  OS_CPU_SR_Restore
            PUBLIC  OSStartHighRdy               
            PUBLIC  OSCtxSw
            PUBLIC  OSIntCtxSw
            PUBLIC  OS_CPU_IRQ_ISR
            PUBLIC  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"
;*********************************************************************************************************

        RSEG CODE:CODE:NOROOT(2)
        CODE32

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, ??OS_Running        ; OSRunning = TRUE
        MOV     R5, #1
        STRB    R5, [R4]

                                        ; SWITCH TO HIGHEST PRIORITY TASK
        LDR     R4, ??OS_TCBHighRdy     ;    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, ??OS_TCBCur         ; OSTCBCur->OSTCBStkPtr = SP;
        LDR     R5, [R4]
        STR     SP, [R5]

        BL      OSTaskSwHook            ; OSTaskSwHook();

        LDR     R4, ??OS_PrioCur        ; OSPrioCur = OSPrioHighRdy
        LDR     R5, ??OS_PrioHighRdy
        LDRB    R6, [R5]
        STRB    R6, [R4]
        
        LDR     R4, ??OS_TCBCur         ; OSTCBCur  = OSTCBHighRdy;
        LDR     R6, ??OS_TCBHighRdy
        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
        LDR     R11, [SP], #4
        LDR     R12, [SP], #4
        LDR     LR,  [SP], #4
        LDR     PC,  [SP], #4


;*********************************************************************************************************
;                   PERFORM A CONTEXT SWITCH (From interrupt level) - OSIntCtxSw()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区久激情瑜伽| 日韩精品一二三| 日韩欧美国产精品| 在线综合视频播放| 欧美猛男gaygay网站| 色偷偷久久一区二区三区| 99久久精品免费精品国产| 成人av在线观| 不卡一区二区三区四区| 北岛玲一区二区三区四区| jlzzjlzz国产精品久久| 99国产精品一区| 一本久道久久综合中文字幕 | 99re这里只有精品6| av一二三不卡影片| 91捆绑美女网站| 在线亚洲高清视频| 欧美军同video69gay| 日韩一区二区影院| 欧美国产精品劲爆| 一区二区三区日韩欧美精品 | 欧美精品久久天天躁| 91精品国产美女浴室洗澡无遮挡| 7777精品伊人久久久大香线蕉的 | 国产精品18久久久久久vr| 国产成人午夜精品5599| 国产宾馆实践打屁股91| 91在线精品一区二区三区| 欧美日韩一级二级| 欧美大片拔萝卜| 国产精品免费av| 午夜在线成人av| 福利电影一区二区| 欧美日韩高清在线| 国产欧美日本一区视频| 一区二区三区在线播放| 蜜臀av性久久久久蜜臀aⅴ流畅| 精品一区二区久久| 色婷婷av一区二区三区之一色屋| 欧美夫妻性生活| 国产精品久久国产精麻豆99网站| 五月天中文字幕一区二区| 成人午夜私人影院| 欧美日韩视频第一区| 日本一区二区三区四区在线视频| 亚洲精品高清在线观看| 国产精品资源网站| 欧美精品乱人伦久久久久久| 中日韩免费视频中文字幕| 日韩国产欧美一区二区三区| 懂色av中文一区二区三区| 欧美色爱综合网| 国产精品久久久久影院亚瑟| 免费久久99精品国产| 91极品视觉盛宴| 国产欧美一二三区| 久久66热偷产精品| 欧美日韩你懂得| 中文字幕亚洲成人| 国产精品一品视频| 日韩欧美一级二级三级久久久| 综合电影一区二区三区| 国产精品一卡二| 日韩一区二区在线观看| 性做久久久久久久免费看| 91丨porny丨户外露出| 国产精品网曝门| 极品少妇xxxx偷拍精品少妇| 欧美精品精品一区| 亚洲一区二区精品视频| 在线日韩一区二区| 亚洲欧洲中文日韩久久av乱码| 国产乱人伦偷精品视频不卡 | 国产一区福利在线| 欧美一区二区三区在线观看| 亚洲一区在线观看免费| 欧美午夜不卡在线观看免费| 亚洲人成网站在线| 不卡大黄网站免费看| 中文字幕一区二区视频| 风流少妇一区二区| 国产精品久久久久久久久果冻传媒| 国产在线精品一区二区不卡了| 精品日韩在线观看| 奇米一区二区三区av| 欧美成人艳星乳罩| 精品写真视频在线观看| 精品国产乱码久久久久久免费| 日韩精品每日更新| 久久只精品国产| 粉嫩av一区二区三区粉嫩| 1024成人网色www| 在线观看视频91| 日日摸夜夜添夜夜添亚洲女人| 制服丝袜亚洲色图| 国产麻豆一精品一av一免费| 国产精品色哟哟网站| 在线观看av不卡| 日韩福利视频导航| 国产亚洲欧美日韩在线一区| 成人黄色在线看| 亚洲精品日日夜夜| 日韩一区二区三区电影在线观看| 极品销魂美女一区二区三区| 中文字幕不卡的av| 欧美日韩国产综合一区二区| 蜜臀精品久久久久久蜜臀| 国产欧美日韩综合精品一区二区| 成人免费av资源| 亚洲成人免费av| 久久精品欧美一区二区三区麻豆 | 亚洲一区二区在线观看视频| 4438成人网| 国产91精品在线观看| 亚洲成va人在线观看| 26uuu亚洲| 欧美视频一二三区| 国产一区二区不卡| 亚洲视频每日更新| 欧美v亚洲v综合ⅴ国产v| 不卡av在线网| 精品一区二区免费看| 亚洲精品国产视频| 国产午夜精品福利| 欧美高清精品3d| 91亚洲精品久久久蜜桃| 精品一区二区日韩| 亚洲图片一区二区| 国产精品视频一二三区| 日韩欧美不卡在线观看视频| 一本大道av伊人久久综合| 国产在线精品一区二区夜色| 亚洲电影视频在线| 亚洲欧美福利一区二区| 国产婷婷色一区二区三区| 欧美一区日韩一区| 欧美优质美女网站| 成a人片国产精品| 国产精品中文字幕一区二区三区| 视频一区视频二区中文字幕| 亚洲欧美一区二区三区孕妇| 久久久欧美精品sm网站| 日韩美女视频在线| 在线播放91灌醉迷j高跟美女| 国产成人免费视| 精品综合免费视频观看| 日韩国产欧美在线播放| 亚洲mv在线观看| 亚洲一区二区视频在线| 亚洲美女视频一区| **网站欧美大片在线观看| 国产日韩精品一区二区三区在线| 精品国产乱码91久久久久久网站| 欧美区在线观看| 在线播放亚洲一区| 日韩女优毛片在线| 欧美tk—视频vk| 精品裸体舞一区二区三区| 日韩免费观看高清完整版在线观看| 欧美乱妇15p| 欧美精品久久一区二区三区| 欧美精品aⅴ在线视频| 在线播放中文字幕一区| 337p亚洲精品色噜噜噜| 欧美一区二区三区精品| 日韩欧美国产三级| 久久久久成人黄色影片| 国产精品伦一区二区三级视频| 欧美韩国日本综合| 日韩美女视频19| 亚洲综合在线第一页| 偷窥国产亚洲免费视频| 蜜臀久久99精品久久久久宅男 | 国产999精品久久| 国产成a人亚洲| 91看片淫黄大片一级在线观看| 色爱区综合激月婷婷| 欧美久久久久久久久久| 精品av久久707| 中文字幕 久热精品 视频在线 | 精品久久久久一区| 国产亚洲女人久久久久毛片| 亚洲人成网站影音先锋播放| 亚洲一区二区三区小说| 久久99蜜桃精品| av在线播放成人| 欧美福利电影网| 国产精品久久综合| 日本不卡一区二区| 成人av网站免费观看| 欧美男女性生活在线直播观看| 欧美岛国在线观看| 亚洲视频在线一区| 美女视频网站黄色亚洲| 成人免费看的视频| 91精品麻豆日日躁夜夜躁| 亚洲国产成人午夜在线一区| 亚洲国产成人91porn| 国产成a人亚洲精品| 欧美一区日本一区韩国一区|