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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 復(fù)件 os_cpu_asm.s

?? 移植好的UCOS2.86版
?? S
字號:
;//*********************************************************************************************************
;//                                               uC/OS-II
;//                                         The Real-Time Kernel
;//
;//                          (c) Copyright 1992-2003, Jean J. Labrosse, Weston, FL
;//                                          All Rights Reserved
;//
;//                                              ARM920T Port
;//                                            ADS v1.2 Compiler
;//                                             Samsung S3C2440A
;//
;// File    : os_cpu_a.s refrence to ucos application note for arm AN-1014
;// Des	  : S3C2440 uC/OS-II Port 
;// by      : tangxiaofeng xidian 503
;// History : 
;// OSCtxSw(), OSIntCtxSw()  OSStartHighRdy() OS_CPU_IRQ_ISR() OSTickISR()
;//******************************************************************************************************** */

SRCPND   	EQU  0x4a000000    ;// Source pending
INTPND   	EQU  0x4a000010    ;// Interrupt request status

rEINTPEND   EQU  0x560000a8
INTOFFSET   EQU  0x4a000014


USERMODE    EQU 	0x10
FIQMODE     EQU 	0x11
IRQMODE     EQU 	0x12
SVCMODE     EQU 	0x13
ABORTMODE   EQU 	0x17
UNDEFMODE   EQU 	0x1b
MODEMASK    EQU 	0x1f
NOINT       EQU 	0xc0

;//*********************************************************************************************************
;//                                    EXPORT and EXTERNAL REFERENCES
;//*********************************************************************************************************/
	IMPORT  OSRunning
	IMPORT  OSTCBCur
	IMPORT  OSTCBHighRdy
	IMPORT  OSPrioCur
	IMPORT  OSPrioHighRdy
	IMPORT  OSIntNesting
	
			
	IMPORT  OSIntEnter
	IMPORT  OSIntExit
	IMPORT  OSTaskSwHook
	IMPORT  OSTimeTick
	
	IMPORT  HandleEINT0
	

	EXPORT  OSStartHighRdy
	EXPORT  OSCtxSw
	EXPORT  OSTickISR	
	EXPORT  OSIntCtxSw

	EXPORT  OSCPUSaveSR
	EXPORT  OSCPURestoreSR
	
;//	EXPORT  OS_CPU_IRQ_ISR
	
	
	AREA UCOS_ARM, CODE, READONLY
	
;//*********************************************************************************************************
;//                                          START MULTITASKING
;//                                       void OSStartHighRdy(void)
;//
;// The stack frame is assumed to look as follows:
;//
;//							    Entry Point(Task Name)				(High memory)
;//                               LR(R14)
;//                               R12
;//                               R11
;//                               R10
;//                               R9
;//                               R8
;//                               R7
;//                               R6
;//                               R5
;//                               R4
;//                               R3
;//                               R2
;//                               R1
;//                               R0 : argument
;// OSTCBHighRdy->OSTCBStkPtr --> CPSR								(Low memory)
;//
;// Note : OSStartHighRdy() MUST:
;//           a) Call OSTaskSwHook() then,
;//           b) Set OSRunning to TRUE,
;//           c) Switch to the highest priority task.
;//********************************************************************************************************** */
OSStartHighRdy  
	;//----------------------------------------------------------------------------------	
	;// OSRunning = TRUE;//
	;//----------------------------------------------------------------------------------	
	
	;//MSR     CPSR_cxsf,#SVCMODE|NOINT     ;//Switch to SVC mode with IRQ&FIQ disable
	
	BL		OSTaskSwHook            ;//Call user define Task switch hook
	
	LDR		R0, =OSRunning          ;// OSRunning =TRUE
	MOV		R1, #1
	STRB 	R1, [R0]

	;//----------------------------------------------------------------------------------		
	;// 		SP = OSTCBHighRdy->OSTCBStkPtr;//
	;//----------------------------------------------------------------------------------	
	LDR 	R0, =OSTCBHighRdy
	LDR 	R0, [R0]         
	LDR 	SP, [R0]         

	;//----------------------------------------------------------------------------------		
	;// Prepare to return to proper mode
	;//----------------------------------------------------------------------------------	
	LDMFD 	SP!, {R0}  
	MSR 	SPSR_cxsf, R0
	LDMFD 	SP!, {R0-R12, LR, PC}^


