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

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

?? os_cpu_a.s

?? 一個輕量tcpip協議在移植在ucOS2系統上運行
?? S
字號:
;-+---+---++-+--+-++-+++--++--+++
;* File: os_cpu_a.s
;*            (c) Copyright ARM Limited 1999.  All rights reserved. 
;*                               ARM Specific code

;	Functions defined in this module:
;
;	void ARMDisableInt(void)	/* disable interrupts when in SVC */
;	void ARMEnableInt(void)		/* enable interrupts when in SVC */
;	void OSStartHighRdy(void)	/* start highest priority task */
;	OS_TASK_SW			/* Context Switch*/
;	ARMDisableINT & ARMEnableINT
;	OSIntCtxSw



	AREA	OS_CPU_A, CODE, READONLY

	; External symbols we need the addresses of
			IMPORT	OSTCBCur
addr_OSTCBCur		DCD	OSTCBCur
			IMPORT	OSTCBHighRdy
addr_OSTCBHighRdy	DCD	OSTCBHighRdy
			IMPORT	OSPrioCur
addr_OSPrioCur		DCD	OSPrioCur
			IMPORT	OSPrioHighRdy
addr_OSPrioHighRdy	DCD	OSPrioHighRdy


;-+---+---++-+--+-++-+++--++--+++
	EXPORT	OSStartHighRdy
;示例
;SP=OSTCBHighRdy->OSTCBStkPtr
;OSTCBCur=OSTCBHighRdy
;彈出現場
	
OSStartHighRdy
	LDR	r4, addr_OSTCBCur	; Get current task TCB address
	LDR	r5, addr_OSTCBHighRdy	; Get highest priority task TCB address

	LDR	r5, [r5]		; get stack pointer
	LDR	sp, [r5]		; switch to the new stack
	;SP=OSTCBHighRdy->OSTCBStkPtr
	STR	r5, [r4]		; set new current task TCB address
	;OSTCBCur=OSTCBHighRdy

	LDMFD	sp!, {r4}		; YYY
	MSR	CPSR_cxsf, r4		
	LDMFD	sp!, {r4}		; get new state from top of the stack
	MSR	CPSR_cxsf, r4		; CPSR should be SYS32Mode
	LDMFD	sp!, {r0-r12, lr, pc }	; start the new task



;-+---+---++-+--+-++-+++--++--+++
	EXPORT	OS_TASK_SW
;示例
;現場壓棧
;OSPrioCur = OSPrioHighRdy
;OSTCBCur->OSTCBStkPtr=SP	保存SP到當前任務控制塊
;SP=OSTCBHighRdy->OSTCBStkPtr
;OSTCBCur=OSTCBHighRdy
;彈出現場

OS_TASK_SW
	STMFD	sp!, {lr}		; save pc
	STMFD	sp!, {lr}		; save lr
	;分析:OS_TASK_SW是個函數,在任務間接的調用它時會在最后失去CPU,再次
	;獲得CPU時,其恰好在OS_TASK_SW調用完畢后的那個位置,因此,lr被放入pc
	;在棧中的位置;此外,lr放入lr在棧中的位置也是無關緊要的,因為,子函數
	;返回時的lr是無意義的。
	STMFD	sp!, {r0-r12}	; save register file and ret address
	MRS	r4, CPSR
	STMFD	sp!, {r4}		; save current PSR
	;MRS	r4, SPSR		; YYY+ 這里屏蔽掉是因為任務運行的
					;模式是SYS,沒有SPSR,棧中的CPSR與SPSR相同
	STMFD	sp!, {r4}		; YYY+ save SPSR


	LDR	r4, addr_OSPrioCur
	LDR	r5, addr_OSPrioHighRdy
	LDRB	r6, [r5]
	STRB	r6, [r4]
	; OSPrioCur = OSPrioHighRdy
		
	; Get current task TCB address
	LDR	r4, addr_OSTCBCur
	LDR	r5, [r4]
	STR	sp, [r5]		; store sp in preempted tasks's TCB
	;OSTCBCur->OSTCBStkPtr=SP	保存SP到當前任務控制塊
	
	; Get highest priority task TCB address
	LDR	r6, addr_OSTCBHighRdy
	LDR	r6, [r6]
	LDR	sp, [r6]		; get new task's stack pointer
	;SP=OSTCBHighRdy->OSTCBStkPtr	更新SP為即將運行的任務
	
	STR	r6, [r4]		; set new current task TCB address
	; OSTCBCur = OSTCBHighRdy
	
	LDMFD	sp!, {r4}		; YYY+
	;MSR	SPSR_cxsf, r4		; YYY+運行在sys模式下,無需SPSR的更新
	LDMFD	sp!, {r4}		; YYY+
	MSR	CPSR_cxsf, r4		; YYY+
	LDMFD	sp!, {r0-r12, lr, pc}	; YYY+
	;現場恢復完畢



