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

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

?? os_cpu_a.asm

?? uCos_II到ARM7的移植
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;              c) OSTCBCur              = OSTCBHighRdy;
;              d) SP                    = OSTCBHighRdy->OSTCBStkPtr;
;              e) Restore the new task's context from the new task's stack
;              f) 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

OSIntCtxSw
        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


;*********************************************************************************************************
;                                      IRQ Interrupt Service Routine
;*********************************************************************************************************

        RSEG CODE:CODE:NOROOT(2)
        CODE32

OS_CPU_IRQ_ISR

        STMFD   SP!, {R1-R3}                   ; PUSH WORKING REGISTERS ONTO IRQ STACK

        MOV     R1, SP                         ; Save   IRQ stack pointer

        ADD     SP, SP,#12                     ; Adjust IRQ stack pointer

        SUB     R2, LR,#4                      ; Adjust PC for return address to task

        MRS     R3, SPSR                       ; Copy SPSR (i.e. interrupted task's CPSR) to R3

        MSR     CPSR_c, #(NO_INT | SVC32_MODE) ; Change to SVC mode

                                               ; SAVE TASK'S CONTEXT ONTO TASK'S STACK
        STMFD   SP!, {R2}                      ;    Push task's Return PC
        STMFD   SP!, {LR}                      ;    Push task's LR
        STMFD   SP!, {R4-R12}                  ;    Push task's R12-R4

        LDMFD   R1!, {R4-R6}                   ;    Move task's R1-R3 from IRQ stack to SVC stack
        STMFD   SP!, {R4-R6}
        STMFD   SP!, {R0}                      ;    Push task's R0    onto task's stack
        STMFD   SP!, {R3}                      ;    Push task's CPSR (i.e. IRQ's SPSR)

                                               ; HANDLE NESTING COUNTER
        LDR     R0, ??OS_IntNesting            ; OSIntNesting++;
        LDRB    R1, [R0]
        ADD     R1, R1,#1
        STRB    R1, [R0]

        CMP     R1, #1                         ; if (OSIntNesting == 1) {
        BNE     OS_CPU_IRQ_ISR_1

        LDR     R4, ??OS_TCBCur                ;     OSTCBCur->OSTCBStkPtr = SP
        LDR     R5, [R4]
        STR     SP, [R5]                       ; }

OS_CPU_IRQ_ISR_1
        MSR     CPSR_c, #(NO_INT | IRQ32_MODE) ; Change to IRQ mode (to use the IRQ stack to handle interrupt)

        LDR     R0, ??OS_CPU_IRQ_ISR_Handler   ; OS_CPU_IRQ_ISR_Handler();
        MOV     LR, PC
        BX      R0

        MSR     CPSR_c, #(NO_INT | SVC32_MODE) ; Change to SVC mode

        LDR     R0, ??OS_IntExit               ; OSIntExit();
        MOV     LR, PC
        BX      R0

                                               ; 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


;*********************************************************************************************************
;                                      FIQ Interrupt Service Routine
;*********************************************************************************************************

        RSEG CODE:CODE:NOROOT(2)
        CODE32

OS_CPU_FIQ_ISR

        STMFD   SP!, {R1-R3}                   ; PUSH WORKING REGISTERS ONTO FIQ STACK

        MOV     R1, SP                         ; Save   FIQ stack pointer

        ADD     SP, SP,#12                     ; Adjust FIQ stack pointer

        SUB     R2, LR,#4                      ; Adjust PC for return address to task

        MRS     R3, SPSR                       ; Copy SPSR (i.e. interrupted task's CPSR) to R3

        MSR     CPSR_c, #(NO_INT | SVC32_MODE) ; Change to SVC mode

                                               ; SAVE TASK'S CONTEXT ONTO TASK'S STACK
        STMFD   SP!, {R2}                      ;    Push task's Return PC
        STMFD   SP!, {LR}                      ;    Push task's LR
        STMFD   SP!, {R4-R12}                  ;    Push task's R12-R4

        LDMFD   R1!, {R4-R6}                   ;    Move task's R1-R3 from FIQ stack to SVC stack
        STMFD   SP!, {R4-R6}
        STMFD   SP!, {R0}                      ;    Push task's R0    onto task's stack
        STMFD   SP!, {R3}                      ;    Push task's CPSR (i.e. FIQ's SPSR)

                                               ; HANDLE NESTING COUNTER
        LDR     R0, ??OS_IntNesting            ; OSIntNesting++;
        LDRB    R1, [R0]
        ADD     R1, R1,#1
        STRB    R1, [R0]

        CMP     R1, #1                         ; if (OSIntNesting == 1) {
        BNE     OS_CPU_FIQ_ISR_1

        LDR     R4, ??OS_TCBCur                ;     OSTCBCur->OSTCBStkPtr = SP
        LDR     R5, [R4]
        STR     SP, [R5]                       ; }