;//**********************************************************************************************************
;//                                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
;//
;//          	   2) The stack frame of the task to suspend looks as follows:
;//                                                   
;//                                                   PC                    (High memory)
;//				  									LR(R14)					
;//           					                    R12
;// 			                      			        R11
;//           		                			    R10
;//                   		           			 	R9
;//                           		    			R8
;//                               					R7
;//                               					R6
;//                               					R5
;//                               					R4
;//                               					R3
;//                               					R2
;//                               					R1
;//                               					R0
;// 						OSTCBCur->OSTCBStkPtr ----> CPSR					(Low memory)
;//
;//
;//          	   3) The stack frame of the task to resume looks as follows:
;//
;//			  		  								PC				(High memory)
;//                                                   LR(R14)	
;//			           			                    R12
;//           		            			        R11
;//                   		        			    R10
;//                           		   			 	R9
;//                               					R8
;//                               					R7
;//			                               			R6
;//           		                    			R5
;//                   		            			R4
;//                           		    			R3
;//                               					R2
;//                               					R1
;//			                               			R0
;// 					OSTCBHighRdy->OSTCBStkPtr ---->	CPSR					(Low memory)
;//*********************************************************************************************************/
OSCtxSw
	
	STMFD	SP!, {LR}           ;//PC
	STMFD	SP!, {R0-R12, LR}   ;//R0-R12 LR
	MRS		R0,  CPSR       ;//Push CPSR
	STMFD	SP!, {R0}	
		
	;//----------------------------------------------------------------------------------
	;// 		OSTCBCur->OSTCBStkPtr = SP
	;//----------------------------------------------------------------------------------		
	LDR		R0, =OSTCBCur
	LDR		R0, [R0]
	STR		SP, [R0]
	
	;//----------------------------------------------------------------------------------		
	;// OSTaskSwHook();//
	;//---------------------------------------------------------------------------------	
	BL 		OSTaskSwHook

	;//----------------------------------------------------------------------------------			
	;// OSTCBCur = OSTCBHighRdy;//
	;//----------------------------------------------------------------------------------		
	LDR		R0, =OSTCBHighRdy
	LDR		R1, =OSTCBCur
	LDR		R0, [R0]
	STR		R0, [R1]
	
	;//----------------------------------------------------------------------------------		
	;// OSPrioCur = OSPrioHighRdy;//
	;//----------------------------------------------------------------------------------		
	LDR		R0, =OSPrioHighRdy
	LDR		R1, =OSPrioCur
	LDRB	R0, [R0]
	STRB	R0, [R1]
	
	;//----------------------------------------------------------------------------------		
	;//  OSTCBHighRdy->OSTCBStkPtr;//
	;//----------------------------------------------------------------------------------		
	LDR		R0, =OSTCBHighRdy
	LDR		R0, [R0]
	LDR		SP, [R0]

	;//----------------------------------------------------------------------------------	
	;//Restore New task context
	;//----------------------------------------------------------------------------------	
	LDMFD 	SP!, {R0}		;//POP CPSR
	MSR 	SPSR_cxsf, R0
	LDMFD 	SP!, {R0-R12, LR, PC}^	

	
;//*********************************************************************************************************
;//                                            TICK HANDLER
;//
;// Description:  
;//     This handles all the Timer0(INT_TIMER0) interrupt which is used to generate the uC/OS-II tick.
;//*********************************************************************************************************/

OSTickISR
	MOV     R5,LR	
	MOV 	R1, #1
	MOV		R1, R1, LSL #10		;// Timer0 Source Pending Reg.
	LDR 	R0, =SRCPND
	LDR     R2, [R0]
	ORR     R1, R1,R2
	STR 	R1, [R0]

	LDR		R0, =INTPND
	LDR		R1, [R0]
	STR		R1, [R0]		

	;//----------------------------------------------------------------------------------		
	;// OSTimeTick();//
	;//----------------------------------------------------------------------------------	
	BL		OSTimeTick
	
  	
	MOV    PC, R5        		;// Return 	
	
