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

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

?? os_cpu_a.asm

?? 基于 Philips 公司的 ARM-7 使用之 uC/OS-II 作業(yè)系統(tǒng),此例程是移植于 LPC-2138 上的應(yīng)用,不同于一般的 Porting 其最主要是加入了支援 OS_View 觀察器功能
?? ASM
?? 第 1 頁 / 共 2 頁
字號:

    LDR     R0, ?OS_TCBCur                                      ; OSTCBCur  = OSTCBHighRdy;
    LDR     R1, ?OS_TCBHighRdy
    LDR     R2, [R1]
    STR     R2, [R0]

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

                                                                ; RESTORE NEW TASK'S CONTEXT
    LDMFD   SP!, {R0}                                           ;    Pop new task's CPSR
    MSR     CPSR_cxsf, R0

    LDMFD   SP!, {R0-R12, LR, PC}                               ;    Pop new task's context


;********************************************************************************************************
;                                        RESET EXCEPTION HANDLER
;********************************************************************************************************

OS_CPU_ARM_EXCEPT_RESET_HANDLER
                                                                ; LR offset to return from this exception:  0
                                                                ;  (there is no way to return from a RESET exception)
    STMFD   SP!, {R0-R12, LR}                                   ; Push working registers
    MOV     R3, LR                                              ; Save link register
    MOV     R0, #OS_CPU_ARM_EXCEPT_RESET                        ; Set exception ID to OS_CPU_ARM_EXCEPT_RESET
    B            OS_CPU_ARM_EXCEPT_HANDLER                      ; Branch to global exception handler


;********************************************************************************************************
;                                UNDEFINED INSTRUCTION EXCEPTION HANDLER
;********************************************************************************************************

OS_CPU_ARM_EXCEPT_UNDEF_INSTR_HANDLER
                                                                ; LR offset to return from this exception:  0
    STMFD   SP!, {R0-R12, LR}                                   ; Push working registers
    MOV     R3, LR                                              ; Save link register
    MOV     R0, #OS_CPU_ARM_EXCEPT_UNDEF_INSTR                  ; Set exception ID to OS_CPU_ARM_EXCEPT_UNDEF_INSTR
    B            OS_CPU_ARM_EXCEPT_HANDLER                      ; Branch to global exception handler


;********************************************************************************************************
;                                 SOFTWARE INTERRUPT EXCEPTION HANDLER
;********************************************************************************************************

OS_CPU_ARM_EXCEPT_SWI_HANDLER
                                                                ; LR offset to return from this exception:  0
    STMFD   SP!, {R0-R12, LR}                                   ; Push working registers
    MOV     R3, LR                                              ; Save link register
    MOV     R0, #OS_CPU_ARM_EXCEPT_SWI                          ; Set exception ID to OS_CPU_ARM_EXCEPT_SWI
    B            OS_CPU_ARM_EXCEPT_HANDLER                      ; Branch to global exception handler


;********************************************************************************************************
;                                   PREFETCH ABORT EXCEPTION HANDLER
;********************************************************************************************************

OS_CPU_ARM_EXCEPT_PREFETCH_ABORT_HANDLER
    SUB     LR, LR, #4                                          ; LR offset to return from this exception: -4
    STMFD   SP!, {R0-R12, LR}                                   ; Push working registers
    MOV     R3, LR                                              ; Save link register
    MOV     R0, #OS_CPU_ARM_EXCEPT_PREFETCH_ABORT               ; Set exception ID to OS_CPU_ARM_EXCEPT_PREFETCH_ABORT
    B            OS_CPU_ARM_EXCEPT_HANDLER                      ; Branch to global exception handler


;********************************************************************************************************
;                                     DATA ABORT EXCEPTION HANDLER
;********************************************************************************************************

OS_CPU_ARM_EXCEPT_DATA_ABORT_HANDLER
    SUB     LR, LR, #8                                          ; LR offset to return from this exception: -8
    STMFD   SP!, {R0-R12, LR}                                   ; Push working registers
    MOV     R3, LR                                              ; Save link register
    MOV     R0, #OS_CPU_ARM_EXCEPT_DATA_ABORT                   ; Set exception ID to OS_CPU_ARM_EXCEPT_DATA_ABORT
    B            OS_CPU_ARM_EXCEPT_HANDLER                      ; Branch to global exception handler


;********************************************************************************************************
;                                    ADDRESS ABORT EXCEPTION HANDLER
;********************************************************************************************************

