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

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

?? os_cpu_a.asm

?? keil編譯器下uocs在lpc2214上的移植
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;                  R3     Return PC
;********************************************************************************************************

    AREA CODE, CODE, READONLY
    CODE32

OS_CPU_ARM_ExceptUndefInstrHndlr
                                                                ; 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_ExceptHndlr                         ; Branch to global exception handler.


;********************************************************************************************************
;                                 SOFTWARE INTERRUPT EXCEPTION HANDLER
;
; Register Usage:  R0     Exception Type
;                  R1
;                  R2
;                  R3     Return PC
;********************************************************************************************************

    AREA CODE, CODE, READONLY
    CODE32

OS_CPU_ARM_ExceptSwiHndlr
                                                                ; 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_ExceptHndlr                         ; Branch to global exception handler.


;********************************************************************************************************
;                                   PREFETCH ABORT EXCEPTION HANDLER
;
; Register Usage:  R0     Exception Type
;                  R1
;                  R2
;                  R3     Return PC
;********************************************************************************************************

    AREA CODE, CODE, READONLY
    CODE32

OS_CPU_ARM_ExceptPrefetchAbortHndlr
    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_ExceptHndlr                         ; Branch to global exception handler.


;********************************************************************************************************
;                                     DATA ABORT EXCEPTION HANDLER
;
; Register Usage:  R0     Exception Type
;                  R1
;                  R2
;                  R3     Return PC
;********************************************************************************************************

    AREA CODE, CODE, READONLY
    CODE32

OS_CPU_ARM_ExceptDataAbortHndlr
    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_ExceptHndlr                         ; Branch to global exception handler.


;********************************************************************************************************
;                                    ADDRESS ABORT EXCEPTION HANDLER
;
; Register Usage:  R0     Exception Type
;                  R1
;                  R2
;                  R3     Return PC
;********************************************************************************************************

    AREA CODE, CODE, READONLY
    CODE32

OS_CPU_ARM_ExceptAddrAbortHndlr
    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_ExceptHndlr                         ; Branch to global exception handler.


;********************************************************************************************************
;                                  INTERRUPT REQUEST EXCEPTION HANDLER
;
; Register Usage:  R0     Exception Type
;                  R1
;                  R2
;                  R3     Return PC
;********************************************************************************************************

    AREA CODE, CODE, READONLY
    CODE32

OS_CPU_ARM_ExceptIrqHndlr
    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_ExceptHndlr                         ; Branch to global exception handler.


;********************************************************************************************************
;                               FAST INTERRUPT REQUEST EXCEPTION HANDLER
;
; Register Usage:  R0     Exception Type
;                  R1
;                  R2
;                  R3     Return PC
;********************************************************************************************************

    AREA CODE, CODE, READONLY
    CODE32

OS_CPU_ARM_ExceptFiqHndlr
    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_ExceptHndlr                         ; Branch to global exception handler.


;********************************************************************************************************
;                                       GLOBAL EXCEPTION HANDLER
;
; Register Usage:  R0     Exception Type
;                  R1	  Exception's SPSR
;                  R2     Old CPU mode
;                  R3     Return PC
;********************************************************************************************************

    AREA CODE, CODE, READONLY
    CODE32

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

                                                                ; DETERMINE IF WE INTERRUPTED A TASK OR ANOTHER LOWER PRIORITY EXCEPTION:
                                                                ;   SPSR.Mode = SVC                :  task,
                                                                ;   SPSR.Mode = FIQ, IRQ, ABT, UND :  other exceptions,
                                                                ;   SPSR.Mode = USR                : *unsupported state*.
    AND     R2, R1, #OS_CPU_ARM_MODE_MASK
    CMP     R2,     #OS_CPU_ARM_MODE_SVC
    BNE     OS_CPU_ARM_ExceptHndlr_BreakExcept