;//*********************************************************************************************************
;//                                PERFORM A CONTEXT SWITCH (From an ISR)
;//                                        void OSIntCtxSw(void)
;//
;// Description: 1) This code performs a context switch if a higher priority task has been made ready-to-run
;//               	during an ISR.
;//
;//          	   2) The stack frame of the task to suspend looks as follows:
;//
;//				  									PC					(High memory)
;//                                                   LR(R14)
;//           					                    R12
;// 			                      			        R11
;//           		                			    R10
;//                   		           			 	R9
;//                           		    			R8
;//                               					R7
;//                               					R6
;//                               					R5
;//                               					R4
;//                               					R3
;//                               					R2
;//                               					R1
;//                               					R0
;//                               					
;// 						OSTCBCur->OSTCBStkPtr ----> CPSR					(Low memory)
;//
;//
;//          	   3) The stack frame of the task to resume looks as follows:
;//
;//			  		  								PC					(High memory)
;//                                                   LR(R14)	
;//			           			                    R12
;//           		            			        R11
;//                   		        			    R10
;//                           		   			 	R9
;//                               					R8
;//                               					R7
;//			                               			R6
;//           		                    			R5
;//                   		            			R4
;//                           		    			R3
;//                               					R2
;//                               					R1
;//			                               			R0
;// 					OSTCBHighRdy->OSTCBStkPtr ---->	CPSR					(Low memory)
;//*********************************************************************************************************/
OSIntCtxSw
	;//----------------------------------------------------------------------------------		
	;// Call OSTaskSwHook();//
	;//----------------------------------------------------------------------------------	
	BL 		OSTaskSwHook
	
	;//----------------------------------------------------------------------------------			
	;// OSTCBCur = OSTCBHighRdy;//
	;//----------------------------------------------------------------------------------		
	LDR		R0, =OSTCBHighRdy
	LDR		R1, =OSTCBCur
	LDR		R0, [R0]
	STR		R0, [R1]
	
	;//----------------------------------------------------------------------------------		
	;// OSPrioCur = OSPrioHighRdy;//
	;//----------------------------------------------------------------------------------		
	LDR		R0, =OSPrioHighRdy
	LDR		R1, =OSPrioCur
	LDRB	R0, [R0]
	STRB	R0, [R1]
	
	;//----------------------------------------------------------------------------------		
	;// 		SP = OSTCBHighRdy->OSTCBStkPtr;//
	;//----------------------------------------------------------------------------------		
	LDR		R0, =OSTCBHighRdy
	LDR		R0, [R0]
	LDR		SP, [R0]
	
	;//----------------------------------------------------------------------------------	
	;// Restore New Task context
	;//----------------------------------------------------------------------------------	
	LDMFD 	SP!, {R0}              ;//POP CPSR
	MSR 	SPSR_cxsf, R0
	LDMFD 	SP!, {R0-R12, LR, PC}^	
	

	

    
