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

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

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人精品福利| 在线看国产一区二区| 丝袜美腿亚洲一区二区图片| 亚洲色图欧洲色图婷婷| 国产精品免费久久| 亚洲欧美怡红院| 亚洲精品老司机| 亚洲香肠在线观看| 爽好久久久欧美精品| 开心九九激情九九欧美日韩精美视频电影| 香蕉成人伊视频在线观看| 欧美aa在线视频| 韩国精品在线观看| www.性欧美| 欧美三级乱人伦电影| 日韩精品资源二区在线| 国产欧美日韩卡一| 一片黄亚洲嫩模| 蜜桃视频免费观看一区| 国产一二精品视频| 成人午夜视频网站| 欧美日韩亚洲综合| 精品美女被调教视频大全网站| 久久久夜色精品亚洲| 亚洲欧美另类小说视频| 美腿丝袜在线亚洲一区| 丰满亚洲少妇av| 一本到三区不卡视频| 欧美一区二区不卡视频| 国产欧美一区二区精品性色| 亚洲综合在线五月| 国模娜娜一区二区三区| 一本大道久久a久久精二百| 337p亚洲精品色噜噜| 国产精品五月天| 日韩高清中文字幕一区| 成人免费高清在线| 日韩欧美成人午夜| 亚洲制服丝袜av| 大桥未久av一区二区三区中文| 欧美吞精做爰啪啪高潮| 国产视频911| 美国欧美日韩国产在线播放| 99国产欧美另类久久久精品| 日韩精品中文字幕在线不卡尤物| 亚洲女爱视频在线| 国产一区二区三区视频在线播放| 欧美在线不卡视频| 欧美激情一区三区| 国产美女视频一区| 91精品国产综合久久精品app| 国产精品久久午夜夜伦鲁鲁| 韩日精品视频一区| 91精品婷婷国产综合久久| 亚洲欧洲综合另类| 成人app下载| 精品电影一区二区三区| 亚洲第一主播视频| 欧美在线一二三| 亚洲激情在线激情| 91女神在线视频| 国产精品久久精品日日| 国产精品一级在线| 久久久av毛片精品| 国内精品久久久久影院一蜜桃| 欧美老肥妇做.爰bbww视频| 亚洲日本丝袜连裤袜办公室| 国产精品一区二区在线看| 精品免费日韩av| 久久精品av麻豆的观看方式| 日韩欧美电影在线| 久久国产夜色精品鲁鲁99| 日韩午夜激情视频| 精品午夜久久福利影院| 精品国产一区久久| 久久爱www久久做| 精品国产一区二区三区不卡| 麻豆免费精品视频| 久久婷婷国产综合精品青草| 国产成人夜色高潮福利影视| 国产精品五月天| 91美女视频网站| 亚洲午夜激情av| 欧美伊人精品成人久久综合97| 亚洲风情在线资源站| 欧美酷刑日本凌虐凌虐| 久久99国产精品久久99| 久久久久高清精品| 成人激情免费网站| 亚洲男人天堂av| 91精品国产一区二区三区蜜臀| 男人操女人的视频在线观看欧美| 欧美mv和日韩mv国产网站| 国产老妇另类xxxxx| 亚洲婷婷综合久久一本伊一区| 日本高清成人免费播放| 免费成人结看片| 欧美国产日韩一二三区| 欧美中文字幕一区二区三区亚洲| 日韩成人av影视| 国产亚洲精品bt天堂精选| 972aa.com艺术欧美| 亚洲va国产天堂va久久en| 精品国产免费人成电影在线观看四季| 极品美女销魂一区二区三区免费| 国产精品三级在线观看| 欧美日韩国产美| 国产呦萝稀缺另类资源| 亚洲欧美一区二区三区极速播放 | 久久成人麻豆午夜电影| 国产精品毛片高清在线完整版| 色偷偷久久人人79超碰人人澡| 麻豆精品一区二区av白丝在线| 国产精品国产三级国产普通话99 | 欧美日韩激情一区二区三区| 狠狠色丁香婷综合久久| 亚洲女人小视频在线观看| 欧美成人午夜电影| 欧美日韩日日夜夜| 丰满白嫩尤物一区二区| 日本一区中文字幕| 综合色天天鬼久久鬼色| 久久久久综合网| 在线综合+亚洲+欧美中文字幕| 99re8在线精品视频免费播放| 久久99国产精品久久| 亚洲动漫第一页| 日韩理论电影院| 中文文精品字幕一区二区| 欧美一级精品在线| 精品视频在线免费看| fc2成人免费人成在线观看播放| 美女视频黄免费的久久| 亚洲午夜激情网站| 亚洲主播在线播放| 亚洲一区视频在线| 亚洲欧美日韩国产手机在线| 国产精品嫩草影院av蜜臀| 久久九九全国免费| 精品国一区二区三区| 日韩欧美国产电影| 日韩无一区二区| 日韩一本二本av| 日韩一区二区三区电影在线观看| 欧美视频在线不卡| 欧美老肥妇做.爰bbww视频| 欧美色综合天天久久综合精品| 91美女片黄在线| 在线欧美日韩国产| 91成人免费网站| 欧美人与性动xxxx| 欧美一区二区视频观看视频| 欧美一区二区三区视频在线观看| 91麻豆精品久久久久蜜臀| 欧美一区二区三区的| 欧美sm美女调教| 久久久久久电影| 国产精品全国免费观看高清| 国产精品国产精品国产专区不片| 中文字幕乱码日本亚洲一区二区| 国产精品乱码久久久久久| 最新热久久免费视频| 亚洲自拍偷拍九九九| 日本不卡视频在线| 国产一区二区三区四区五区入口 | 亚洲欧洲av另类| 亚洲色图视频网站| 午夜精品一区二区三区三上悠亚| 午夜久久久久久电影| 狠狠色狠狠色综合| www.欧美精品一二区| 欧美无人高清视频在线观看| 日韩三级电影网址| 久久久亚洲高清| 亚洲欧美日韩国产另类专区| 日韩和欧美一区二区三区| 久久精品国产一区二区| 成人精品免费视频| 欧美系列一区二区| 久久你懂得1024| 一区二区三区中文在线观看| 日韩激情在线观看| 成人午夜伦理影院| 欧美丰满少妇xxxbbb| 国产丝袜欧美中文另类| 亚洲高清免费观看| 粉嫩av一区二区三区| 欧美日韩精品一区二区在线播放| 精品国产sm最大网站| 一区二区高清视频在线观看| 国产自产高清不卡| 欧美日韩精品综合在线| 中文字幕成人在线观看| 日本中文一区二区三区| 成人18视频日本| 欧美精品一区二区久久久| 亚洲综合免费观看高清完整版| 国产一本一道久久香蕉| 在线播放亚洲一区| 亚洲日本va午夜在线影院|