OS_CPU_ARM_EXCEPT_ADDR_ABORT_HANDLER
    SUB     LR, LR, #8                                          ; LR offset to return from this exception: -8
    STMFD   SP!, {R0-R12, LR}                                   ; Push working registers
    MOV     R3, LR                                              ; Save link register
    MOV     R0, #OS_CPU_ARM_EXCEPT_ADDR_ABORT                   ; Set exception ID to OS_CPU_ARM_EXCEPT_ADDR_ABORT
    B            OS_CPU_ARM_EXCEPT_HANDLER                      ; Branch to global exception handler


;********************************************************************************************************
;                                  INTERRUPT REQUEST EXCEPTION HANDLER
;********************************************************************************************************

OS_CPU_ARM_EXCEPT_IRQ_HANDLER
    SUB     LR, LR, #4                                          ; LR offset to return from this exception: -4
    STMFD   SP!, {R0-R12, LR}                                   ; Push working registers
    MOV     R3, LR                                              ; Save link register
    MOV     R0, #OS_CPU_ARM_EXCEPT_IRQ                          ; Set exception ID to OS_CPU_ARM_EXCEPT_IRQ
    B            OS_CPU_ARM_EXCEPT_HANDLER                      ; Branch to global exception handler


;********************************************************************************************************
;                               FAST INTERRUPT REQUEST EXCEPTION HANDLER
;********************************************************************************************************

OS_CPU_ARM_EXCEPT_FIQ_HANDLER
    SUB     LR, LR, #4                                          ; LR offset to return from this exception: -4
    STMFD   SP!, {R0-R12, LR}                                   ; Push working registers
    MOV     R3, LR                                              ; Save link register
    MOV     R0, #OS_CPU_ARM_EXCEPT_FIQ                          ; Set exception ID to OS_CPU_ARM_EXCEPT_FIQ
    B            OS_CPU_ARM_EXCEPT_HANDLER                      ; Branch to global exception handler


;********************************************************************************************************
;                                       GLOBAL EXCEPTION HANDLER
;********************************************************************************************************