;//*********************************************************************************************************
;//                                   CRITICAL SECTION METHOD 3 FUNCTIONS
;//
;// Description: Disable/Enable interrupts by preserving the state of interrupts.  Generally speaking you
;//              would store the state of the interrupt disable flag in the local variable 'cpu_sr' and then
;//              disable interrupts.  'cpu_sr' is allocated in all of uC/OS-II''s functions that need to 
;//              disable interrupts.  You would restore the interrupt disable state by copying back 'cpu_sr'
;//              into the CPU''s status register.
;//
;// Prototypes : OS_CPU_SR  OSCPUSaveSR(void);//
;//              void       OSCPURestoreSR(OS_CPU_SR cpu_sr);//
;//
;//
;// Note(s)    : 1) These functions are used in general like this:
;//
;//                 void Task (void *p_arg)
;//                 {
;//                 #if OS_CRITICAL_METHOD == 3          /* Allocate storage for CPU status register */
;//                     OS_CPU_SR  cpu_sr;//
;//                 #endif
;//
;//                          :
;//                          :
;//                     OS_ENTER_CRITICAL();//             /* cpu_sr = OSCPUSaveSR();//                */
;//                          :
;//                          :
;//                     OS_EXIT_CRITICAL();//              /* OSCPURestoreSR(cpu_sr);//                */
;//                          :
;//                          :
;//                 }
;//
;//              2) OSCPUSaveSR() is implemented as recommended by Atmel''s application note:
;//
;//                    "Disabling Interrupts at Processor Level"
;//*********************************************************************************************************
OSCPUSaveSR
	MRS     R0, CPSR				;// Set IRQ and FIQ bits in CPSR to disable all interrupts
	ORR     R1, R0, #0xC0
	MSR     CPSR_c, R1
	MRS     R1, CPSR				;// Confirm that CPSR contains the proper interrupt disable flags
	AND     R1, R1, #0xC0
	CMP     R1, #0xC0
	BNE     OSCPUSaveSR				;// Not properly disabled (try again)
	MOV     PC, LR					;// Disabled, return the original CPSR contents in R0

