www.pudn.com > F2812-UCOS.rar > OS_Sw.asm


.page 
.text 
 
_OSCtxSw: 
	.ref _OSTCBHighRdy 
	.ref _OSTCBCur 
	.ref _OSPrioHighRdy 
	.ref _OSPrioCur 
	.global _OSCtxSw 
	 
	 PUSH	XAR7 
	 PUSH	XAR6 
	 PUSH	XAR5 
	 PUSH	XAR4 
	 PUSH	XAR3 
	 PUSH	XAR2 
	 PUSH	AR1H:AR0H 
	 PUSH  	XT  
     PUSH   RPC 
 
     MOVW     DP,#_OSTCBCur	 ; OSTCBCur->OSTCBStkPtr = SP 
     MOVL     XAR4,@_OSTCBCur   ; |274|  
     MOV      AL,SP      
     MOV      *+XAR4[0],AL     ; |274|            
      
      
 
;=================================================================================	 
	 MOVW DP,#_OSTCBHighRdy	 	; OSTCBCur = OSTCBHighRdy 
     MOVL ACC,@_OSTCBHighRdy     
     MOVW DP,#_OSTCBCur 
     MOVL @_OSTCBCur,ACC         
	 
	 
     MOVW DP,#_OSPrioHighRdy    	;OSPrioCur = OSPrioHighRdy 
     MOV  AL,@_OSPrioHighRdy     
     MOVW DP,#_OSPrioCur 
     MOV  @_OSPrioCur,AL         
;=================================================================================	      
	 
	 
	 MOVW    DP,#_OSTCBHighRdy	 ;SP = OSTCBhighRdy->OSTCBStkPtr	 
     MOVL    XAR4,@_OSTCBHighRdy    
     MOV     AL,*+XAR4[0]                     
     MOV     @SP,AL 
      
      
     POP    RPC 
     POP	XT 
     POP    AR1H:AR0H 
     POP	XAR2 
     POP	XAR3 
     POP	XAR4 
     POP	XAR5 
     POP	XAR6 
     POP	XAR7 
     IRET 
	.end