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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? os_cpu_a.asm

?? protues仿真ARM ARM的I2C
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;********************************************************************************************************
;                                               uC/OS-II
;                                         The Real-Time Kernel
;
;                               (c) Copyright 1992-2004, Micrium, Weston, FL
;                                          All Rights Reserved
;
;                                           Generic ARM Port
;
; File      : OS_CPU_A.ASM
; Version   : V1.60
; By        : Jean J. Labrosse
;
; For       : ARM7 or ARM9
; Mode      : ARM or Thumb
; Toolchain : IAR's EWARM V4.11a and higher
;********************************************************************************************************

            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)
SVC32_MODE  EQU     0x13
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)
        BX      LR                          ; Disabled, return the original CPSR contents in R0


OS_CPU_SR_Restore
        MSR     CPSR_c,R0
        BX      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, #0xD3        ; Switch to SVC mode with IRQ and FIQ disabled

        LDR     R0, ??OS_TaskSwHook     ; OSTaskSwHook();
        MOV     LR, PC
        BX      R0            

        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     SPSR_cxsf,R4
        LDMFD   SP!, {R0-R12,LR,PC}^    ;    pop new task's context


;*********************************************************************************************************
;                         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
        STMFD   SP!, {LR}               ;     Push return address
        STMFD   SP!, {LR}
        STMFD   SP!, {R0-R12}           ;     Push registers
        MRS     R4,  CPSR               ;     Push current CPSR
        TST     LR, #1                  ;     See if called from Thumb mode
        ORRNE   R4,  R4, #0x20          ;     If yes, Set the T-bit
        STMFD   SP!, {R4}
        
        LDR     R4, ??OS_TCBCur         ; OSTCBCur->OSTCBStkPtr = SP;
        LDR     R5, [R4]
        STR     SP, [R5]

        LDR     R0, ??OS_TaskSwHook     ; OSTaskSwHook();
        MOV     LR, PC
        BX      R0            

        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
        LDMFD   SP!, {R4}               ;    Pop new task's CPSR
        MSR     SPSR_cxsf, R4
        
        LDMFD   SP!, {R0-R12,LR,PC}^    ;    Pop new task's context


