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

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

?? os_cpu_a.asm

?? protues仿真ARM ARM的I2C
?? 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一区二区三区免费野_久草精品视频
久久久久九九视频| 成人h动漫精品一区二区| 色综合天天综合在线视频| 精品成人一区二区三区四区| 日本一区二区免费在线观看视频| 舔着乳尖日韩一区| 91精品国产一区二区人妖| 久久99精品一区二区三区三区| xnxx国产精品| 丁香婷婷综合网| 亚洲欧美偷拍另类a∨色屁股| 在线观看视频一区| 蜜臀久久99精品久久久画质超高清| 欧美成人a视频| av中文一区二区三区| 一区二区三区欧美| 精品日韩在线观看| 91色在线porny| 日韩av成人高清| 国产女主播在线一区二区| 色综合天天视频在线观看| 日韩精彩视频在线观看| 国产清纯白嫩初高生在线观看91 | 国产欧美日韩综合| 色噜噜狠狠成人中文综合| 日日夜夜精品免费视频| 中文av一区特黄| 欧美日韩国产综合久久 | 亚洲一区中文在线| 精品国内片67194| 91免费视频网址| 国产一区视频网站| 亚洲最快最全在线视频| 久久久久国色av免费看影院| 精品视频一区三区九区| 大尺度一区二区| 久久精品国产亚洲5555| 亚洲综合视频网| 久久精品这里都是精品| 制服视频三区第一页精品| av在线一区二区| 成人免费精品视频| 久久精品国产在热久久| 亚洲狠狠爱一区二区三区| 久久精品人人爽人人爽| 欧美一区二区网站| 欧美主播一区二区三区美女| 国产91精品免费| 久久国产婷婷国产香蕉| 亚洲午夜激情网页| 亚洲免费观看高清完整版在线 | 国产成人日日夜夜| 蜜臀a∨国产成人精品| 亚洲综合色婷婷| 国产精品高潮久久久久无| 久久综合久久综合亚洲| 欧美一卡二卡在线观看| 欧美亚洲一区二区在线观看| 成人黄色在线视频| 国产成人日日夜夜| 国产精品中文有码| 久久99日本精品| 日韩高清不卡一区二区| 午夜激情一区二区三区| 一级日本不卡的影视| 亚洲少妇中出一区| 国产精品乱码久久久久久| 久久久精品2019中文字幕之3| 日韩一区二区三区观看| 日韩一区二区免费高清| 欧美一区二区私人影院日本| 欧美精品自拍偷拍动漫精品| 欧美三级视频在线| 欧美日韩另类国产亚洲欧美一级| 欧美色中文字幕| 欧美亚洲国产一区在线观看网站| 色综合一区二区| 91久久精品一区二区二区| 色婷婷狠狠综合| 欧美日韩亚洲综合在线| 欧美精选一区二区| 欧美大片拔萝卜| 久久久久综合网| 国产精品免费aⅴ片在线观看| 自拍偷拍国产亚洲| 亚洲综合清纯丝袜自拍| 亚洲成人免费观看| 久久精品久久综合| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲h动漫在线| 亚洲.国产.中文慕字在线| 青青草91视频| 国产在线播精品第三| 成人性生交大片免费看中文 | 在线观看www91| 欧美精品日日鲁夜夜添| 精品久久五月天| 中文字幕第一区| 亚洲人成精品久久久久| 天天综合网 天天综合色| 国模娜娜一区二区三区| 99久久精品一区| 制服丝袜成人动漫| 久久精品亚洲乱码伦伦中文| 亚洲免费观看视频| 美国十次综合导航| 成人午夜电影小说| 精品福利一区二区三区 | 2023国产精品| 亚洲色图欧美偷拍| 麻豆精品久久久| 91首页免费视频| 欧美va在线播放| 亚洲乱码国产乱码精品精98午夜| 青娱乐精品视频| 成人黄动漫网站免费app| 欧美精品丝袜久久久中文字幕| 国产人伦精品一区二区| 亚洲不卡一区二区三区| 成人美女视频在线观看18| 5566中文字幕一区二区电影| 国产精品欧美久久久久无广告 | 亚洲另类色综合网站| 韩国欧美国产1区| 欧美性生活久久| 国产日本一区二区| 日韩激情在线观看| 色综合中文字幕国产| 26uuuu精品一区二区| 午夜视频在线观看一区二区三区| 国产成人在线看| 日韩一区二区电影在线| 一区二区三区美女视频| 国产精品一区二区黑丝| 欧美一级欧美一级在线播放| 亚洲天堂a在线| 成人综合婷婷国产精品久久免费| 欧美一区二区福利在线| 亚洲国产综合91精品麻豆| 成人av在线播放网址| 精品国产伦一区二区三区观看体验 | 欧日韩精品视频| 亚洲国产精品精华液ab| 美国毛片一区二区| 欧美丰满少妇xxxxx高潮对白| 亚洲视频中文字幕| 成人免费黄色在线| 久久蜜桃一区二区| 欧美a级一区二区| 欧美日韩成人一区二区| 一区二区三区中文在线观看| 99国产精品久久久| 中文字幕精品在线不卡| 国产精品888| 久久久www成人免费无遮挡大片 | 精品播放一区二区| 青青草国产成人av片免费| 欧美午夜宅男影院| 一区二区三区日韩精品| 色综合久久88色综合天天6| 亚洲私人黄色宅男| 99国内精品久久| 亚洲欧美一区二区久久| 色综合一区二区三区| 亚洲激情自拍偷拍| 在线观看成人小视频| 亚洲国产综合色| 欧美日韩国产天堂| 日韩国产精品久久| 日韩欧美国产综合| 国产一区 二区 三区一级| 久久久777精品电影网影网| 国产电影精品久久禁18| 国产精品福利av| 91麻豆swag| 亚洲国产精品天堂| 欧美理论在线播放| 九九精品视频在线看| 国产亚洲成av人在线观看导航| 欧美中文字幕一二三区视频| 一区二区三区日本| 91精品国产欧美一区二区成人 | 久久久综合精品| 国产91精品精华液一区二区三区| 国产精品视频免费看| 91麻豆福利精品推荐| 爽好久久久欧美精品| 欧美电影免费观看高清完整版在线| 久久福利视频一区二区| 亚洲国产精品99久久久久久久久| 波多野洁衣一区| 亚洲第一久久影院| 欧美α欧美αv大片| 成人午夜私人影院| 亚洲一区二区三区小说| 日韩欧美综合一区| 99精品久久只有精品| 五月婷婷久久丁香| 久久久久久久久99精品| 色婷婷精品久久二区二区蜜臂av|