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

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

?? os_cpu_a.s

?? ucos2 移植到44b0 上的源代碼,支持中斷嵌套,調試通過.
?? S
字號:
;/****************************************Copyright (c)**************************************************
;**                                       中南民族大學
;**                                     電子信息工程學院
;**                                    2005級電子信息工程  
;**									yangbin6b210@yahoo.com.cn
;**                                 
;**
;**----------------------------------------文件信息------------------------------------------------------
;**文   件   名: os_cpu_s.s
;**創   建   人: 楊斌
;**最后修改日期: 2007年12月12日
;**描        述: μCOS-II在S3C44B0X上的移植代碼匯編代碼部分,用ADS1.2編譯
;**
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
NoInt		EQU	0x80

SVC32Mode	EQU	0x13
IRQ32Mode	EQU	0x12
FIQ32Mode	EQU	0x11
SYS32Mode	EQU	0X1F





		CODE32

		AREA    |subr|, CODE, READONLY
		
		IMPORT	OSIntNesting
		IMPORT  OSTCBCur
		IMPORT	IsrIRQ
		IMPORT	OSIntExit
		IMPORT	OSTaskSwHook
		IMPORT  OSTCBCur
        IMPORT  OSTCBHighRdy
        IMPORT  OSPrioCur                   
        IMPORT  OSPrioHighRdy 
        IMPORT	IRQStack
        IMPORT	OSRunning
        
		EXPORT	OSIRQISR
		EXPORT	OSIntCtxSw
		EXPORT	OS_TASK_SW
		EXPORT	OSStartHighRdy
		EXPORT	OS_ENTER_CRITICAL
		EXPORT	OS_EXIT_CRITICAL



;/*********************************************************************************************************
;** 函數名稱: OSIRQISR
;** 功能描述: 中斷進入和退出時的接口
;** 輸 入:   無
;**          
;**          
;** 輸 出 :  無  
;** 全局變量: OSIntNesting、OSTCBCur、IRQStack 
;** 調用模塊: 無
;** 
;** 作 者: 楊斌
;** 日 期: 2007年12月12日
;**-------------------------------------------------------------------------------------------------------
;  系統模式堆棧            IRQ模式堆棧
;	|PC  |					|LR  |=斷點處的將要執行的PC值                        
;	|LR  |	 				|R3  |		
;	|R12 |					|R2  |
;	|R11 |					|R1  |
;	|R10 |					|R0  |
;	|R9  |					|LR  |=系統模式的LR
;	|R8  |					|SP  |=系統模式的SP
;	|R7  |				SP→|SPSR|=斷點處的CPSR
;	|R6  |
;	|R5  |
;	|R4  |
;	|R3  |
;	|R2  |
;	|R1  |
;	|R0  |	
; 	|CPSR|←SP
;/********************************************************************************************************/
OSIRQISR
		SUB		LR,LR,#4							;調整返回地址
		STMFD	SP!,{R0-R3,LR}
		MRS		R3,SPSR
		STMFD	SP,{R3,SP,LR}^						;							系統模式SP→|R0  |						
		
		SUB		SP,SP,#4*3							;							系統模式SP→|SPSR|
		
		LDR		R0,=OSIntNesting
		LDRB	R1,[R0]
		ADD		R1,R1,#1
		STRB	R1,[R0]								;OSIntNesting加1														
		
		MOV		R2,LR
		MSR     CPSR_c, #(NoInt | SYS32Mode)
		CMP		R1,#1
		BNE		OSIRQ_NEXT							;若OSIntNesting為1,則保存當前任務的寄存器到當前任務的堆棧中
		STMFD	SP!,{R2}							;保存當前任務的PC,			系統模式SP→|PC  |
		STMFD	SP!,{LR}							;保存當前任務的LR, 			系統模式SP→|LR  |
		STMFD	SP!,{R4-R12}						;保存當前任務的R4-R12,		系統模式SP→|R4  |
		STR		R3,[SP,#-5*4]						;保存當前任務的CPSR		
		
		MSR     CPSR_c, #(NoInt | IRQ32Mode)		;進入IRQ模式
		ADD		SP,SP,#4*3							;							IRQ模式SP→ |R0  |
		LDMFD	SP,{R0-R3}							;取出R0-R3
		SUB		SP,SP,#4*3							;							IRQ模式SP→ |SPSR|
		MSR     CPSR_c, #(NoInt | SYS32Mode)		;進入系統模式
		STMFD	SP!,{R0-R3}							;保存R0-R3,				系統模式SP→|R0  |	
		SUB		SP,SP,#4							;調整SP,					系統模式SP→|CPSR|
		
		LDR		R0,=OSTCBCur
		LDR		R0,[R0]
		STR		SP,[R0]								;OSTCBCur->OSTCBStkPtr=SP
		
OSIRQ_NEXT		
		BL		IsrIRQ								;調用IRQ中斷服務函數,在此中斷服務函數中必須清除中斷掛起位
		
	    BL      OSIntExit							;調用推出系統中斷函數,在此函數中OSIntNesting減1,也有可能會切換到其他任務中
        
        MSR     CPSR_c, #(NoInt | IRQ32Mode)		;進入IRQ模式。
        
        LDR		R0,=OSIntNesting					
        LDRB	R0,[R0]
        CMP		R0,#0								;若OSIntNesting=0則表明這是第一層中斷
        BEQ		OSIRQ_LEAVE
        
        LDMFD	SP,{R0,SP,LR}^						;程序運行到此處,此時處在嵌套中斷中
		MSR		SPSR_cxsf,R0						;恢復系統模式的SP,LR,IRQ模式SPSR
		ADD		SP,SP,#4*3							;調整IRQ模式SP,			IRQ模式SP→ |R0  |
		LDMFD	SP!,{R0-R3,PC}^						;恢復R0-R3,PC,CPSR,		IRQ模式SP→ |X	 |←上一層中斷的堆棧頂部
		
OSIRQ_LEAVE																			
		LDR		R0,=IRQStack						;程序運行到此處,表明這是第一層中斷且不需要切換任務	
		LDR		R0,[R0]
		MOV		SP,R0								;							IRQ模式SP→ |X   |←中斷模式堆棧棧底
		SUB		SP,SP,#8*4							;							IRQ模式SP→ |SPSR|
		
		LDMFD	SP,{R0,SP,LR}^						;恢復系統模式的SP,LR,		系統模式SP→|X   |←當前任務中斷時的SP
		MSR		SPSR_cxsf,R0						;恢復IRQ模式SPSR
		ADD		SP,SP,#4*3							;調整IRQ模式SP,			IRQ模式SP→ |R0  |			
		
		MSR     CPSR_c, #(NoInt | SYS32Mode)		;切換到系統模式,			
		SUB		SP,SP,#11*4							;調整系統模式SP,			系統模式SP→|R4  |
		LDMFD	SP,{R4-R12}							;恢復R4-R12
		ADD		SP,SP,#11*4							;調整系統模式SP,			系統模式SP→|X   |←當前任務中斷時的SP
		
		MSR     CPSR_c, #(NoInt | IRQ32Mode)		;切換到IRQ模式
		LDMFD	SP!,{R0-R3,PC}^						;恢復R0-R3、CPSR并從中斷返回到當前任務斷點處
		
;/*********************************************************************************************************
;** 函數名稱: OSIntCtxSw
;** 功能描述: 中斷級任務切換
;** 輸 入:   IRQ模式堆棧結構(出棧次序):SPSR、SP(系統模式)、LR(系統模式)、R0-R3、LR 
;**			  當前任務(系統模式)堆棧結構:CPSR、R0-R12、LR、PC          
;**          
;** 輸 出 :  無  
;** 全局變量: OSTCBHighRdy、OSTCBCur、OSPrioCur、OSPrioHighRdy、IRQStack
;** 調用模塊: OSTaskSwHook
;** 
;** 作 者: 楊斌
;** 日 期: 2007年12月13日
;**-------------------------------------------------------------------------------------------------------
;/********************************************************************************************************/
OSIntCtxSw
		BL		OSTaskSwHook							;調用鉤子函數OSTaskSwHook()
        
       	MSR     CPSR_c, #(NoInt | IRQ32Mode)
       	LDR     R0, =OSTCBHighRdy
        LDR     R0, [R0]
        LDR     R1, =OSTCBCur
        STR		R0,	[R1]								;OSTCBCur=OSTCBHighRdy
        
        LDR		R0,=OSPrioCur
        LDR		R1,=OSPrioHighRdy
        LDRB	R1,[R1]
        STRB	R1,[R0]									;OSPrioCur=OSPrioHighRdy
       
        LDR		R0,=IRQStack
		LDR		R0,[R0]
		SUB		R0,R0,#4								;
		MOV		SP,R0									;IRQ模式堆棧保留一個字
		
		MSR     CPSR_c, #(NoInt | SYS32Mode)			;進入系統模式
		LDR     R2, =OSTCBHighRdy
        LDR     R2, [R2]								
        LDR		R2, [R2]								;取得新任務堆棧指針OSTCBHighRdy->OSTCBStkPtr并存入R2中
       
        LDR		R1,[R2]									;取得新任務的CPSR存入R1中
        LDR		R3,[R2,#15*4]							;取得新任務的PC存入R3中
        STR		R3,[R0]									;把新任務的PC存入IRQ模式的堆棧中
        
        MSR     CPSR_c, #(NoInt | IRQ32Mode)			;進入IRQ模式
        MSR		SPSR_cxsf,R1							;把新任務的CPSR保存到IRQ模式的SPSR中
        
        MSR     CPSR_c, #(NoInt | SYS32Mode)			;進入系統模式                       
      	ADD		R2,R2,#4								;調整新任務堆棧指針
      	MOV		SP,R2									;							系統模式SP→|R0  |
      	LDMFD	SP!,{R0-R12,LR}							;恢復新任務的R0-R12,LR,	系統模式SP→|PC  |    
      	ADD		SP,SP,#4								;調整系統模式堆棧指針
      	
      	MSR     CPSR_c, #(NoInt | IRQ32Mode)			;進入IRQ模式
      	LDMFD	SP!,{PC}^								;恢復新任務的CPSR、PC和IRQ模式SP
;/*********************************************************************************************************
;** 函數名稱: OS_TASK_SW
;** 功能描述: 在任務調度中切換任務
;** 輸 入:	  無   
;**			         
;**          
;** 輸 出 :  無  
;** 全局變量: OSTCBCur、OSTCBHighRdy、OSPrioCur、OSPrioHighRdy 
;** 調用模塊: OSTaskSwHook
;** 
;** 作 者: 楊斌
;** 日 期: 2007年12月13日
;**-------------------------------------------------------------------------------------------------------
;/********************************************************************************************************/   
OS_TASK_SW
		STMFD	SP!,{LR} 								;保存當前任務的PC
		STMFD	SP!,{R0-R12,LR}							;依次保存R0-R12、LR
		MRS		R0,CPSR
		STMFD	SP!,{R0}								;保存CPSR
		
		LDR		R1,=OSTCBCur
		LDR		R1,[R1]
		STR		SP,[R1]									;OSTCBCur->OSTCBStkPtr = SP(在當前任務控制塊中保存當前任務的堆棧指針)       
        
	    BL		OSTaskSwHook							;調用OSTaskSwHook()
	    
	    LDR		R3,=OSPrioCur
        LDR		R4,=OSPrioHighRdy
        LDRB	R4,[R4]
        STRB	R4,[R3]									;OSPrioCur=OSPrioHighRdy
        
__OSStartHighRdy
        LDR		R1,=OSTCBCur
        LDR		R2,=OSTCBHighRdy
        LDR		R2,[R2]
        STR		R2,[R1]									;OSTCBCur=OSTCBHighRdy
        
        LDR		SP,[R2]									;得到將要重新運行的任務的堆棧指針SP=OSTCBHighRdy->OSTCBStkPtr
        
        LDMFD	SP!,{R0}								;取出將要運行任務的CPSR存入R0中
       
        MSR     CPSR_c, #(NoInt | SVC32Mode)			;進入管理模式
        MSR		SPSR_cxsf,R0							;管理模式SPSR=將要運行任務的CPSR
        LDR		SP,[R2]									;管理模式SP=將要重新運行的任務的堆棧指針
        ADD		SP,SP,#15*4								;調整SP
        
        MSR     CPSR_c, #(NoInt | SYS32Mode)			;進入系統模式
        LDMFD	SP!,{R0-R12,LR}							;恢復R0-R12、LR
        ADD		SP,SP,#4								;恢復要重新運行的任務的堆棧指針SP
        
        MSR     CPSR_c, #(NoInt | SVC32Mode)			;進入管理模式
        LDMFD	SP,{PC}^								;恢復任務的CPSR并開始運行任務
        	 
;/*********************************************************************************************************
;** 函數名稱: OSStartHighRdy
;** 功能描述: uC/OS-II啟動時調用此程序運行第一個任務
;** 輸 入:	  無   
;**			         
;**          
;** 輸 出 :  無  
;** 全局變量: OSRunning
;** 調用模塊: OSTaskSwHook
;** 
;** 作 者: 楊斌
;** 日 期: 2007年12月13日
;**-------------------------------------------------------------------------------------------------------
;/********************************************************************************************************/          
OSStartHighRdy
		MSR		CPSR_c,#(NoInt | SYS32Mode )
		
		LDR		R1,=OSRunning
		MOV		R2,#1
		STRB	R2,[R1]									;OSRunning=1
		
		BL		OSTaskSwHook							;調用OSTaskSwHook()
		
		B		__OSStartHighRdy						;運行最高優先級任務       
        
;/*********************************************************************************************************
;** 函數名稱: OS_ENTER_CRITICAL
;** 功能描述: 關閉中斷
;** 輸 入:   無  
;**			         
;**          
;** 輸 出 :  無  
;** 全局變量: 無 
;** 調用模塊: 無
;** 
;** 作 者: 楊斌
;** 日 期: 2007年12月13日
;**-------------------------------------------------------------------------------------------------------
;/********************************************************************************************************/
OS_ENTER_CRITICAL
		STMFD	SP!,{R0}
		MRS		R0,CPSR
		ORR		R0,R0,#NoInt
		MSR		CPSR_cxsf,R0
		LDMFD	SP!,{R0}
		MOV		PC,LR  
		
		
		
;/*********************************************************************************************************
;** 函數名稱: OS_EXIT_CRITICAL  
;** 功能描述: 打開中斷 
;** 輸 入:   無 
;**			         
;**          
;** 輸 出 :  無 
;** 全局變量: 無 
;** 調用模塊: 無 
;** 
;** 作 者: 楊斌
;** 日 期: 2007年12月13日
;**-------------------------------------------------------------------------------------------------------
;/********************************************************************************************************/
OS_EXIT_CRITICAL
		STMFD	SP!,{R0}
		MRS		R0,CPSR
		BIC		R0,R0,#NoInt
		MSR		CPSR_cxsf,R0
		LDMFD	SP!,{R0}
		MOV		PC,LR  		      
		
		END
;/*********************************************************************************************************
;**                                   End Of File
;*********************************************************************************************************/

        
     
        
        
        
		
        
        
        
        
        
        
		
		
		
		
		
		
		
		
		
		
        
        
        
        
		
		
		
		
		
		
		
		
		
		
	
		
		






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片www| 亚洲一区二区视频在线观看| 免费在线视频一区| 精品电影一区二区三区| jlzzjlzz亚洲日本少妇| 亚洲成人动漫在线免费观看| 亚洲综合免费观看高清完整版 | 在线免费不卡视频| 日韩成人午夜电影| 国产精品久久久久影院亚瑟 | 精品国精品国产尤物美女| 337p亚洲精品色噜噜狠狠| 99精品欧美一区二区三区小说 | 精品久久久久久久一区二区蜜臀| www.亚洲激情.com| 成人免费av网站| 国产一区二区视频在线| 五月婷婷综合在线| 亚洲精品视频在线| 中文字幕免费不卡| 欧美精品一区二区久久婷婷| 久久先锋影音av鲁色资源网| 日韩亚洲欧美一区二区三区| 欧美四级电影在线观看| 91社区在线播放| 成人午夜av电影| 欧美中文字幕久久| 26uuu久久综合| 亚洲免费观看在线视频| 中文字幕一区日韩精品欧美| 久久久久久久久久久久久久久99| 欧美一区二区福利视频| 欧美三级日韩在线| 欧美亚洲一区二区在线观看| 欧美一区二区三区性视频| 久久久久99精品一区| 亚洲欧美日韩综合aⅴ视频| 日本亚洲欧美天堂免费| 91亚洲精品久久久蜜桃| 日韩欧美中文一区二区| 日韩理论片在线| 亚洲精品一二三区| 麻豆成人av在线| 国产中文一区二区三区| 国产在线一区二区| 欧美视频在线一区二区三区| 久久久久久久性| 日韩激情在线观看| 久久福利视频一区二区| 国产在线不卡一区| 在线观看日韩精品| 欧美国产综合一区二区| 日韩中文字幕麻豆| 色综合中文字幕| 欧美人与禽zozo性伦| 欧美一区二区日韩一区二区| 亚洲欧洲另类国产综合| 狠狠色丁香婷婷综合| 91精品国产欧美日韩| 一区二区三区免费网站| 午夜电影一区二区三区| 91视视频在线观看入口直接观看www | 亚洲一级片在线观看| 成人精品视频一区二区三区尤物| 欧美tickling网站挠脚心| 亚洲成人黄色影院| 欧美性做爰猛烈叫床潮| 国产精品情趣视频| 亚洲福利电影网| 国产精品1区二区.| 欧美色综合天天久久综合精品| 中文字幕第一区第二区| 国产精品一色哟哟哟| 久久精品亚洲一区二区三区浴池| 中文字幕一区视频| voyeur盗摄精品| 亚洲人吸女人奶水| 不卡一区中文字幕| 欧美二区在线观看| 国产精品丝袜在线| 波多野结衣中文字幕一区二区三区| 久久综合狠狠综合久久激情| 91亚洲大成网污www| 国产一区二区三区精品视频| 717成人午夜免费福利电影| 一区二区三区91| 一本久道中文字幕精品亚洲嫩| 色综合久久88色综合天天免费| 中文字幕欧美一区| 色综合久久久久综合体桃花网| 一区二区三区在线影院| 欧美日韩一区二区三区四区五区| 亚洲一区二区精品久久av| 欧美日韩国产首页| 久久99精品国产| 欧美色网一区二区| 五月激情综合婷婷| 精品国产一二三区| 国产成人av影院| 精品国产一区久久| 成人激情动漫在线观看| 一区二区三区在线免费播放| 欧美色图12p| 久久国产精品一区二区| 欧美激情综合五月色丁香小说| 99在线精品免费| 日韩激情一二三区| 欧美极品xxx| 欧美日韩在线播放三区四区| 精品无人码麻豆乱码1区2区| 亚洲欧洲在线观看av| 欧美精品乱人伦久久久久久| 极品少妇一区二区三区精品视频| 国产精品欧美一区喷水| 欧美中文字幕不卡| 国产成人在线视频免费播放| 亚洲综合色成人| 欧美韩国日本不卡| 91精品欧美福利在线观看| 国产91精品一区二区麻豆网站| 精品少妇一区二区三区在线播放 | 欧美日韩高清一区二区不卡 | 国产美女av一区二区三区| 樱花草国产18久久久久| 日韩精品一区二区三区在线观看| 香蕉久久夜色精品国产使用方法| 久久精品视频一区二区三区| 欧美视频在线观看一区| 成人一区二区视频| 久久精品国产澳门| 一区二区三区美女| 中文字幕一区二区三区不卡| 日韩一级片网站| 欧美视频一二三区| 波多野结衣亚洲一区| 激情丁香综合五月| 日韩高清一级片| 亚洲国产欧美日韩另类综合 | 一区二区三区毛片| 国产精品丝袜在线| 国产亚洲自拍一区| 日韩免费高清电影| 538在线一区二区精品国产| 91视频在线看| www.日韩精品| av电影在线观看一区| 国产成人av电影在线观看| 久久成人免费网| 精品无人区卡一卡二卡三乱码免费卡 | 2021国产精品久久精品| 欧美一区二区三区在线看| 欧美日本一道本在线视频| 在线免费观看视频一区| 99久久婷婷国产| 97精品国产露脸对白| 99久久久精品| 色综合天天综合网国产成人综合天 | 成人激情免费电影网址| 成人久久视频在线观看| 成人avav在线| 成人激情文学综合网| 91香蕉视频黄| 在线观看91精品国产入口| 欧美综合欧美视频| 欧美日韩在线播放| 制服.丝袜.亚洲.中文.综合| 日韩欧美高清在线| 国产午夜精品久久久久久久| 亚洲国产精品传媒在线观看| 中文字幕不卡在线播放| 亚洲美女屁股眼交3| 亚洲伊人色欲综合网| 奇米一区二区三区av| 国产一区二区三区免费| 成+人+亚洲+综合天堂| 一本久久综合亚洲鲁鲁五月天 | |精品福利一区二区三区| 伊人色综合久久天天人手人婷| 亚洲成人一区在线| 久久福利资源站| 91小视频免费看| 91精品国产综合久久久久久久 | 日韩精品一区二区三区蜜臀| 久久夜色精品一区| 亚洲视频一二区| 奇米四色…亚洲| 99久久国产综合色|国产精品| 欧美日韩一区中文字幕| 久久免费看少妇高潮| 一区二区三区在线播| 精品制服美女久久| 91香蕉视频污在线| 日韩欧美一级二级| 亚洲少妇中出一区| 九色综合狠狠综合久久| 色婷婷香蕉在线一区二区| 26uuu精品一区二区| 一二三区精品视频| 国产精品亚洲成人| 91精品国产欧美日韩|