| 
									
										
										
										
											2008-05-19 16:52:27 -07:00
										 |  |  | /* | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |  * dtlb_prot.S: DTLB protection trap strategy. | 
					
						
							|  |  |  |  *              This is included directly into the trap table. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 1996,1998 David S. Miller (davem@redhat.com)
 | 
					
						
							|  |  |  |  * Copyright (C) 1997,1998 Jakub Jelinek   (jj@ultra.linux.cz)
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Ways we can get here: | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * [TL == 0] 1) User stores to readonly pages. | 
					
						
							|  |  |  |  * [TL == 0] 2) Nucleus stores to user readonly pages. | 
					
						
							|  |  |  |  * [TL >  0] 3) Nucleus stores to user readonly stack frame. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* PROT ** ICACHE line 1: User DTLB protection trap	*/ | 
					
						
							| 
									
										
										
										
											2005-10-12 12:22:46 -07:00
										 |  |  | 	mov		TLB_SFSR, %g1 | 
					
						
							|  |  |  | 	stxa		%g0, [%g1] ASI_DMMU		! Clear FaultValid bit | 
					
						
							|  |  |  | 	membar		#Sync				! Synchronize stores | 
					
						
							|  |  |  | 	rdpr		%pstate, %g5			! Move into alt-globals | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	wrpr		%g5, PSTATE_AG|PSTATE_MG, %pstate | 
					
						
							| 
									
										
										
										
											2005-10-12 12:22:46 -07:00
										 |  |  | 	rdpr		%tl, %g1			! Need a winfixup? | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	cmp		%g1, 1				! Trap level >1? | 
					
						
							| 
									
										
										
										
											2005-10-12 12:22:46 -07:00
										 |  |  | 	mov		TLB_TAG_ACCESS, %g4		! For reload of vaddr | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* PROT ** ICACHE line 2: More real fault processing */ | 
					
						
							| 
									
										
										
										
											2014-10-18 23:03:09 -04:00
										 |  |  | 	ldxa		[%g4] ASI_DMMU, %g5		! Put tagaccess in %g5 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	bgu,pn		%xcc, winfix_trampoline		! Yes, perform winfixup | 
					
						
							|  |  |  | 	 mov		FAULT_CODE_DTLB | FAULT_CODE_WRITE, %g4 | 
					
						
							| 
									
										
										
										
											2014-10-18 23:03:09 -04:00
										 |  |  | 	ba,pt		%xcc, sparc64_realfault_common	! Nope, normal fault | 
					
						
							|  |  |  | 	 nop | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* PROT ** ICACHE line 3: Unused...	*/ | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* PROT ** ICACHE line 4: Unused...	*/ | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop | 
					
						
							|  |  |  | 	nop |