OS_CPU_FIQ_ISR_1
        MSR     CPSR_c, #(NO_INT | FIQ32_MODE) ; Change to FIQ mode (to use the FIQ stack to handle interrupt)

        LDR     R0, ??OS_CPU_FIQ_ISR_Handler   ; OS_CPU_FIQ_ISR_Handler();
        MOV     LR, PC
        BX      R0

        MSR     CPSR_c, #(NO_INT | SVC32_MODE) ; Change to SVC mode

        LDR     R0, ??OS_IntExit               ; OSIntExit();
        MOV     LR, PC
        BX      R0

                                               ; 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


;*********************************************************************************************************
;                                     POINTERS TO VARIABLES
;*********************************************************************************************************

        DATA

??OS_TaskSwHook:
        DC32    OSTaskSwHook

??OS_CPU_IRQ_ISR_Handler:
        DC32    OS_CPU_IRQ_ISR_Handler

??OS_CPU_FIQ_ISR_Handler:
        DC32    OS_CPU_FIQ_ISR_Handler

??OS_IntExit:
        DC32    OSIntExit

??OS_IntNesting:
        DC32    OSIntNesting

??OS_PrioCur:
        DC32    OSPrioCur

??OS_PrioHighRdy:
        DC32    OSPrioHighRdy

??OS_Running:
        DC32    OSRunning

??OS_TCBCur:
        DC32    OSTCBCur