;********************************************************************************************************
;                                  EXCEPTION HANDLER: TASK INTERRUPTED
;
; Register Usage:  R0     Exception Type
;                  R1	  Exception's SPSR
;                  R2	  Exception's CPSR
;                  R3     Return PC
;                  R4     Exception's SP
;********************************************************************************************************

    AREA CODE, CODE, READONLY
    CODE32

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

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

                                                                ; 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}
    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_ExceptHndlr_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_ExceptHndlr_BreakTask_1
    MSR     CPSR_cxsf, R2                                       ; RESTORE INTERRUPTED MODE.

                                                                ; EXECUTE EXCEPTION HANDLER:
    LDR     R1, __OS_CPU_ExceptHndlr                            ; OS_CPU_ExceptHndlr(except_type = R0);
    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 SVC mode & disable interruptions.
    MSR     CPSR_c, #(OS_CPU_ARM_CONTROL_INT_DIS | OS_CPU_ARM_MODE_SVC)

                                                                ; 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     SPSR_cxsf, R0

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


;********************************************************************************************************
;                               EXCEPTION HANDLER: EXCEPTION INTERRUPTED
;
; Register Usage:  R0     Exception Type
;                  R1
;                  R2
;                  R3
;********************************************************************************************************

OS_CPU_ARM_ExceptHndlr_BreakExcept
    MRS     R2, CPSR                                            ; Save exception's CPSR.

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

                                                                ; 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.

                                                                ; EXECUTE EXCEPTION HANDLER:
    LDR     R3, __OS_CPU_ExceptHndlr                            ; OS_CPU_ExceptHndlr(except_type = R0);
    MOV     LR, PC
    BX      R3

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

                                                                ; 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.

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


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

    AREA CODE, CODE, READONLY
    CODE32

__OS_Running
    DCD     OSRunning

__OS_PrioCur
    DCD     OSPrioCur

__OS_PrioHighRdy
    DCD     OSPrioHighRdy

__OS_TCBCur
    DCD     OSTCBCur

__OS_TCBHighRdy
    DCD     OSTCBHighRdy

__OS_IntNesting
    DCD     OSIntNesting

__OS_TaskSwHook
    DCD     OSTaskSwHook

__OS_IntExit
    DCD     OSIntExit

