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

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

?? os_cpu_a.s

?? demo net drive for linux
?? S
?? 第 1 頁 / 共 2 頁
字號:
;
; 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
;*********************************************************************************************************

        RSEG CODE:CODE:NOROOT(2)
        CODE32

OSIntCtxSw
        BL      OSTaskSwHook            ; OSTaskSwHook();

        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
        LDR     R4,  [SP], #4           ;    pop new task's CPSR
        MSR     CPSR_cxsf, R4
        LDR     R0,  [SP], #4           ;    pop new task's context
        LDR     R1,  [SP], #4
        LDR     R2,  [SP], #4
        LDR     R3,  [SP], #4
        LDR     R4,  [SP], #4
        LDR     R5,  [SP], #4
        LDR     R6,  [SP], #4
        LDR     R7,  [SP], #4
        LDR     R8,  [SP], #4
        LDR     R9,  [SP], #4
        LDR     R10, [SP], #4
        LDR     R11, [SP], #4
        LDR     R12, [SP], #4
        LDR     LR,  [SP], #4
        LDR     PC,  [SP], #4

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

        RSEG CODE:CODE:NOROOT(2)
        CODE32

OS_CPU_IRQ_ISR
                                        
        STR     R3,  [SP, #-4]!                ; PUSH WORKING REGISTERS ONTO IRQ STACK
        STR     R2,  [SP, #-4]!
        STR     R1,  [SP, #-4]!
        
        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 | SYS32_MODE) ; Change to SYS mode

                                               ; SAVE TASK'S CONTEXT ONTO TASK'S STACK
        STR     R2,  [SP, #-4]!                ;    Push task's Return PC 
        STR     LR,  [SP, #-4]!                ;    Push task's LR
        STR     R12, [SP, #-4]!                ;    Push task's R12-R4
        STR     R11, [SP, #-4]!
        STR     R10, [SP, #-4]!
        STR     R9,  [SP, #-4]!
        STR     R8,  [SP, #-4]!
        STR     R7,  [SP, #-4]!
        STR     R6,  [SP, #-4]!
        STR     R5,  [SP, #-4]!
        STR     R4,  [SP, #-4]!
        
        LDR     R4,  [R1], #4                  ;    Move task's R1-R3 from IRQ stack to SYS stack
        LDR     R5,  [R1], #4        
        LDR     R6,  [R1], #4
        STR     R6,  [SP, #-4]!
        STR     R5,  [SP, #-4]!
        STR     R4,  [SP, #-4]!
        
        STR     R0,  [SP, #-4]!                ;    Push task's R0    onto task's stack
        STR     R3,  [SP, #-4]!                ;    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)
        
        BL      OS_CPU_IRQ_ISR_Handler         ; OS_CPU_IRQ_ISR_Handler();
        
        MSR     CPSR_c, #(NO_INT | SYS32_MODE) ; Change to SYS mode
        
        BL      OSIntExit                     ; OSIntExit();
        
                                              ; RESTORE TASK'S CONTEXT and RETURN TO TASK
        LDR     R4,  [SP], #4                 ;    pop new task's CPSR
        MSR     CPSR_cxsf, R4
        LDR     R0,  [SP], #4                 ;    pop new task's context
        LDR     R1,  [SP], #4
        LDR     R2,  [SP], #4
        LDR     R3,  [SP], #4
        LDR     R4,  [SP], #4
        LDR     R5,  [SP], #4
        LDR     R6,  [SP], #4
        LDR     R7,  [SP], #4
        LDR     R8,  [SP], #4
        LDR     R9,  [SP], #4
        LDR     R10, [SP], #4
        LDR     R11, [SP], #4
        LDR     R12, [SP], #4
        LDR     LR,  [SP], #4
        LDR     PC,  [SP], #4

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

        RSEG CODE:CODE:NOROOT(2)
        CODE32

OS_CPU_FIQ_ISR
                                        
        STMFD   SP!,{R1-R3}                   ; PUSH WORKING REGISTERS ONTO IRQ STACK
        
        MOV     R1,SP                         ; Save   IRQ 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 | SYS32_MODE) ; Change to SYS mode

                                              ; SAVE TASK'S CONTEXT ONTO TASK'S STACK
        STMFD   SP!,{R2}                      ;    Push task's Return PC 
        STMFD   SP!,{R4-R12,LR}               ;    Push task's LR,R12-R4
        
        LDMFD   R1!,{R4-R6}                   ;    Move task's R1-R3 from IRQ stack to SYS 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_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)
        
        BL      OS_CPU_FIQ_ISR_Handler        ; OS_CPU_FIQ_ISR_Handler();
        
        MSR     CPSR_c,#(NO_INT | SYS32_MODE) ; Change to SYS mode
        
        BL      OSIntExit                     ; OSIntExit();
        
                                              ; RESTORE TASK'S CONTEXT and RETURN TO TASK
        LDMFD   SP!,{R4}                      ; pop new task's CPSR
        MSR     CPSR_cxsf,r4
        LDMFD   SP!,{R0-R12,LR,PC}            ; pop new task's R0-R12,LR & PC

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

        DATA
             
??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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品中文字幕日韩精品 | 亚洲三级在线看| 欧美日韩一区小说| 国产成人av电影在线播放| 亚洲成人午夜电影| 国产精品超碰97尤物18| 日韩情涩欧美日韩视频| 91丨porny丨户外露出| 久久精品久久99精品久久| 亚洲一区二区在线视频| 国产欧美日韩精品a在线观看| 欧美日韩不卡一区| 91女神在线视频| 国产91清纯白嫩初高中在线观看| 日韩avvvv在线播放| 樱花影视一区二区| 日韩一区中文字幕| 亚洲电影在线播放| 中文字幕制服丝袜成人av| 日韩精品一区二区三区四区 | 五月天婷婷综合| 亚洲欧美日韩一区二区 | 久久九九全国免费| 欧美成人午夜电影| 91精品国产综合久久香蕉麻豆| 99久久婷婷国产综合精品电影| 国产精品99久久久久久宅男| 精品一区二区三区免费毛片爱| 日本美女一区二区三区视频| 天堂久久久久va久久久久| 亚洲夂夂婷婷色拍ww47| 一区二区免费在线播放| 亚洲色图丝袜美腿| 亚洲三级在线看| 久久国产生活片100| 日本欧美一区二区三区| 丝袜美腿一区二区三区| 日本成人在线看| 日本美女一区二区三区| 久久99精品久久久久久国产越南| 丝袜国产日韩另类美女| 日本最新不卡在线| 久久99精品久久久久婷婷| 国产呦萝稀缺另类资源| 国产剧情一区二区| 国产成人精品免费一区二区| 成人永久免费视频| 99久久综合国产精品| 91网站在线播放| 欧美日韩在线亚洲一区蜜芽| 欧美久久久久久久久| 91精品国产美女浴室洗澡无遮挡| 欧美一区二区三区思思人 | 亚洲资源在线观看| 亚洲专区一二三| 一本在线高清不卡dvd| 色婷婷综合中文久久一本| 欧美在线观看你懂的| 欧美日韩国产a| 2023国产一二三区日本精品2022| 国产日韩欧美电影| 一区二区三区在线免费视频| 亚洲成av人影院在线观看网| 全部av―极品视觉盛宴亚洲| 国产一二三精品| 99精品国产99久久久久久白柏| 在线精品视频免费播放| 欧美一区二区三区爱爱| 国产婷婷色一区二区三区在线| 国产精品视频第一区| 一区二区三区在线免费播放| 日本不卡123| 国产99久久久国产精品免费看 | 欧美三级电影在线观看| 日韩视频不卡中文| 国产精品久久久久久一区二区三区| 成人动漫一区二区| 欧美三级在线看| 久久免费美女视频| 亚洲一区自拍偷拍| 国产在线精品一区二区不卡了 | 欧美日韩一级二级三级| 久久久国产精品不卡| 亚洲综合成人网| 国产露脸91国语对白| 欧美三区在线观看| 中文字幕精品在线不卡| 视频一区中文字幕| www.爱久久.com| 欧美一二三四区在线| 亚洲欧美韩国综合色| 精品一区二区三区在线播放 | 91丨porny丨蝌蚪视频| 欧美一二三区在线| 亚洲同性gay激情无套| 国内精品不卡在线| 亚洲丝袜精品丝袜在线| 久久精品国产亚洲高清剧情介绍| 波多野洁衣一区| 日韩精品一区二区三区三区免费| **网站欧美大片在线观看| 国模少妇一区二区三区| 欧美日韩一区二区三区在线看| 精品99999| 亚洲电影第三页| 一本久道中文字幕精品亚洲嫩| 久久久美女毛片| 日韩电影在线一区二区| 在线精品视频小说1| 中文字幕一区免费在线观看| 国产乱人伦精品一区二区在线观看| 欧美视频在线不卡| 亚洲素人一区二区| av爱爱亚洲一区| 国产午夜一区二区三区| 久久精品国产一区二区三| 欧美肥妇free| 亚洲成av人在线观看| 欧美午夜寂寞影院| 亚洲精品日日夜夜| 国产亚洲成av人在线观看导航| 日本最新不卡在线| 91精品国产综合久久久久久久| 亚洲影院久久精品| 欧美午夜精品久久久久久超碰| 亚洲美女一区二区三区| 成人精品鲁一区一区二区| 国产片一区二区| 国产精品综合一区二区三区| 精品久久久久一区二区国产| 日本不卡一二三| 日韩视频一区二区在线观看| 图片区小说区国产精品视频| 欧美三级一区二区| 日韩av在线免费观看不卡| 欧美高清视频不卡网| 日韩精品三区四区| 日韩视频一区在线观看| 国内精品国产成人国产三级粉色| 精品欧美黑人一区二区三区| 久久成人久久鬼色| 久久天天做天天爱综合色| 国内一区二区在线| 国产三级一区二区| 国产成人高清在线| 国产精品久久福利| 亚洲精品一区二区三区蜜桃下载| 久久se精品一区精品二区| 久久夜色精品国产噜噜av | 色综合久久久久综合体桃花网| 亚洲精选一二三| 欧美日韩精品一区二区天天拍小说 | 色综合久久中文综合久久97| 亚洲国产日韩在线一区模特| 欧美日韩久久久一区| 久久激情五月婷婷| 国产网红主播福利一区二区| 91香蕉视频黄| 天堂蜜桃一区二区三区| 久久亚洲精华国产精华液| 成人av动漫在线| 日日摸夜夜添夜夜添精品视频| 日韩免费看网站| youjizz国产精品| 亚洲国产精品一区二区久久| 17c精品麻豆一区二区免费| 色婷婷精品久久二区二区蜜臂av| 亚洲一级电影视频| 精品女同一区二区| 91丝袜高跟美女视频| 日日夜夜免费精品| 国产精品嫩草99a| 欧美日韩成人综合| 盗摄精品av一区二区三区| 亚洲毛片av在线| 日韩精品一区二| a在线播放不卡| 蜜桃视频在线观看一区二区| 国产精品视频观看| 欧美精品精品一区| 大陆成人av片| 天天综合天天综合色| 国产欧美日本一区二区三区| 欧美午夜精品理论片a级按摩| 激情综合网激情| 依依成人综合视频| 久久久久久久久久久久久女国产乱 | 性欧美疯狂xxxxbbbb| 国产精品乱人伦| 日韩一区二区免费电影| 91丨九色丨蝌蚪富婆spa| 欧洲精品在线观看| 国产成人综合亚洲91猫咪| 天堂av在线一区| 亚洲人成亚洲人成在线观看图片 | 亚洲成人一二三| 亚洲情趣在线观看| 久久久五月婷婷| 51久久夜色精品国产麻豆| 在线观看免费亚洲|