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

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

?? os_cpu_a.s

?? 基于STR711的Flash程序
?? S
?? 第 1 頁 / 共 2 頁
字號:
        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;
;              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
;*********************************************************************************************************

OSIntCtxSw
        LDR     R0, =OSTaskSwHook       ; OSTaskSwHook();
        MOV     LR, PC
        BX      R0            

        LDR     R4,=OSPrioCur           ; OSPrioCur = OSPrioHighRdy
        LDR     R5,=OSPrioHighRdy
        LDRB    R6,[R5]
        STRB    R6,[R4]
        
        LDR     R4,=OSTCBCur            ; OSTCBCur  = OSTCBHighRdy;
        LDR     R6,=OSTCBHighRdy
        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
;*********************************************************************************************************

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, =OSIntNesting              ; 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, =OSTCBCur                  ;     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            

EIC_base_addr         EQU    0xFFFFF800; EIC base address.
CICR_off_addr         EQU    0x04      ; Current Interrupt Channel Register.
IVR_off_addr          EQU    0x18      ; Interrupt Vector Register.
IPR_off_addr          EQU    0x40      ; Interrupt Pending Register.

        LDR     R0, =(EIC_base_addr + IVR_off_addr)
        MOV     LR, PC
        BX      R0                             ; Branch to the IRQ handler.
                                               ; Clear pending bit in EIC (using the proper IPRx)
        LDR     R0, =EIC_base_addr
        LDR     R2, [R0, #CICR_off_addr]       ; Get the IRQ channel number.
        MOV     R3, #1
        MOV     R3, R3, LSL r2
        STR     R3, [R0, #IPR_off_addr]        ; Clear the corresponding IPR bit.
        
        MSR     CPSR_c, #(NO_INT | SVC32_MODE) ; Change to SVC mode
        
        LDR     R0, =OSIntExit                 ; 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
;*********************************************************************************************************

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, =OSIntNesting              ; 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, =OSTCBCur                  ;     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, =FIQ_Handler               ; FIQ_Handler();
        MOV     LR, PC
        BX      R0            
        
        MSR     CPSR_c, #(NO_INT | SVC32_MODE) ; Change to SVC mode
        
        LDR     R0, =OSIntExit                 ; 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

        END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲免费在线看| 午夜精彩视频在线观看不卡| 色妹子一区二区| 精品一区二区在线播放| 亚洲欧洲韩国日本视频| xnxx国产精品| 欧美美女激情18p| www.欧美色图| 久久国产精品免费| 亚洲妇熟xx妇色黄| 亚洲日本在线看| 久久免费看少妇高潮| 欧美一区二区人人喊爽| 一本在线高清不卡dvd| 丁香天五香天堂综合| 日本91福利区| 午夜精品影院在线观看| 亚洲日本一区二区| 国产精品美女久久久久久久久| 欧美一区二区三区四区在线观看| 91亚洲国产成人精品一区二区三| 韩国三级中文字幕hd久久精品| 午夜精品久久久久久久99水蜜桃 | 欧美色老头old∨ideo| 国产999精品久久| 狠狠色丁香久久婷婷综合丁香| 日韩精品国产精品| 亚洲午夜在线电影| 亚洲资源在线观看| 一区二区三区欧美激情| 日韩一区欧美小说| 国产精品国产成人国产三级| 国产精品视频一区二区三区不卡| www国产成人| 精品久久人人做人人爰| 精品剧情v国产在线观看在线| 欧美一级在线视频| 日韩一二三四区| 日韩一区二区免费高清| 日韩美一区二区三区| 欧美成人女星排名| 亚洲精品一区二区三区蜜桃下载| 久久综合中文字幕| 国产人伦精品一区二区| 精品国产91九色蝌蚪| 精品国产成人在线影院 | 在线不卡的av| 制服视频三区第一页精品| 6080亚洲精品一区二区| 日韩一卡二卡三卡四卡| 日韩精品中文字幕在线不卡尤物| 精品久久久久久久久久久久包黑料| 日韩美女在线视频 | 欧美国产成人在线| 亚洲欧美在线观看| 亚洲午夜一区二区三区| 日韩精品久久理论片| 国产在线精品不卡| 成人国产精品免费观看| 91国产丝袜在线播放| 欧美久久久影院| 亚洲欧洲精品一区二区三区不卡 | 日日骚欧美日韩| 麻豆91精品91久久久的内涵| 激情图片小说一区| 成人av在线资源网站| 在线观看亚洲一区| 91精品国产91久久综合桃花 | 亚洲一二三区视频在线观看| 亚洲综合丁香婷婷六月香| 亚洲成a天堂v人片| 久久er99精品| av成人老司机| 欧美巨大另类极品videosbest | 中文字幕不卡三区| 亚洲国产综合91精品麻豆| 麻豆精品视频在线| eeuss鲁片一区二区三区在线看| 欧美少妇一区二区| www.色精品| 3d动漫精品啪啪一区二区竹菊| 精品国产乱码久久久久久夜甘婷婷| 国产精品久久久久久久久久久免费看 | 欧美激情中文字幕一区二区| 亚洲精品videosex极品| 麻豆精品精品国产自在97香蕉| 成人激情免费电影网址| 欧美高清视频不卡网| 国产亚洲美州欧州综合国| 亚洲一区二区精品久久av| 国产乱人伦精品一区二区在线观看| 一本一道综合狠狠老| 久久日韩粉嫩一区二区三区| 亚洲综合另类小说| 高潮精品一区videoshd| 91精品一区二区三区久久久久久 | 亚洲国产精品嫩草影院| 国产九色sp调教91| 欧美丰满少妇xxxbbb| 中文字幕一区二区在线观看| 男人的天堂久久精品| 日本福利一区二区| 国产午夜精品久久久久久久| 丝袜美腿亚洲一区| 色综合久久中文综合久久97| 欧美成人三级电影在线| 日韩精品视频网| 97精品视频在线观看自产线路二| 久久影院午夜片一区| 日韩精品电影在线观看| 色一情一乱一乱一91av| 欧美激情一区二区在线| 国产一区欧美一区| 欧美一区二区三区男人的天堂| 一区二区三区四区不卡视频 | 国产美女娇喘av呻吟久久| 欧美日韩aaaaaa| 一区二区三区高清| 99re热这里只有精品视频| 国产午夜精品一区二区三区嫩草 | 热久久国产精品| 欧美日韩美少妇| 亚洲一区二区三区免费视频| 97aⅴ精品视频一二三区| 中文字幕av一区二区三区免费看| 久久99久久99精品免视看婷婷 | 欧美喷潮久久久xxxxx| 亚洲综合精品自拍| 在线亚洲+欧美+日本专区| 亚洲精品美国一| 一本色道久久加勒比精品| 亚洲男人的天堂在线观看| 99精品国产99久久久久久白柏| 国产精品欧美久久久久无广告| 国产成人啪午夜精品网站男同| 久久久无码精品亚洲日韩按摩| 紧缚捆绑精品一区二区| 精品久久国产字幕高潮| 久久99久久久久久久久久久| 日韩欧美激情一区| 国内精品不卡在线| 久久久精品影视| 国产91在线|亚洲| 国产精品无人区| 91天堂素人约啪| 亚洲最快最全在线视频| 欧美日韩视频专区在线播放| 婷婷综合另类小说色区| 日韩精品专区在线影院重磅| 国内一区二区在线| 国产亚洲短视频| 不卡的看片网站| 亚洲美女精品一区| 69久久99精品久久久久婷婷| 免费在线一区观看| 久久一夜天堂av一区二区三区| 成人小视频在线观看| 有坂深雪av一区二区精品| 欧美日韩免费观看一区二区三区| 日韩中文字幕91| 久久品道一品道久久精品| 99久久伊人精品| 亚洲国产精品自拍| 欧美va在线播放| 波多野洁衣一区| 亚洲电影中文字幕在线观看| 在线播放视频一区| 国产综合色在线| 亚洲精品久久嫩草网站秘色| 在线不卡的av| 成人免费毛片嘿嘿连载视频| 亚洲精品成人精品456| 日韩无一区二区| 成人免费视频国产在线观看| 亚洲第一二三四区| 精品国产乱码久久久久久蜜臀| a级高清视频欧美日韩| 日韩高清国产一区在线| 国产精品午夜电影| 91麻豆精品国产91久久久更新时间| 国产一区二区三区免费在线观看 | 亚洲日本在线视频观看| 555夜色666亚洲国产免| 国产成人在线视频网站| 亚洲sss视频在线视频| 国产亚洲综合在线| 欧美精品aⅴ在线视频| 成人高清视频免费观看| 免费美女久久99| 亚洲女与黑人做爰| 2021中文字幕一区亚洲| 欧美在线一区二区三区| 国产精品综合二区| 偷拍日韩校园综合在线| 亚洲特黄一级片| 精品国产91乱码一区二区三区 | 日本高清成人免费播放| 国产精品1区2区3区| 首页国产欧美久久| 最新国产成人在线观看|