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

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

?? os_cpu_a.s

?? uC/OS-II操作系統在ADS-ARMulator上的移植。uC/OS-II就不用我介紹了
?? S
字號:
;********************************************************************************************************
;                                               uC/OS-II
;                                         The Real-Time Kernel
;
;                          (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
;                                          All Rights Reserved
;
;
;                                       80x86/80x88 Specific code
;                                          LARGE MEMORY MODEL
;
;                                           Borland C/C++ V4.51
;                                       (IBM/PC Compatible Target)
;
; File         : OS_CPU_A.ASM
; By           : Jean J. Labrosse
;********************************************************************************************************

			AREA |.text|, CODE, READONLY

;********************************************************************************************************
;                                    PUBLIC and EXTERNAL REFERENCES
;********************************************************************************************************

			EXPORT OSTickISR
			EXPORT OSStartHighRdy
			EXPORT OSCtxSw
			EXPORT OSIntCtxSw

			IMPORT OSIntEnter
			IMPORT OSIntExit
			IMPORT OSTimeTick
			IMPORT OSTaskSwHook

			IMPORT OSIntNesting
			IMPORT OSPrioHighRdy
			IMPORT OSPrioCur
			IMPORT OSRunning
			IMPORT OSTCBCur
			IMPORT OSTCBHighRdy


;*********************************************************************************************************
;                                          START MULTITASKING
;                                       void OSStartHighRdy(void)
;
; Note : OSStartHighRdy() MUST:
;           a) Call OSTaskSwHook() then,
;           b) Set OSRunning to TRUE,
;           c) Switch to the highest priority task.
;*********************************************************************************************************

OSStartHighRdy	FUNCTION

			MSR		CPSR_c, #0xd3					; Switch to SVC mode with IRQ and FIQ disabled
			BL		OSTaskSwHook					; Call user defined task switch hook

			LDR		r0, =OSRunning					; OSRunning = TRUE;
			MOV		r1, #1							;   (Indicates that multitasking has started)
			STRB	r1, [r0]

			LDR		r0, =OSTCBHighRdy				; sp = OSTCBHighRdy->OSTCBStkPtr
			LDR		r1, [r0]
			LDR		sp, [r1]

			LDR		r0, [sp], #4					; Load task's context
			MSR		SPSR_cxsf, r0
			LDMFD	sp!, {r0 - r12, lr, pc}^		; Run task

			ENDFUNC

;*********************************************************************************************************
;                                PERFORM A CONTEXT SWITCH (From task level)
;                                           void OSCtxSw(void)
;
; Note(s): 1) Upon entry,
;             OSTCBCur     points to the OS_TCB of the task to suspend
;             OSTCBHighRdy points to the OS_TCB of the task to resume
;
;*********************************************************************************************************

