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

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

?? os_cpu_a.s

?? uCOS源碼
?? S
字號:
        .file   "os_cpu_a.S".text    @-------------------------------------------------------------------------        .align  2        .global OSStartHighRdy        .type    OSStartHighRdy,functionOSStartHighRdy:	@ // 1) 調用 用戶編寫的 hook 函數        BL 	OSTaskSwHook             @ Call user defined task switch hook	@ // 2) 設置 OSRunning 變量為 true , 表示多任務調度開始        LDR 	r4,=OSRunning           @ Indicate that multitasking has started        MOV 	r5, #1        STRB 	r5, [r4]	@ // 3) 獲得最高優先級任務的 TCB 塊指針,得到該任務的堆棧,	@ //    從堆棧中依次恢復出 SPSR, CPSR, r0-r12, lr, pc        LDR 	r4, =OSTCBHighRdy        @ Get highest priority task TCB address        LDR 	r4, [r4]                 @ get stack pointer        LDR 	sp, [r4]                 @ switch to the new stack        LDMFD 	sp!, {r4}              @ pop new task s spsr        MSR 	SPSR, r4        LDMFD 	sp!, {r4}              @ pop new task s psr        MSR 	CPSR, r4        LDMFD 	sp!, {r0-r12,lr,pc}    @ pop new task s r0-r12,lr & pc 		@ End of OSStartHighRdy    @-----------------------------------------------------------------------        .align  2        .global OSCtxSw        .type    OSCtxSw,functionOSCtxSw:/*	Perform a context switch.	On entry, OSTCBCur and OSPrioCur hold the current TCB and priority	and OSTCBHighRdy and OSPrioHighRdy contain the same for the task	to be switched to.	The following code assumes that the virtual memory is directly	mapped into  physical memory. If this is not true, the cache must 	be flushed at context switch to avoid address aliasing.*/	@ // 1) PUSH ALL 將當前執行任務的 CPU 現場保存到 該任務的堆棧中	@ //    依次將 pc, lr, r12-r0, CPSR, SPSR 推入 堆棧 sp 中        STMFD 	sp!, {lr}              @ push pc (lr should be pushed in place of PC)        STMFD 	sp!, {r0-r12,lr}       @ push lr & register file        MRS 	r4, cpsr        STMFD 	sp!, {r4}              @ push current psr        MRS 	r4, spsr        STMFD 	sp!, {r4}              @ push current spsr	@ // 2) 設置當前優先級為最高任務的優先級 OSPrioHighRdy        @ OSPrioCur = OSPrioHighRdy        LDR 	r4, =OSPrioCur        LDR 	r5, =OSPrioHighRdy        LDRB 	r6, [r5]        STRB 	r6, [r4]                @ // 3) 獲得當前執行任務的 TCB 塊指針        @ Get current task TCB address        LDR 	r4, =OSTCBCur        LDR 	r5, [r4]        STR 	sp, [r5]                 @ store sp in preempted tasks s TCB	@ // 4) 調用用戶定義的 hook 函數        BL 	OSTaskSwHook             @ call Task Switch Hook	@ // 5) 獲得最高優先級任務的 TCB 塊指針, 并且將它的堆棧指針復制到 CPU 的 sp 中, 改變當前堆棧        @ Get highest priority task TCB address        LDR 	r6, =OSTCBHighRdy        LDR 	r6, [r6]        LDR 	sp, [r6]                 @ get new task s stack pointer	@ // 6) 將最高優先級任務的 TCB 塊指針 復制到 當前任務 TCB 指針中        @ OSTCBCur = OSTCBHighRdy        STR 	r6, [r4]                 @ set new current task TCB address	@ // 7) 將堆棧中保存的最高優先級任務的 CPU 現場恢復出來	@ //    一次從堆棧中彈出 SPSR, CPSR, r0-r12, lr, pc        LDMFD 	sp!, {r4}              @ pop new task s spsr        MSR 	SPSR, r4        LDMFD 	sp!, {r4}              @ pop new task s psr        MSR 	CPSR, r4        LDMFD 	sp!, {r0-r12,lr,pc}    @ pop new task s r0-r12,lr & pc    @-----------------------------------------------------------------------        .align  2        .global OSIntCtxSw        .type    OSIntCtxSw,functionOSIntCtxSw:		@ // 1) 這個就是會被 OSIntExit() 調用的 OSIntCtxSw() 函數入口	@ //    在這里的處理僅僅是設置了一個標志位 OSIntCtxSwFlag = True        @ OSIntCtxSwFlag = True        LDR 	r0, =OSIntCtxSwFlag        MOV 	r1, #1        STR 	r1, [r0]                @ // 2) 函數返回        MOV 	pc, lr	 .align  2        .global  OSTickISR        .type    OSTickISR,functionOSTickISR:	@ // 1) PUSH ALL 將當前執行任務的 CPU 現場保存到 該任務的堆棧中	STMDB	sp!, {r0-r11, lr}		@ // 2) 調用系統中斷進入和退出的 hook 函數	@BL	OSIntEnter	BL 	OSTimeTick	BL	do_IRQ	@BL	OSIntExit		@ // 3) 從 OSIntExit() 中退出時,如果需要進行中斷級的上下文切換,則系統會調用 OSIntCtxSw	@ //	其結果就是 此時的標志位 OSIntCtxSwFlag == True	LDR	r0, =OSIntCtxSwFlag	LDR 	r1, [r0]	CMP	r1, #1	BEQ	_IntCtxSw	@ // 如果此時標志位被設置,則跳轉到 _IntCtxSw 執行中斷級的上下文切換		@ // 4) 如果此時 標志位 沒有被設置, 則不需要進行調度,直接從中斷中返回原來的任務	LDMFD	sp!, {r0-r11, lr}	SUBS	pc, lr, #4	_IntCtxSw:	@ // 3.0) 改變處理器模式, 	MRS	lr, SPSR	AND	lr, lr, #0xFFFFFFE0	ORR	lr, lr, #0x13	MSR	CPSR, lr		@ // 3.1) 先恢復堆棧指針 sp 到初始位置:即 1) PUSH ALL 以前的值,同時恢復原來任務的上下文	LDMFD	sp!, {r0-r11, lr}	SUB	lr, lr, #4	@ // 3.2) 執行跳轉到 任務上下文的切換 代碼		B	OSCtxSw	    @----------------------------------------------------------------------        .align  2        .global ARMDisableInt        .type    ARMDisableInt,functionARMDisableInt:		@ // 1) 保存 CPSR 到當前任務的堆棧 => push CPSR	MRS	r0, CPSR	STMFD	sp!, {r0}			@ push current PSR		@ // 2) 設置 CPSR 的中斷屏蔽位 	@ORR	r0, r0, #0xC0		@ mask IRQ Int s	ORR	r0, r0, #0x80		@ mask IRQ Int s		@ // 3) 屏蔽中斷	MSR	CPSR, r0			@ disable IRQ Int s		@ // 4) 返回	MOV	pc, lr    @------------------------------------------------------------------------        .align  2        .global ARMEnableInt        .type    ARMEnableInt,functionARMEnableInt:		@ // 1) 從堆棧中彈出 CPSR => pop CPSR 到 r0	LDMFD	sp!, {r0}			@ pop current PSR		@ // 2) 用 r0 來恢復 CPSR	MSR	CPSR, r0			@ restore original CPSR		@ // 3) 返回	MOV	pc, lr    @------------------------------------------------------------------------    @-------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久福利视频一区二区| 亚洲精品在线观看网站| 亚洲欧洲综合另类在线| 国产成人午夜精品5599| 久久这里只有精品6| 久久国产精品一区二区| 91亚洲永久精品| 中文字幕一区二区三区四区 | 色屁屁一区二区| 欧美国产日韩精品免费观看| 韩国成人精品a∨在线观看| 日韩精品在线一区二区| 国产尤物一区二区| 国产色产综合产在线视频| 国产高清不卡二三区| 欧美mv和日韩mv的网站| 狠狠狠色丁香婷婷综合激情| 久久久亚洲综合| 国产91露脸合集magnet| 国产精品入口麻豆原神| 波多野结衣亚洲一区| 自拍偷自拍亚洲精品播放| 欧美日韩国产免费| 9久草视频在线视频精品| 亚洲午夜激情av| 久久一日本道色综合| 99re这里都是精品| 日韩福利视频导航| 国产精品久久看| 欧美一级爆毛片| 91麻豆自制传媒国产之光| 日本午夜一本久久久综合| 国产精品久久久久久福利一牛影视 | 欧美久久久久久久久久| 极品美女销魂一区二区三区免费| 国产精品黄色在线观看| 日韩区在线观看| 91视视频在线观看入口直接观看www | 日本不卡在线视频| 国产精品免费看片| 欧美xingq一区二区| 欧美在线啊v一区| 成人免费看黄yyy456| 青青草国产精品97视觉盛宴| 亚洲欧美日韩国产综合在线| 2021中文字幕一区亚洲| 欧美日韩在线播放三区四区| 成人一区二区三区中文字幕| 麻豆精品在线看| 亚洲在线观看免费| 国产精品另类一区| 欧美成人精品1314www| 欧美日韩免费一区二区三区视频 | 99精品国产热久久91蜜凸| 蜜臀精品久久久久久蜜臀 | 91九色02白丝porn| 国产精品99精品久久免费| 久久精品国产在热久久| 日日夜夜精品免费视频| 一区二区三区中文在线| 亚洲欧美中日韩| 国产欧美一区二区精品秋霞影院 | 婷婷开心久久网| 亚洲欧美激情视频在线观看一区二区三区 | 欧美一区二区三区喷汁尤物| 色综合久久中文综合久久牛| 不卡一卡二卡三乱码免费网站| 国产在线精品一区二区三区不卡| 日韩国产精品久久久| 婷婷丁香激情综合| 亚洲午夜在线视频| 亚洲日本护士毛茸茸| 中文字幕综合网| 亚洲欧美一区二区三区久本道91| 国产精品青草综合久久久久99| 久久久久国产精品人| 久久综合九色综合欧美就去吻| 精品久久久影院| 久久麻豆一区二区| 国产欧美日韩精品a在线观看| 欧美韩日一区二区三区四区| 久久久www免费人成精品| 国产亚洲一本大道中文在线| 久久久久久久久久久电影| 久久久精品免费网站| 国产日韩欧美精品综合| 国产精品污www在线观看| 亚洲欧洲成人自拍| 亚洲午夜精品网| 蜜桃视频在线观看一区| 精品亚洲国内自在自线福利| 国产呦精品一区二区三区网站| 成人一区二区三区视频| av在线不卡电影| 欧美日韩你懂的| 欧美不卡视频一区| 亚洲国产精品t66y| 亚洲一区二区在线播放相泽| 日韩和欧美的一区| 韩国女主播一区二区三区| 丰满亚洲少妇av| 欧美亚洲另类激情小说| 欧美精三区欧美精三区| 久久精品一区二区三区不卡| 亚洲视频一区在线观看| 亚洲va天堂va国产va久| 国模娜娜一区二区三区| bt7086福利一区国产| 欧美色图第一页| 精品欧美一区二区三区精品久久| 亚洲国产精品国自产拍av| 亚洲一区二区三区在线| 久久成人免费网| 成人a级免费电影| 欧美日韩国产一区| 精品福利二区三区| 一区二区三区欧美在线观看| 欧美图片一区二区三区| 精品久久国产字幕高潮| 亚洲柠檬福利资源导航| 日本va欧美va瓶| 97se亚洲国产综合自在线观| 日韩欧美亚洲一区二区| 最新不卡av在线| 经典三级视频一区| 欧美系列一区二区| 国产精品情趣视频| 免费美女久久99| 91色porny蝌蚪| 久久久久久久久久电影| 五月激情综合婷婷| 懂色av一区二区三区免费看| 在线播放欧美女士性生活| 一区在线观看视频| 国产中文字幕一区| 6080yy午夜一二三区久久| 国产精品国产馆在线真实露脸| 日av在线不卡| 欧美系列一区二区| 亚洲精品中文字幕乱码三区| 久久99精品久久久久久| 欧美二区三区的天堂| 最新国产成人在线观看| 国产精品99久久久久久久女警| 在线成人午夜影院| 亚洲国产婷婷综合在线精品| 99r精品视频| 国产精品色哟哟| 国产精品99久久久久久久vr| 精品久久久久久久人人人人传媒 | 中文字幕不卡在线| 精品一区二区免费看| 9191成人精品久久| 亚洲成年人影院| 日本高清不卡在线观看| 中文字幕一区不卡| 成人a免费在线看| 中文一区在线播放| 国产v日产∨综合v精品视频| 26uuu国产一区二区三区| 免费一区二区视频| 日韩欧美一区二区在线视频| 亚洲成人免费在线| 欧美日韩国产综合视频在线观看| 亚洲人成小说网站色在线| 99久久久无码国产精品| 一区视频在线播放| 91免费视频网| 亚洲精选在线视频| 欧美三电影在线| 午夜视频一区二区| 欧美一区二区三区四区在线观看 | 久久久精品欧美丰满| 国产高清成人在线| 中文字幕不卡在线| 97国产一区二区| 亚洲伊人色欲综合网| 欧美精品丝袜中出| 蜜臀久久99精品久久久久久9 | 91麻豆精品国产91久久久久| 午夜亚洲福利老司机| 日韩一区二区三区在线观看| 国内久久精品视频| 国产精品人妖ts系列视频| 久久久不卡网国产精品一区| 国产成人精品网址| 亚洲视频电影在线| 欧美三级在线视频| 久久电影国产免费久久电影| 国产丝袜美腿一区二区三区| 99国内精品久久| 无吗不卡中文字幕| 精品福利av导航| youjizz久久| 日韩中文字幕av电影| 2020国产精品| 色婷婷久久久亚洲一区二区三区| 午夜电影一区二区三区| 亚洲精品在线免费播放| 91免费观看视频|