??OS_TCBHighRdy:
        DC32    OSTCBHighRdy

        END

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女久久久久aⅴ国产馆| 日日夜夜免费精品| 久久精品夜夜夜夜久久| 精品美女在线播放| 久久亚洲私人国产精品va媚药| 精品欧美一区二区久久| 日韩精品一区二区三区视频 | 成人18精品视频| 国产suv精品一区二区883| 国产成人免费9x9x人网站视频| 激情都市一区二区| 国产成人免费视| 国产成人日日夜夜| 成人aa视频在线观看| 99v久久综合狠狠综合久久| 99国产精品久| 国产精品乱码一区二区三区软件| 国产女人水真多18毛片18精品视频| 国产欧美日韩另类视频免费观看| 欧美经典一区二区三区| 亚洲欧洲精品一区二区三区不卡| 亚洲欧美日韩一区| 亚洲午夜电影网| 美女视频网站黄色亚洲| 国产一区二区三区免费| 国产91清纯白嫩初高中在线观看| 99久久婷婷国产综合精品电影| 一本一道综合狠狠老| 欧美日韩中文一区| 欧美一卡2卡3卡4卡| 国产亚洲成aⅴ人片在线观看| 中文字幕亚洲电影| 亚洲综合图片区| 偷窥少妇高潮呻吟av久久免费| 玖玖九九国产精品| 成人一二三区视频| 在线观看三级视频欧美| 欧美v日韩v国产v| 亚洲三级在线观看| 欧美aaaaaa午夜精品| 国产风韵犹存在线视精品| 91免费在线看| 欧美成人一区二区| 国产精品视频线看| 亚洲国产aⅴ成人精品无吗| 狠狠色狠狠色综合| 日本久久精品电影| 欧美成人精品二区三区99精品| 国产午夜亚洲精品不卡| 亚洲一区影音先锋| 激情欧美日韩一区二区| 色女孩综合影院| 久久人人爽人人爽| 一区二区三区国产| 国产亚洲综合色| 亚洲第一激情av| 黑人巨大精品欧美一区| 欧美色欧美亚洲另类二区| 久久人人爽爽爽人久久久| www国产精品av| 亚洲免费资源在线播放| 天天做天天摸天天爽国产一区| 亚洲一二三区不卡| 日本视频一区二区| 欧美在线播放高清精品| 国产精品剧情在线亚洲| 国产成人在线网站| 久久免费电影网| 国产成人精品免费看| 国产精品嫩草99a| 99国产精品久久久久久久久久久| 久久影院视频免费| 国产成人在线视频网址| 国产精品色呦呦| 国产高清不卡二三区| 久久久国产一区二区三区四区小说| 国产成人免费视频网站| 国产精品五月天| 欧美一区二区在线免费播放| 日韩av一区二区在线影视| 欧美在线一区二区| 午夜欧美一区二区三区在线播放| 日韩视频一区二区| 色综合久久综合| 国产一区二区伦理| 日韩av一区二| 伊人一区二区三区| 欧美系列亚洲系列| 国产一区在线观看麻豆| 国产欧美日韩在线视频| 欧美日韩国产区一| 成人免费精品视频| 欧美96一区二区免费视频| 综合在线观看色| 欧美老人xxxx18| 国产成人精品三级麻豆| 日本一区中文字幕| 天堂av在线一区| 美女视频黄久久| 久久99精品国产91久久来源| 亚洲欧洲成人av每日更新| 欧美一区二区福利在线| 国产91丝袜在线观看| 亚洲欧美中日韩| 欧美一三区三区四区免费在线看 | 一区二区国产盗摄色噜噜| 在线播放中文字幕一区| eeuss影院一区二区三区| 免费精品视频在线| 一区二区在线看| 欧美激情一区三区| 精品久久久久久最新网址| 欧美高清视频一二三区 | 亚洲视频免费在线观看| 久久久高清一区二区三区| 色老头久久综合| 激情图区综合网| 亚洲免费看黄网站| 久久综合九色综合97婷婷女人| 国产很黄免费观看久久| 日韩一区欧美一区| 精品国产凹凸成av人网站| 不卡的av在线| 久久久亚洲精品石原莉奈| 日本欧美韩国一区三区| 欧美色中文字幕| 亚洲成人午夜影院| 欧美三级一区二区| 一级日本不卡的影视| 天天影视色香欲综合网老头| 婷婷开心久久网| 国产色91在线| 色琪琪一区二区三区亚洲区| 国产91精品精华液一区二区三区 | 色综合久久天天综合网| 一区二区三区四区精品在线视频| 日韩免费一区二区三区在线播放| 一本久久综合亚洲鲁鲁五月天| 国产一区二区免费看| 天天影视涩香欲综合网| 日韩av电影免费观看高清完整版| 亚洲图片欧美综合| 亚洲三级免费电影| 亚洲一二三四在线观看| 一区二区高清在线| 国产美女精品在线| 成+人+亚洲+综合天堂| 欧美精品九九99久久| 欧美激情在线一区二区| 亚洲v精品v日韩v欧美v专区| 另类人妖一区二区av| av在线播放成人| 欧美一级夜夜爽| 亚洲黄色小视频| 国产福利一区二区三区视频在线| 色婷婷国产精品久久包臀| 日韩欧美中文字幕制服| 亚洲欧洲www| 国产揄拍国内精品对白| 久久综合久色欧美综合狠狠| 亚洲免费av观看| heyzo一本久久综合| 精品国产自在久精品国产| 夜夜嗨av一区二区三区网页 | 亚洲视频 欧洲视频| 国产jizzjizz一区二区| 久久午夜色播影院免费高清| 亚洲高清免费在线| 91麻豆自制传媒国产之光| 国产欧美一区二区精品忘忧草| 狠狠色丁香婷婷综合久久片| 91精品福利在线一区二区三区| 五月激情综合色| 91麻豆精品国产综合久久久久久| 一区二区三区在线观看网站| 在线欧美小视频| 亚洲成人激情综合网| 欧美吻胸吃奶大尺度电影| 亚洲国产一区视频| 欧美一区二区不卡视频| 麻豆精品视频在线观看| 精品久久久久一区| 高清国产午夜精品久久久久久| 国产精品青草综合久久久久99| 国产精品亚洲一区二区三区在线 | 久久成人av少妇免费| 久久精品亚洲麻豆av一区二区| 国产麻豆精品久久一二三| 国产精品人人做人人爽人人添| 国产成人精品一区二区三区四区| 欧美国产视频在线| 在线观看亚洲a| 精品一区二区在线免费观看| 久久―日本道色综合久久| 99精品欧美一区二区三区小说| 亚洲午夜久久久久久久久电影院 | 日韩欧美中文字幕公布| 国产99久久久国产精品免费看| 日韩av不卡一区二区| 国产香蕉久久精品综合网|