__OS_CPU_ExceptHndlr
    DCD     OS_CPU_ExceptHndlr


    END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品亚洲欧美一区| 捆绑紧缚一区二区三区视频| 日韩一本二本av| 97久久超碰国产精品| 久久电影国产免费久久电影| 亚洲视频图片小说| 久久综合999| 欧美区在线观看| 91在线高清观看| 国产精品996| 久久 天天综合| 亚洲成年人影院| 亚洲人成人一区二区在线观看| 精品国产青草久久久久福利| 欧美色爱综合网| 91在线云播放| 成人午夜激情视频| 紧缚捆绑精品一区二区| 天天亚洲美女在线视频| 亚洲精选免费视频| 国产精品久久久久久久久免费桃花| 亚洲欧美福利一区二区| 中文字幕成人av| 精品国产一区a| 欧美一卡2卡三卡4卡5免费| 欧美性欧美巨大黑白大战| 99久久夜色精品国产网站| 国产成人亚洲综合色影视| 国精品**一区二区三区在线蜜桃| 午夜国产精品影院在线观看| 亚洲福中文字幕伊人影院| 亚洲欧美日韩国产中文在线| 国产精品亲子伦对白| 国产无人区一区二区三区| 久久久无码精品亚洲日韩按摩| 欧美一二三在线| 日韩欧美一区电影| 日韩欧美一级二级三级久久久| 制服丝袜在线91| 3d成人动漫网站| 91精品国产综合久久婷婷香蕉 | 欧美国产日韩精品免费观看| 久久天天做天天爱综合色| 欧美电视剧在线观看完整版| 欧美va亚洲va香蕉在线| 精品剧情v国产在线观看在线| 欧美成人一区二区| 91精品福利在线一区二区三区| 在线观看www91| 欧美午夜精品久久久久久孕妇 | 日韩精品久久理论片| 日韩影视精彩在线| 久久成人免费电影| 国产精品18久久久久久久久| 成人福利视频在线| 91亚洲男人天堂| 欧美午夜理伦三级在线观看| 欧美精品粉嫩高潮一区二区| 欧美一区二区免费观在线| 日韩欧美激情一区| 欧美国产日本韩| 一区二区三区不卡视频 | 亚洲午夜精品一区二区三区他趣| 亚洲第一成人在线| 久久激情五月激情| 懂色av一区二区三区免费观看| 99久久精品情趣| 国产精品无遮挡| 亚洲欧美日韩系列| 日韩精品三区四区| 国产黄色精品视频| 日本高清视频一区二区| 777xxx欧美| 欧美国产日韩在线观看| 一个色在线综合| 精品一区二区三区在线观看 | 国产欧美精品一区二区色综合| 国产精品久久久久久久久免费相片 | 国v精品久久久网| 色一情一乱一乱一91av| 欧美一区二区视频观看视频| 久久久精品2019中文字幕之3| 亚洲精选免费视频| 精品一区二区三区在线播放视频| 91丨porny丨户外露出| 欧美一区二区三区播放老司机| 久久精品网站免费观看| 亚洲精品伦理在线| 久久99久久久欧美国产| 色猫猫国产区一区二在线视频| 日韩免费观看高清完整版在线观看| 中文字幕亚洲电影| 麻豆精品视频在线观看| 99久久99久久精品免费观看| 日韩欧美在线不卡| 一区二区三区四区国产精品| 国产露脸91国语对白| 欧美日韩国产天堂| 中文字幕一区二区三区色视频| 日本网站在线观看一区二区三区 | 偷偷要91色婷婷| 国产精品性做久久久久久| 欧美精品久久天天躁| 亚洲欧美怡红院| 国产一区久久久| 欧美一区二区三区在线看| 一区二区三区在线观看欧美 | 久久国产精品色| 欧美写真视频网站| 国产精品成人免费在线| 精品一区二区在线观看| 69堂国产成人免费视频| 亚洲一区在线视频观看| 成人app在线| 久久综合精品国产一区二区三区| 亚洲成人777| 欧美在线视频不卡| 亚洲少妇中出一区| 北条麻妃一区二区三区| 久久久久久电影| 精品亚洲国产成人av制服丝袜 | 99久久免费视频.com| 久久久精品国产免费观看同学| 蜜臀av一区二区| 欧美日韩国产免费一区二区| 亚洲乱码日产精品bd| 97久久超碰国产精品电影| 国产精品美女一区二区| 国产成人精品网址| 日日摸夜夜添夜夜添精品视频| 色婷婷国产精品| 亚洲欧美日韩久久| 色综合激情久久| 一区二区不卡在线视频 午夜欧美不卡在 | 日韩欧美在线一区二区三区| 日韩精品欧美成人高清一区二区| 欧美日韩国产综合草草| 性欧美大战久久久久久久久| 欧美日韩一级黄| 天涯成人国产亚洲精品一区av| 欧美老年两性高潮| 日韩国产欧美在线视频| 日韩午夜三级在线| 久久99精品久久久久久国产越南 | 国产在线播放一区| 久久男人中文字幕资源站| 国产激情一区二区三区四区| 国产欧美日本一区视频| 99久久亚洲一区二区三区青草| 国产精品入口麻豆原神| 色综合天天性综合| 亚洲男人的天堂在线aⅴ视频| 在线看日韩精品电影| 天天免费综合色| 精品国产乱码久久久久久影片| 国产在线国偷精品产拍免费yy| 国产日韩欧美综合一区| 成人精品国产免费网站| 一区二区三区丝袜| 4438x亚洲最大成人网| 国内成人免费视频| 国产精品福利电影一区二区三区四区| 91蜜桃在线免费视频| 亚洲第一福利一区| 欧美精品一区二区久久婷婷| 成人国产电影网| 亚洲最快最全在线视频| 91精品久久久久久久久99蜜臂| 国产一区 二区 三区一级| 中文字幕在线不卡一区| 欧美日韩成人在线| 国产一区二区久久| 一二三区精品视频| 日韩精品专区在线影院观看| 成人一级视频在线观看| 亚洲国产精品嫩草影院| 久久综合九色综合久久久精品综合| 91在线精品秘密一区二区| 日韩国产在线观看| 国产精品国产三级国产有无不卡 | 欧美日韩一区二区三区四区五区| 久久99国内精品| 中文字幕中文字幕一区| 欧美另类videos死尸| 粉嫩在线一区二区三区视频| 亚洲第一av色| 国产精品妹子av| 欧美一级在线免费| 色综合欧美在线| 国产一区二区影院| 成人高清免费观看| 免费在线观看视频一区| 亚洲欧美成人一区二区三区| 精品国产亚洲一区二区三区在线观看| 色视频一区二区| 国产99一区视频免费| 日本一不卡视频| 亚洲精品国产高清久久伦理二区| 久久众筹精品私拍模特| 欧美丰满一区二区免费视频|