;*********************************************************************************************************
;                   PERFORM A CONTEXT SWITCH (From interrupt level) - OSIntCtxSw()
;
; Note(s) : 1) OSIntCtxSw() is called in SYS mode with BOTH FIQ and IRQ interrupts DISABLED
;
;           2) The pseudo-code for OSCtxSw() is:
;              a) OSTaskSwHook();
;              b) OSPrioCur             = OSPrioHighRdy;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久影视| 天天色综合成人网| 91精品国产全国免费观看 | 亚洲午夜激情网站| 久久天堂av综合合色蜜桃网| 欧美蜜桃一区二区三区| 99久久国产综合精品麻豆| 国产在线日韩欧美| 婷婷一区二区三区| 一卡二卡欧美日韩| 中文字幕在线免费不卡| 国产网红主播福利一区二区| 日韩亚洲电影在线| 欧美日韩国产综合久久| 91国产福利在线| 91一区在线观看| 成人性色生活片| 国产精品一区不卡| 国产综合一区二区| 韩国av一区二区三区四区| 日韩高清不卡一区二区三区| 亚洲电影激情视频网站| 一区2区3区在线看| 一区二区三区国产精华| 亚洲精品一二三四区| 中文字幕一区不卡| 中文字幕一区二区三区在线不卡 | 国产精品66部| 精品一区二区三区影院在线午夜| 天天色天天操综合| 天堂蜜桃91精品| 日韩精品电影在线观看| 日韩精品91亚洲二区在线观看| 一区二区三区欧美视频| 亚洲影视在线观看| 亚洲成a人片综合在线| 亚洲图片有声小说| 亚洲成人777| 青青草视频一区| 美腿丝袜一区二区三区| 激情综合一区二区三区| 国产乱码精品一品二品| 成人av影院在线| 色综合久久综合网欧美综合网 | 欧美精品久久一区二区三区 | 国产精品高潮呻吟| 亚洲欧洲国产日韩| 亚洲精品v日韩精品| 亚洲一区二区精品视频| 日韩中文字幕1| 国产在线视频一区二区| 粉嫩13p一区二区三区| 91在线看国产| 欧美日韩情趣电影| 欧美成人精品二区三区99精品| 2欧美一区二区三区在线观看视频| 国产视频在线观看一区二区三区| 国产精品黄色在线观看| 亚洲午夜精品在线| 激情图片小说一区| 成人av资源站| 欧美日本精品一区二区三区| 精品国产精品一区二区夜夜嗨| 国产日韩欧美激情| 亚洲一二三四久久| 精品一区二区三区欧美| a美女胸又www黄视频久久| 欧美性大战久久久久久久| 日韩一区二区三区高清免费看看| 久久免费电影网| 一区二区日韩电影| 久久成人久久鬼色| 972aa.com艺术欧美| 欧美一区二区私人影院日本| 国产精品久久久久一区二区三区| 亚洲高清免费观看高清完整版在线观看 | 成人性生交大片免费看在线播放| 91国产丝袜在线播放| 日韩精品自拍偷拍| 亚洲人亚洲人成电影网站色| 日韩1区2区3区| av一区二区三区在线| 日韩一区二区三区电影| 亚洲三级理论片| 久久99久久99精品免视看婷婷 | 99视频一区二区| 日韩区在线观看| 亚洲精品中文在线| 国产最新精品免费| 欧美三级电影在线看| 国产精品天干天干在观线| 五月天欧美精品| 99re免费视频精品全部| 久久久久久久久伊人| 午夜欧美2019年伦理| 99综合影院在线| 精品av久久707| 日本不卡123| 欧美三级午夜理伦三级中视频| 中文字幕高清一区| 精品一区二区在线视频| 欧美三级三级三级爽爽爽| 国产精品高清亚洲| 国产成人久久精品77777最新版本| 91精品国产综合久久精品 | 日本三级韩国三级欧美三级| 91同城在线观看| 国产亚洲欧美激情| 另类欧美日韩国产在线| 8x8x8国产精品| 亚洲成人在线免费| 日本精品一区二区三区四区的功能| 久久久影视传媒| 九色|91porny| 精品日韩99亚洲| 久久激情五月激情| 这里只有精品99re| 日韩中文字幕91| 欧美日本在线观看| 性久久久久久久| 欧美日精品一区视频| 亚洲一区二区三区视频在线播放 | 欧美一区欧美二区| 午夜精品免费在线| 在线观看亚洲a| 亚洲午夜av在线| 91极品视觉盛宴| 亚洲国产精品一区二区www| 色88888久久久久久影院按摩| 亚洲天堂精品视频| 色成年激情久久综合| 一个色综合av| 欧美三级资源在线| 日韩国产精品久久久久久亚洲| 欧美午夜精品一区二区三区| 亚洲高清视频在线| 91麻豆精品国产91久久久资源速度 | 欧美丝袜丝nylons| 午夜精品久久久久久| 欧美一区永久视频免费观看| 男女男精品视频网| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品888| 中文字幕在线免费不卡| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲一区视频在线| 欧美男女性生活在线直播观看| 日韩精品电影在线观看| 久久综合久久综合亚洲| 国产成人午夜精品5599| 亚洲三级久久久| 欧美日本在线一区| 国产综合色产在线精品| 中文幕一区二区三区久久蜜桃| 91免费视频大全| 日韩成人伦理电影在线观看| 精品久久久久久无| 成人av免费在线观看| 亚洲一二三专区| 精品久久一区二区| 国产不卡视频在线播放| 亚洲视频你懂的| 欧美一级片免费看| 国产成人av网站| 亚洲国产成人精品视频| 久久婷婷成人综合色| 色婷婷国产精品综合在线观看| 日产欧产美韩系列久久99| 久久人人97超碰com| 91久久精品一区二区| 国产资源精品在线观看| 亚洲色图欧美在线| 日韩一区二区三区在线观看 | 欧美性猛交xxxxxx富婆| 激情欧美一区二区三区在线观看| 国产精品国产三级国产aⅴ原创| 欧美精品丝袜久久久中文字幕| 国产麻豆成人传媒免费观看| 亚洲精品视频自拍| 久久尤物电影视频在线观看| 日本道精品一区二区三区| 精品一二三四区| 亚洲一区二区三区四区五区黄| 精品成人a区在线观看| 欧美午夜片在线看| 成人精品电影在线观看| 日本亚洲最大的色成网站www| 国产精品久久久久一区| 精品国产伦一区二区三区观看体验| 成人免费高清在线| 久久www免费人成看片高清| 亚洲另类春色国产| 国产欧美日韩不卡| 91精品国产一区二区三区蜜臀 | 国产精品久久国产精麻豆99网站| 欧美一区日韩一区| 欧美三级电影在线观看| 99久久国产综合精品女不卡 | 91麻豆精品国产综合久久久久久| 99精品国产视频|