OSCtxSw		FUNCTION

			STR		lr, [sp, #-4]!					; Save current task's context
			STMFD	sp!, {r0 - r12, lr}
			MRS		r0, CPSR
			STR		r0, [sp, #-4]!

			LDR		r0, =OSTCBCur					; OSTCBCur->OSTCBStkPtr = sp
			LDR		r1, [r0]
			STR		sp, [r1]

			BL		OSTaskSwHook					; Call user defined task switch hook

			LDR		r0, =OSPrioHighRdy				; OSPrioCur = OSPrioHighRdy
			LDR		r1, =OSPrioCur
			LDRB	r2, [r0]
			STRB	r2, [r1]

			LDR		r0, =OSTCBHighRdy				; OSTCBCur = OSTCBHighRdy
			LDR		r1, =OSTCBCur
			LDR		r2, [r0]
			STR		r2, [r1]

			LDR		sp, [r2]						; sp = OSTCBHighRdy->OSTCBStkPtr

			LDR		r0, [sp], #4					; Load task's context
			MSR		SPSR_cxsf, r0
			LDMFD	sp!, {r0 - r12, lr, pc}^		; Run task

			ENDFUNC

;*********************************************************************************************************
;                                PERFORM A CONTEXT SWITCH (From an ISR)
;                                        void OSIntCtxSw(void)
;
; Note(s): 1) 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	FUNCTION

			BL		OSTaskSwHook					; Call user defined task switch hook

			LDR		r0, =OSPrioHighRdy				; OSPrioCur = OSPrioHighRdy
			LDR		r1, =OSPrioCur
			LDRB	r2, [r0]
			STRB	r2, [r1]

			LDR		r0, =OSTCBHighRdy				; OSTCBCur = OSTCBHighRdy
			LDR		r1, =OSTCBCur
			LDR		r2, [r0]
			STR		r2, [r1]

			LDR		sp, [r2]						; sp = OSTCBHighRdy->OSTCBStkPtr

			LDR		r0, [sp], #4					; Load task's context
			MSR		SPSR_cxsf, r0
			LDMFD	sp!, {r0 - r12, lr, pc}^		; Run task

			ENDFUNC

;*********************************************************************************************************
;                                            HANDLE TICK ISR
;
; Description: This function is called 199.99 times per second or, 11 times faster than the normal DOS
;              tick rate of 18.20648 Hz.  Thus every 11th time, the normal DOS tick handler is called.
;              This is called chaining.  10 times out of 11, however, the interrupt controller on the PC
;              must be cleared to allow for the next interrupt.
;
; Arguments  : none
;
; Returns    : none
;
;*********************************************************************************************************

OSTickISR	FUNCTION

			STMFD	sp!, {r0 - r2}					; Save working registers onto IRQ stack
			SUB		r2, lr, #4
			MOV		r0, sp
			MRS		r1, SPSR
			ADD		sp, sp, #12

			MSR		CPSR_c, #0xd3					; Switch to SVC mode

			STR		r2, [sp, #-4]!					; Save task's context onto task's stack
			STMFD	sp!, {r3 - r12, lr}
			LDMFD	r0!, {r3 - r5}					; Move task's r0-r2 from IRQ stack to task's stack
			STMFD	sp!, {r3 - r5}
			STR		r1, [sp, #-4]!					; Save task's CPSR

			BL		OSIntEnter						; Notify uC/OS-II of ISR

			LDR		r0, =OSIntNesting				; if (OSIntNesting == 1)
			LDRB	r1,[r0]
			CMP		r1, #1
			BNE		%F0
			LDR		r0, =OSTCBCur					;   OSTCBCur->OSTCBStkPtr = sp
			LDR		r1, [r0]
			STR		sp, [r1]
0
			LDR		r0, =0x0a80000c					; Clear interrupt source
			MOV		r1, #0
			STR		r1, [r0]

			BL		OSTimeTick						; Process system tick

			BL		OSIntExit						; Notify uC/OS-II of end of ISR

			LDR		r0, [sp], #4					; Load task's context
			MSR		SPSR_cxsf, r0
			LDMFD	sp!, {r0 - r12, lr, pc}^		; Run task

			ENDFUNC


            END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
六月婷婷色综合| 午夜亚洲福利老司机| 国产一区二区福利| 久久久国际精品| 成人免费毛片嘿嘿连载视频| 欧美国产1区2区| 99久久精品国产导航| 亚洲午夜久久久久中文字幕久| 欧美精品 国产精品| 日本亚洲免费观看| 久久精品亚洲麻豆av一区二区| 丁香一区二区三区| 亚洲综合免费观看高清完整版| 欧美日韩不卡在线| 国产一区二区电影| 成人欧美一区二区三区白人| 在线亚洲+欧美+日本专区| 男男视频亚洲欧美| 日韩一区有码在线| 欧美一区二区三区小说| 国产真实乱对白精彩久久| 亚洲欧美激情视频在线观看一区二区三区| 91麻豆免费看片| 喷水一区二区三区| 国产人伦精品一区二区| 欧美视频在线观看一区二区| 看片网站欧美日韩| 亚洲美腿欧美偷拍| 精品sm捆绑视频| 欧洲人成人精品| 久国产精品韩国三级视频| 亚洲欧美激情一区二区| 日韩精品一区二区在线观看| 97久久超碰国产精品| 蜜桃久久久久久久| 亚洲精品中文字幕在线观看| 精品播放一区二区| 欧美精品1区2区| av在线一区二区三区| 久久国产精品第一页| 亚洲免费毛片网站| 国产日产欧美一区| 日韩精品在线一区| 欧美日韩一卡二卡| 99国产精品久| 国产99精品在线观看| 美女网站在线免费欧美精品| 亚洲精品一二三四区| 国产拍揄自揄精品视频麻豆| 日韩亚洲欧美中文三级| 精品视频在线免费| 99久久综合色| 成人免费看视频| 国产在线精品一区二区不卡了| 同产精品九九九| 亚洲国产视频直播| 《视频一区视频二区| 久久久精品tv| 久久久国产午夜精品| 日韩三级中文字幕| 欧美精品少妇一区二区三区| 色素色在线综合| 91亚洲精品一区二区乱码| 国产九色sp调教91| 韩国视频一区二区| 美女网站一区二区| 麻豆国产一区二区| 免费成人av在线| 蜜桃视频第一区免费观看| 三级欧美在线一区| 午夜精品影院在线观看| 亚洲成人黄色影院| 亚洲成av人片在线观看| 亚洲v中文字幕| 午夜私人影院久久久久| 亚洲mv大片欧洲mv大片精品| 亚洲一区影音先锋| 亚洲国产精品一区二区www| 一区二区三国产精华液| 亚洲午夜免费视频| 首页国产丝袜综合| 日本免费在线视频不卡一不卡二| 性做久久久久久久免费看| 午夜免费欧美电影| 日韩激情中文字幕| 麻豆成人久久精品二区三区红| 日本亚洲天堂网| 国产一区二区在线免费观看| 国产麻豆视频一区| 北条麻妃国产九九精品视频| 91亚洲精华国产精华精华液| 色综合久久99| 欧美酷刑日本凌虐凌虐| 日韩欧美一二三| 久久精品人人爽人人爽| 中文字幕日韩一区二区| 亚洲图片欧美综合| 美女视频黄久久| 高清av一区二区| 在线看不卡av| 欧美一级精品大片| 国产欧美一区二区三区在线看蜜臀| 欧美激情一二三区| 亚洲一区二区三区免费视频| 青青草伊人久久| 成人黄色在线看| 欧美色窝79yyyycom| 日韩欧美的一区二区| 欧美韩国日本一区| 亚洲成人免费在线观看| 韩国三级中文字幕hd久久精品| 9i在线看片成人免费| 69p69国产精品| 国产欧美日产一区| 亚洲观看高清完整版在线观看| 九一久久久久久| 91麻豆精品秘密| 91精品国产免费| 中文字幕亚洲在| 美女爽到高潮91| 色欧美片视频在线观看 | 精品国产成人在线影院| 中文无字幕一区二区三区| 亚洲一区视频在线| 国产精品一区二区黑丝| 欧美日韩mp4| 国产精品久久久久久久久免费樱桃 | 国产精品一二三在| 色呦呦国产精品| 亚洲精品在线观| 亚洲不卡av一区二区三区| 国产不卡在线视频| 欧美一区欧美二区| 亚洲男人的天堂av| 国产成都精品91一区二区三| 欧美日本国产一区| 亚洲欧洲日产国码二区| 精品一区二区三区视频在线观看 | 亚洲日本青草视频在线怡红院| 免费欧美高清视频| 在线观看免费视频综合| 国产精品丝袜久久久久久app| 免费在线观看精品| 欧美日韩一区 二区 三区 久久精品| 欧美激情一区不卡| 国产一区二区三区久久久| 日韩一级大片在线| 天堂成人国产精品一区| 欧美性色综合网| 亚洲丝袜制服诱惑| 成人开心网精品视频| 久久精品夜色噜噜亚洲a∨| 老司机精品视频导航| 欧美一区二区三区视频免费 | 亚洲国产激情av| 狠狠狠色丁香婷婷综合久久五月| 欧美精选午夜久久久乱码6080| 综合久久久久久久| av高清久久久| 国产精品福利影院| 不卡区在线中文字幕| 国产精品久久久一本精品| 欧美私人免费视频| 亚洲精品一区二区三区99| 日韩国产精品大片| 欧美男生操女生| 丝袜美腿亚洲色图| 欧美一级日韩免费不卡| 日韩在线a电影| 欧美一区二区在线免费观看| 天天综合日日夜夜精品| 8x福利精品第一导航| 亚洲福利视频一区二区| 欧美日韩黄色影视| 亚洲第一av色| 日韩一区二区三区免费看| 美女视频免费一区| 精品成人免费观看| 国产成人自拍高清视频在线免费播放| 久久综合久久综合久久综合| 国产精品1024| 亚洲视频在线观看一区| 日本黄色一区二区| 成人欧美一区二区三区| 一本色道久久加勒比精品| 亚洲国产毛片aaaaa无费看| 91麻豆精品国产| 国产一区二区在线观看视频| 亚洲国产电影在线观看| 99国产欧美另类久久久精品| 一区二区三区在线免费视频| 欧美精品久久99| 狠狠狠色丁香婷婷综合久久五月| 国产香蕉久久精品综合网| 成人国产精品免费观看视频| 一级日本不卡的影视| 制服视频三区第一页精品| 国产高清亚洲一区| 一区二区三区日韩在线观看| 制服丝袜亚洲播放|