;-+---+---++-+--+-++-+++--++--+++
	EXPORT	ARMDisableInt
ARMDisableInt
	STMFD	sp!, {r0}
	MRS		r0, CPSR
	ORR		r0, r0, #0x80
	MSR		CPSR_c, r0
	LDMFD	sp!, {r0}
	
	MOV		pc, lr

	EXPORT	ARMEnableInt
ARMEnableInt
	STMFD	sp!, {r0}
	MRS		r0, CPSR
	BIC 	r0, r0, #0x80
	MSR		CPSR_c, r0
	LDMFD	sp!, {r0}
	
	MOV		pc, lr



;-+---+---++-+--+-++-+++--++--+++
        IMPORT  IRQ_STACK
	EXPORT  OSIntCtxSw
OSIntCtxSw
	;新的代碼,實現了中斷的嵌套
	;該函數被OSIntExit調用,OSIntExit在ISR_IrqHandler中被
	;調用(而不是以前在安裝后的向量中,這是為了簡化堆棧處理)
	;該函數運行依賴于調用ISR_IrqHandler之前的模式轉換和棧構造
	;運行于SYS模式,其首先調整SP_sys指針到下圖中SPSR處
	;后半部分與OSCtxSw相同
	;
 	;該函數是不返回的,進入時堆棧結構是已知的,除了原來的構造的
 	;標準棧,還壓入了r4 r14(可以參看編譯后的匯編代碼)


;irq的棧結構,進入OSIntExit()時,sp指向的恰好是標準棧頂,但是,由于
;函數中又調用了函數,起始第一句便是一個stmfd sp!,{r4,r14},于是進入
;OSIntCtxSw后還得我們來調整
;-+---+---++-+--+-++-+++--++--+++-+---+---++-+--+-++-+++--++--+++
;低  r4 r14 spsr cpsr r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 lr PC  高
;-+---+---++-+--+-++-+++--++--+++-+---+---++-+--+-++-+++--++--+++	
	ldmfd	sp!,{r0,r1}	;我們的sp_sys已經指向標準棧結構
	
	;后面的內容和OSCtxSw的后半部分相同,依次為
