30 lines
		
	
	
	
		
			576 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
		
		
			
		
	
	
			30 lines
		
	
	
	
		
			576 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| 
								 | 
							
									.globl		utrap_trap
							 | 
						||
| 
								 | 
							
									.type		utrap_trap,#function
							 | 
						||
| 
								 | 
							
								utrap_trap:		/* %g3=handler,%g4=level */
							 | 
						||
| 
								 | 
							
									TRAP_LOAD_THREAD_REG(%g6, %g1)
							 | 
						||
| 
								 | 
							
									ldx		[%g6 + TI_UTRAPS], %g1
							 | 
						||
| 
								 | 
							
									brnz,pt		%g1, invoke_utrap
							 | 
						||
| 
								 | 
							
									 nop
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									ba,pt		%xcc, etrap
							 | 
						||
| 
								 | 
							
									 rd		%pc, %g7
							 | 
						||
| 
								 | 
							
									mov		%l4, %o1
							 | 
						||
| 
								 | 
							
								        call		bad_trap
							 | 
						||
| 
								 | 
							
									 add		%sp, PTREGS_OFF, %o0
							 | 
						||
| 
								 | 
							
									ba,pt		%xcc, rtrap
							 | 
						||
| 
								 | 
							
									 nop
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								invoke_utrap:
							 | 
						||
| 
								 | 
							
									sllx		%g3, 3, %g3
							 | 
						||
| 
								 | 
							
									ldx		[%g1 + %g3], %g1
							 | 
						||
| 
								 | 
							
									save		%sp, -128, %sp
							 | 
						||
| 
								 | 
							
									rdpr		%tstate, %l6
							 | 
						||
| 
								 | 
							
									rdpr		%cwp, %l7
							 | 
						||
| 
								 | 
							
									andn		%l6, TSTATE_CWP, %l6
							 | 
						||
| 
								 | 
							
									wrpr		%l6, %l7, %tstate
							 | 
						||
| 
								 | 
							
									rdpr		%tpc, %l6
							 | 
						||
| 
								 | 
							
									rdpr		%tnpc, %l7
							 | 
						||
| 
								 | 
							
									wrpr		%g1, 0, %tnpc
							 | 
						||
| 
								 | 
							
									done
							 | 
						||
| 
								 | 
							
									.size		utrap_trap,.-utrap_trap
							 |