OSCPURestoreSR
	MSR     CPSR_c, R0
	MOV     PC, LR
	        
	END

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品专区在线| av电影在线观看一区| 7777精品伊人久久久大香线蕉完整版| 亚洲线精品一区二区三区| 色综合天天综合网国产成人综合天| 成人免费一区二区三区视频| 色综合天天在线| 一区二区高清免费观看影视大全| 欧美视频一二三区| 欧美bbbbb| 久久精品亚洲一区二区三区浴池| 成人网男人的天堂| 洋洋av久久久久久久一区| 欧美日本韩国一区二区三区视频| 久久精品国产一区二区三| 久久久影视传媒| 91理论电影在线观看| 日韩在线播放一区二区| aa级大片欧美| 亚洲欧美日韩一区二区| 欧美浪妇xxxx高跟鞋交| 国产在线一区观看| 亚洲男人电影天堂| 欧美一区二区黄| 粉嫩久久99精品久久久久久夜| 综合在线观看色| 在线电影一区二区三区| 国产高清无密码一区二区三区| 亚洲品质自拍视频| 日韩精品一区二区三区视频在线观看 | 一本到不卡精品视频在线观看| 亚洲高清不卡在线观看| 久久久久久久久久久久久久久99| 99re视频这里只有精品| 日本亚洲电影天堂| 日本一区二区三区免费乱视频| 99精品欧美一区二区三区小说| 天天做天天摸天天爽国产一区| 国产日韩欧美高清| 7777女厕盗摄久久久| 成人av在线资源网站| 日韩电影免费在线观看网站| 一区视频在线播放| 一区二区三区精品在线观看| 精品成人私密视频| 欧美精品久久一区二区三区| 成人在线视频一区二区| 蜜桃av一区二区三区电影| 中文字幕一区二区三区不卡在线 | 亚洲精品亚洲人成人网在线播放| 日韩一区二区在线观看| 91高清视频免费看| 成人精品在线视频观看| 精品写真视频在线观看| 亚洲成人自拍网| 亚洲私人影院在线观看| 国产婷婷一区二区| 欧美一区二区黄色| 欧美日韩一本到| 在线精品观看国产| 97se亚洲国产综合在线| 国产麻豆精品在线观看| 美女网站在线免费欧美精品| 亚洲成人黄色小说| 亚洲一二三区在线观看| 综合精品久久久| 国产精品二三区| 国产精品色在线| 国产欧美日产一区| 国产日韩精品久久久| 精品国精品自拍自在线| 欧美成人精品二区三区99精品| 欧美日韩高清在线| 在线观看不卡视频| 在线视频你懂得一区二区三区| 一本大道久久a久久综合| voyeur盗摄精品| 99久久99久久精品国产片果冻 | 97精品电影院| 成人av网在线| 99久久免费精品高清特色大片| 成人高清伦理免费影院在线观看| 国产乱子轮精品视频| 国产精品白丝jk黑袜喷水| 国内精品国产成人| 国产在线精品一区二区夜色| 国产一区亚洲一区| 国产精品一区在线| 国产高清精品网站| 不卡欧美aaaaa| 99视频精品在线| 色香色香欲天天天影视综合网| 91免费看视频| 欧美视频在线观看一区二区| 5月丁香婷婷综合| 精品福利一区二区三区| 久久精品视频在线看| 国产精品欧美极品| 一区二区三区电影在线播| 亚洲国产精品久久人人爱蜜臀| 亚洲成人午夜电影| 男人的j进女人的j一区| 国产精品一品二品| 色综合久久88色综合天天免费| 欧美性猛交xxxxxx富婆| 日韩一级完整毛片| 国产精品免费免费| 亚洲午夜一区二区| 国产一区二区三区在线观看免费 | 日韩亚洲欧美在线观看| 精品福利一区二区三区免费视频| 欧美激情在线一区二区| 亚洲精品国产无套在线观| 日韩有码一区二区三区| 国产精品资源网站| 在线免费观看一区| 精品少妇一区二区三区在线播放 | 色噜噜狠狠成人网p站| 69堂成人精品免费视频| 国产欧美精品一区二区色综合 | 中文字幕亚洲一区二区va在线| 亚洲va韩国va欧美va精品| 国产一区二区在线看| 色av综合在线| 久久久噜噜噜久久中文字幕色伊伊 | 久久天堂av综合合色蜜桃网| 亚洲欧洲另类国产综合| 免费人成网站在线观看欧美高清| 成人午夜私人影院| 欧美一区2区视频在线观看| 国产欧美1区2区3区| 日韩一区精品视频| 色呦呦国产精品| 久久精品在线免费观看| 亚洲国产日产av| 成人一道本在线| 精品国产乱码久久久久久蜜臀| 最新欧美精品一区二区三区| 国内精品在线播放| 欧美美女一区二区三区| 亚洲日本在线观看| 国产精品99久久久久久宅男| 日韩欧美在线观看一区二区三区| 亚洲女与黑人做爰| 国产精品一区在线观看乱码| 日韩欧美一区中文| 亚洲午夜久久久| 91色在线porny| 中文字幕电影一区| 国内精品免费在线观看| 日韩精品资源二区在线| 日韩高清在线观看| 欧美色综合久久| 一区二区三区在线免费视频| 成人黄色免费短视频| 久久先锋影音av鲁色资源网| 日韩高清电影一区| 欧美日本一道本在线视频| 亚洲无人区一区| 欧美私模裸体表演在线观看| 亚洲欧洲日韩av| 91女厕偷拍女厕偷拍高清| 亚洲丝袜制服诱惑| 99久久久免费精品国产一区二区| 欧美韩日一区二区三区| 国产999精品久久久久久| 久久久无码精品亚洲日韩按摩| 国产一本一道久久香蕉| 久久综合久久综合九色| 91亚洲精华国产精华精华液| 中文字幕亚洲在| 色婷婷亚洲综合| 亚洲国产美女搞黄色| 欧美日韩免费在线视频| 亚洲成av人片一区二区梦乃| 欧美日韩一二三| 午夜免费欧美电影| 欧美一区二区视频免费观看| 日韩国产一二三区| 日韩欧美国产午夜精品| 国产精品一区专区| 中文字幕精品一区二区三区精品| 北条麻妃一区二区三区| 亚洲三级在线观看| 欧美日韩一区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 精品国产91洋老外米糕| 国产99精品在线观看| 一区二区三区免费网站| 欧美色图免费看| 青青草国产精品亚洲专区无| 久久久久久久久久看片| proumb性欧美在线观看| 亚洲国产成人porn| 欧美一级欧美三级| 国产成人精品三级| 一区二区三区高清不卡| 日韩欧美一二三| aa级大片欧美| 老色鬼精品视频在线观看播放|