;OSPrioCur = OSPrioHighRdy
;OSTCBCur->OSTCBStkPtr=SP	保存SP到當前任務控制塊
;SP=OSTCBHighRdy->OSTCBStkPtr
;OSTCBCur=OSTCBHighRdy
;彈出現場
		
	LDR	r4, addr_OSPrioCur
	LDR	r5, addr_OSPrioHighRdy
	LDRB	r6, [r5]
	STRB	r6, [r4]
	; OSPrioCur = OSPrioHighRdy 
		
	; Get current task TCB address
	LDR	r4, addr_OSTCBCur
	LDR	r5, [r4]
	STR	sp, [r5]		; store sp in preempted tasks's TCB
	;OSTCBCur->OSTCBStkPtr=SP	保存SP到當前任務控制塊
	; Get highest priority task TCB address
	LDR	r6, addr_OSTCBHighRdy
	LDR	r6, [r6]
	LDR	sp, [r6]		; get new task's stack pointer
	;SP=OSTCBHighRdy->OSTCBStkPtr	更新SP為即將運行的任務
	
	STR	r6, [r4]		; set new current task TCB address
	; OSTCBCur = OSTCBHighRdy
	
	LDMFD	sp!, {r4}		; YYY+
	;MSR	SPSR_cxsf, r4		; YYY+運行在sys模式下,無需SPSR的更新
	LDMFD	sp!, {r4}		; YYY+
	MSR	CPSR_cxsf, r4		; YYY+
	LDMFD	sp!, {r0-r12, lr, pc}	; YYY+
	;現場恢復完畢
	
		

	END