OS_CPU_ARM_EXCEPT_HANDLER
    MRS     R1, SPSR                                            ; Save CPSR (i.e. exception's SPSR)

                                                                ; DETERMINE IF WE INTERRUPTED A TASK OR ANOTHER LOWER PRIORITY EXCEPTION
                                                                ;   SPSR.Mode = FIQ, IRQ, SVC, ABT, UND : Other exception
                                                                ;   SPSR.Mode = SYS                     : Task
                                                                ;   SPSR.Mode = USR                     : *unsupported state*
    AND     R2, R1, #OS_CPU_ARM_MODE_MASK
    CMP     R2,     #OS_CPU_ARM_MODE_SYS
    BNE     OS_CPU_ARM_EXCEPT_HANDLER_BreakExcept


;********************************************************************************************************
;                                  EXCEPTION HANDLER: TASK INTERRUPTED
;********************************************************************************************************

OS_CPU_ARM_EXCEPT_HANDLER_BreakTask
    MRS     R2, CPSR                                            ; Save exception's CPSR
    MOV     R4, SP                                              ; Save exception's stack pointer

                                                                ; Change to SYS mode & disable interruptions
    MSR     CPSR_c, #(OS_CPU_ARM_CONTROL_INT_DIS | OS_CPU_ARM_MODE_SYS)

                                                                ; SAVE TASK'S CONTEXT ONTO TASK'S STACK
    STMFD   SP!, {R3}                                           ;   Push task's PC
    STMFD   SP!, {LR}                                           ;   Push task's LR
    STMFD   SP!, {R5-R12}                                       ;   Push task's R12-R5
    LDMFD   R4!, {R5-R9}                                        ;   Move task's R4-R0 from exception stack to task's stack
    STMFD   SP!, {R5-R9}

    TST     R3, #1                                              ;   See if called from Thumb mode
    ORRNE   R1, R1, #OS_CPU_ARM_CONTROL_THUMB                   ;   If yes, Set the T-bit
    STMFD   SP!, {R1}                                           ;   Push task's CPSR (i.e. exception SPSR)

                                                                ; if (OSRunning == 1)
    LDR     R1, ?OS_Running
    LDRB    R1, [R1]
    CMP     R1, #1
    BNE     OS_CPU_ARM_EXCEPT_HANDLER_BreakTask_1

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

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

OS_CPU_ARM_EXCEPT_HANDLER_BreakTask_1
    MSR     CPSR_cxsf, R2                                       ; RESTORE INTERRUPTED MODE

    LDR     R1, ?OS_EXCEPT_HANDLER                              ; OS_EXCEPT_HANDLER();
    MOV     LR, PC
    BX      R1

                                                                ; Adjust exception stack pointer. This is needed because
                                                                ; exception stack is not used when restoring task context.
    ADD     SP, SP, #(14*4)

                                                                ; Change to SYS mode & disable interruptions.
    MSR     CPSR_c, #(OS_CPU_ARM_CONTROL_INT_DIS | OS_CPU_ARM_MODE_SYS)

                                                                ; Call OSIntExit(). This call MAY never return
                                                                ;  if a ready task with higher priority than
                                                                ;  the interrupted one is found.
    LDR     R0, ?OS_IntExit
    MOV     LR, PC
    BX      R0

                                                                ; RESTORE NEW TASK'S CONTEXT
    LDMFD   SP!, {R0}                                           ;    Pop new task's CPSR
    MSR     CPSR_cxsf, R0

    LDMFD   SP!, {R0-R12, LR, PC}                               ;    Pop new task's context


;********************************************************************************************************
;                               EXCEPTION HANDLER: EXCEPTION INTERRUPTED
;********************************************************************************************************

OS_CPU_ARM_EXCEPT_HANDLER_BreakExcept
    MRS     R2, CPSR                                            ; Save exception's CPSR

                                                                ; Change to SYS mode & disable interruptions
    MSR     CPSR_c, #(OS_CPU_ARM_CONTROL_INT_DIS | OS_CPU_ARM_MODE_SYS)

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

    MSR     CPSR_cxsf, R2                                       ; RESTORE INTERRUPTED MODE

    LDR     R3, ?OS_EXCEPT_HANDLER                              ; OS_EXCEPT_HANDLER();
    MOV     LR, PC
    BX      R3

                                                                ; Change to SYS mode & disable interruptions
    MSR     CPSR_c, #(OS_CPU_ARM_CONTROL_INT_DIS | OS_CPU_ARM_MODE_SYS)

                                                                ; HANDLE NESTING COUNTER
    LDR     R3, ?OS_IntNesting                                  ;   OSIntNesting--;
    LDRB    R4, [R3]
    SUB     R4, R4, #1
    STRB    R4, [R3]

    MSR     CPSR_cxsf, R2                                       ; RESTORE INTERRUPTED MODE

    LDMFD   SP!, {R0-R12, PC}^                                  ; Pull working registers and return from exception.

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

    DATA

?OS_Running:
    DC32    OSRunning

?OS_PrioCur:
    DC32    OSPrioCur

?OS_PrioHighRdy:
    DC32    OSPrioHighRdy

?OS_TCBCur:
    DC32    OSTCBCur

?OS_TCBHighRdy:
    DC32    OSTCBHighRdy

?OS_IntNesting:
    DC32    OSIntNesting

?OS_TaskSwHook:
    DC32    OSTaskSwHook

?OS_IntExit:
    DC32    OSIntExit

?OS_EXCEPT_HANDLER:
    DC32    OS_EXCEPT_HANDLER


    END

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
555夜色666亚洲国产免| 国产综合色视频| 欧美在线视频你懂得| 亚洲男女一区二区三区| 色婷婷综合激情| 午夜视频在线观看一区二区| 欧美电影影音先锋| 九色综合国产一区二区三区| 精品国产污网站| 暴力调教一区二区三区| 亚洲综合成人在线| 日韩欧美不卡一区| 成人福利在线看| 一区二区三区精品视频| 7777精品久久久大香线蕉| 精品一区二区三区日韩| 国产精品美女久久久久久久| 欧洲生活片亚洲生活在线观看| 日韩中文字幕91| 国产日产精品一区| 在线观看中文字幕不卡| 精品一区二区免费看| 国产精品家庭影院| 欧美另类高清zo欧美| 国产精品一区二区三区乱码| 樱花影视一区二区| 精品欧美乱码久久久久久 | 亚洲精品视频免费看| 制服丝袜av成人在线看| 成人夜色视频网站在线观看| 亚洲第一激情av| 欧美国产欧美综合| 91精品国产综合久久福利软件| 国产综合久久久久影院| 一区二区三区免费观看| 最好看的中文字幕久久| 日韩欧美精品在线视频| 91污在线观看| 麻豆国产欧美日韩综合精品二区 | 欧美精品久久一区二区三区| 国产高清亚洲一区| 日韩av在线免费观看不卡| 国产精品美女久久久久久| 91精品国产一区二区| 91在线观看美女| 国产精品一区二区你懂的| 亚洲国产精品久久久久婷婷884| 国产喷白浆一区二区三区| 欧美二区乱c少妇| 欧洲色大大久久| 成人91在线观看| 国产精品亚洲一区二区三区在线 | 国产一区二区成人久久免费影院| 亚洲在线中文字幕| 成人午夜视频免费看| 免费成人你懂的| 亚洲午夜久久久久久久久电影网| 日本一区二区成人| 久久蜜桃香蕉精品一区二区三区| 欧美日韩国产a| 欧美综合天天夜夜久久| 91欧美激情一区二区三区成人| 国产丶欧美丶日本不卡视频| 蜜臀精品久久久久久蜜臀| 亚洲成人在线观看视频| 一区二区三区四区乱视频| 国产精品毛片大码女人| 欧美国产欧美亚州国产日韩mv天天看完整 | 自拍av一区二区三区| 欧美激情一区二区三区四区| 欧美精品一区二区精品网| 日韩一二三区不卡| 日韩欧美二区三区| 亚洲精品在线电影| 精品国产乱码91久久久久久网站| 日韩欧美久久久| 日韩精品在线一区二区| 精品久久国产字幕高潮| 视频一区二区欧美| 香蕉av福利精品导航| 偷窥国产亚洲免费视频| 偷拍一区二区三区| 青青草国产精品97视觉盛宴| 免费在线看成人av| 精品一区二区三区香蕉蜜桃| 久久99精品久久久久| 国产精品亚洲一区二区三区妖精 | 国产精品福利影院| 亚洲三级在线看| 亚洲综合色成人| 日韩综合一区二区| 蜜桃精品视频在线| 国产乱对白刺激视频不卡| 成人免费视频视频| 91国在线观看| 91精品国产欧美一区二区成人| 日韩丝袜情趣美女图片| 国产亚洲成aⅴ人片在线观看| 国产欧美视频一区二区| 亚洲欧美一区二区不卡| 亚洲高清免费在线| 狠狠v欧美v日韩v亚洲ⅴ| 国产.欧美.日韩| 在线观看一区不卡| 日韩午夜av电影| 国产精品久久久久久久久久免费看| 自拍偷拍欧美激情| 免费在线观看视频一区| 国产成人精品在线看| 在线免费视频一区二区| 欧美一级高清片| 综合激情网...| 日本在线不卡一区| 成人av综合在线| 欧美久久久久久蜜桃| 国产欧美一区二区三区在线老狼| 亚洲欧美韩国综合色| 免费一区二区视频| 99国产精品久久久久久久久久久 | 亚洲美女免费视频| 亚洲国产视频直播| 国产成人精品免费网站| 欧美伊人久久久久久久久影院 | 国产经典欧美精品| 91国产视频在线观看| 精品国产自在久精品国产| 亚洲欧美偷拍卡通变态| 激情欧美日韩一区二区| 欧美无乱码久久久免费午夜一区| 久久这里只精品最新地址| 亚洲一区二区黄色| 成人小视频免费观看| 日韩视频一区二区三区| 夜色激情一区二区| 成人一区二区三区在线观看| 欧美一区二区精品在线| 亚洲欧美激情小说另类| 26uuu精品一区二区| 天天综合色天天| 99riav久久精品riav| 久久欧美一区二区| 日产国产高清一区二区三区| 在线亚洲欧美专区二区| 国产精品美女久久久久久久久久久 | 成人福利视频在线看| 日韩欧美久久久| 午夜精品福利在线| 在线一区二区三区做爰视频网站| 国产精品天美传媒| 国产成人综合亚洲网站| 欧美sm美女调教| 日产国产欧美视频一区精品| 欧美亚洲日本一区| 一区二区三区在线免费视频| 成人激情午夜影院| 欧美国产精品一区| 国产麻豆视频一区二区| 26uuu久久天堂性欧美| 免费看日韩精品| 日韩一区二区三区视频在线观看| 午夜精品一区二区三区三上悠亚| 91免费视频网址| 亚洲免费在线看| 91色婷婷久久久久合中文| 国产精品久久久99| 99精品桃花视频在线观看| 自拍偷拍国产精品| 91麻豆成人久久精品二区三区| 国产精品久久久久久久久免费桃花 | 国产精品乱人伦中文| 国产成人亚洲综合a∨婷婷图片| 欧美精品一区二区精品网| 久久99国产精品久久99| 久久青草国产手机看片福利盒子| 国产精品一区二区在线播放| 久久久久国产精品免费免费搜索| 国产一区二区三区在线观看免费 | 精品入口麻豆88视频| 捆绑紧缚一区二区三区视频| 精品免费国产一区二区三区四区| 极品美女销魂一区二区三区免费| 久久精品在线观看| 成人av免费在线播放| 亚洲欧美激情插| 欧美人牲a欧美精品| 毛片av一区二区| 久久午夜电影网| 99久久99久久精品免费观看 | 偷窥少妇高潮呻吟av久久免费| 欧美一级片在线看| 国产一区91精品张津瑜| 日韩毛片一二三区| 欧美老年两性高潮| 国产精品中文字幕欧美| 亚洲欧洲成人av每日更新| 欧美视频三区在线播放| 精品一区二区国语对白| 亚洲视频在线一区| 91麻豆精品国产自产在线| 精品一区二区三区在线观看国产|