;-+---+---++-+--+-++-+++--++--+++	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国一区二区视频| 久久成人精品无人区| 99久久精品国产观看| 久久精品一区二区三区不卡牛牛| 日韩成人午夜精品| 日韩欧美一区在线观看| 六月丁香综合在线视频| 欧美成人伊人久久综合网| 美女网站色91| 久久精品国产99久久6| 色悠悠亚洲一区二区| 亚洲综合一区在线| 一区二区三区91| 色综合婷婷久久| 久久精品亚洲精品国产欧美| 经典三级在线一区| 国产精品三级视频| 91成人网在线| 九九热在线视频观看这里只有精品| 久久香蕉国产线看观看99| 一本大道久久a久久综合| 偷拍与自拍一区| 久久久国际精品| 欧美影片第一页| 免费在线观看视频一区| 中文字幕不卡在线播放| 欧美影院一区二区三区| 国产精品99久久久久久似苏梦涵| 成人欧美一区二区三区1314| 91精品国产手机| 成人激情午夜影院| 91在线看国产| 国产精品18久久久久久久网站| 亚洲久草在线视频| 制服丝袜一区二区三区| 国产精品一级片在线观看| 亚洲欧美在线高清| 日韩一级二级三级| 99热在这里有精品免费| 亚洲成人av免费| 精品久久久久久最新网址| 高清成人免费视频| 亚洲综合在线视频| 欧美久久一二三四区| 成人听书哪个软件好| 亚洲不卡av一区二区三区| 久久综合视频网| 99久久99久久精品国产片果冻| 亚洲一区二区三区爽爽爽爽爽| 日韩一级片网站| 岛国一区二区在线观看| 亚洲成人在线观看视频| 国产日产欧美一区二区三区| 欧美影院精品一区| 国产一区二区不卡在线| 中文字幕制服丝袜成人av| 色悠悠亚洲一区二区| 国内外成人在线| 亚洲一区二区三区国产| 国产亚洲午夜高清国产拍精品| av网站免费线看精品| 日av在线不卡| 亚洲裸体在线观看| 精品国产sm最大网站免费看| 91黄视频在线观看| 国产精品白丝jk白祙喷水网站| 亚洲成人自拍网| 国产精品国产三级国产aⅴ入口| 91麻豆免费看| 国产一区二区三区精品欧美日韩一区二区三区 | 久久久亚洲精品石原莉奈| 成人av在线观| 日韩国产成人精品| 亚洲女厕所小便bbb| 久久久精品国产免大香伊| 在线不卡一区二区| 色噜噜狠狠一区二区三区果冻| 国产乱码一区二区三区| 日本欧美一区二区在线观看| 亚洲一区二区不卡免费| 欧美日韩精品一区二区在线播放| 久久99精品国产91久久来源| 日韩精品一区二区在线| 99在线视频精品| 夜夜精品视频一区二区| 日韩毛片在线免费观看| 久久久久国产一区二区三区四区| 欧美日韩成人综合天天影院| 国内精品久久久久影院一蜜桃| 日本欧美一区二区| 亚洲图片欧美色图| 91亚洲国产成人精品一区二三 | 五月天婷婷综合| 亚洲欧美区自拍先锋| 国产欧美精品一区aⅴ影院| 337p日本欧洲亚洲大胆精品| 91精选在线观看| 久久爱www久久做| 国产激情一区二区三区桃花岛亚洲| 国产亚洲短视频| 久久精品视频在线免费观看 | 国产欧美日韩精品一区| 中文字幕一区二区三区在线观看 | 精品国产一二三区| 精品黑人一区二区三区久久| 欧美一级二级三级蜜桃| 欧美一区二区在线免费观看| 欧美高清性hdvideosex| 欧美日韩一区二区欧美激情| 欧美在线一区二区三区| 欧美在线免费观看亚洲| 欧美日韩免费一区二区三区视频| 欧美亚洲丝袜传媒另类| 欧美理论在线播放| 91精品国产欧美日韩| 欧美xxxxxxxxx| 国产欧美日韩一区二区三区在线观看| 日本一区二区三区在线观看| 一区二区欧美视频| 午夜视频在线观看一区二区| 蜜桃一区二区三区四区| 国产乱码精品一品二品| 波多野结衣一区二区三区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产精品久久久久久久久搜平片 | 亚洲天堂av一区| 国产精品美女久久久久av爽李琼| 国产精品久久久久三级| 亚洲精品乱码久久久久久 | 一区二区成人在线视频| 天天色综合天天| 高清在线成人网| 欧美亚洲日本国产| 欧美精品一区二区久久久| 国产精品久久久久影院色老大| 一区二区三区高清不卡| 蜜桃av一区二区| 一本大道久久a久久综合婷婷 | 中文字幕一区二区视频| 亚洲国产色一区| 91国偷自产一区二区三区观看 | 欧美丰满嫩嫩电影| 亚洲国产精品精华液ab| 亚洲第一在线综合网站| 国产激情精品久久久第一区二区| 日本久久精品电影| 欧美mv和日韩mv国产网站| 亚洲人妖av一区二区| 久久爱www久久做| 欧美日韩五月天| 亚洲视频精选在线| 美女视频第一区二区三区免费观看网站 | 国产成人在线色| 欧美一级日韩一级| 亚洲免费观看高清完整版在线观看熊| 亚洲国产精品久久久男人的天堂| 狠狠久久亚洲欧美| 欧美影院一区二区| 中文字幕av一区二区三区免费看| 亚洲第一在线综合网站| 国产精品一区二区不卡| 6080日韩午夜伦伦午夜伦| 亚洲精品一线二线三线无人区| 欧美国产日韩亚洲一区| 欧美bbbbb| 91国产福利在线| 国产午夜亚洲精品午夜鲁丝片| 偷拍日韩校园综合在线| 成人精品鲁一区一区二区| 亚洲精品在线观| 狠狠色狠狠色合久久伊人| 欧美日韩高清在线| 一区二区三区视频在线看| 99久久精品情趣| 国产欧美日韩视频在线观看| 老司机精品视频一区二区三区| 在线亚洲免费视频| 中文字幕亚洲欧美在线不卡| 国产二区国产一区在线观看 | 精品美女一区二区| 丝袜美腿成人在线| 欧美日韩国产小视频在线观看| 亚洲女同一区二区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产激情一区二区三区四区 | 看片网站欧美日韩| 激情深爱一区二区| 91久久精品一区二区二区| 久久精品视频在线看| 韩国v欧美v日本v亚洲v| 精品1区2区在线观看| 国产一区 二区| 欧美videos大乳护士334| 奇米精品一区二区三区在线观看一| 欧美猛男gaygay网站| 五月天丁香久久| 日韩一区二区免费在线观看| 蓝色福利精品导航| 久久久久一区二区三区四区| 久久国产精品免费|