| David S. Miller | e2fdd7f | 2008-04-29 02:38:50 -0700 | [diff] [blame] | 1 | #ifdef CONFIG_KGDB | 
 | 2 | 	.globl		arch_kgdb_breakpoint | 
 | 3 | 	.type		arch_kgdb_breakpoint,#function | 
 | 4 | arch_kgdb_breakpoint: | 
 | 5 | 	ta		0x72 | 
 | 6 | 	retl | 
 | 7 | 	 nop | 
 | 8 | 	.size		arch_kgdb_breakpoint,.-arch_kgdb_breakpoint | 
 | 9 | #endif | 
 | 10 |  | 
| David S. Miller | 6eda3a7 | 2008-04-28 00:47:20 -0700 | [diff] [blame] | 11 | 	.type		__do_privact,#function | 
 | 12 | __do_privact: | 
 | 13 | 	mov		TLB_SFSR, %g3 | 
 | 14 | 	stxa		%g0, [%g3] ASI_DMMU	! Clear FaultValid bit | 
 | 15 | 	membar		#Sync | 
 | 16 | 	sethi		%hi(109f), %g7 | 
 | 17 | 	ba,pt		%xcc, etrap | 
 | 18 | 109:	or		%g7, %lo(109b), %g7 | 
 | 19 | 	call		do_privact | 
 | 20 | 	 add		%sp, PTREGS_OFF, %o0 | 
 | 21 | 	ba,pt		%xcc, rtrap | 
 | 22 | 	 nop | 
 | 23 | 	.size		__do_privact,.-__do_privact | 
 | 24 |  | 
 | 25 | 	.type		do_mna,#function | 
 | 26 | do_mna: | 
 | 27 | 	rdpr		%tl, %g3 | 
 | 28 | 	cmp		%g3, 1 | 
 | 29 |  | 
 | 30 | 	/* Setup %g4/%g5 now as they are used in the | 
 | 31 | 	 * winfixup code. | 
 | 32 | 	 */ | 
 | 33 | 	mov		TLB_SFSR, %g3 | 
 | 34 | 	mov		DMMU_SFAR, %g4 | 
 | 35 | 	ldxa		[%g4] ASI_DMMU, %g4 | 
 | 36 | 	ldxa		[%g3] ASI_DMMU, %g5 | 
 | 37 | 	stxa		%g0, [%g3] ASI_DMMU	! Clear FaultValid bit | 
 | 38 | 	membar		#Sync | 
 | 39 | 	bgu,pn		%icc, winfix_mna | 
 | 40 | 	 rdpr		%tpc, %g3 | 
 | 41 |  | 
 | 42 | 1:	sethi		%hi(109f), %g7 | 
 | 43 | 	ba,pt		%xcc, etrap | 
 | 44 | 109:	 or		%g7, %lo(109b), %g7 | 
 | 45 | 	mov		%l4, %o1 | 
 | 46 | 	mov		%l5, %o2 | 
 | 47 | 	call		mem_address_unaligned | 
 | 48 | 	 add		%sp, PTREGS_OFF, %o0 | 
 | 49 | 	ba,pt		%xcc, rtrap | 
 | 50 | 	 nop | 
 | 51 | 	.size		do_mna,.-do_mna | 
 | 52 |  | 
 | 53 | 	.type		do_lddfmna,#function | 
 | 54 | do_lddfmna: | 
 | 55 | 	sethi		%hi(109f), %g7 | 
 | 56 | 	mov		TLB_SFSR, %g4 | 
 | 57 | 	ldxa		[%g4] ASI_DMMU, %g5 | 
 | 58 | 	stxa		%g0, [%g4] ASI_DMMU	! Clear FaultValid bit | 
 | 59 | 	membar		#Sync | 
 | 60 | 	mov		DMMU_SFAR, %g4 | 
 | 61 | 	ldxa		[%g4] ASI_DMMU, %g4 | 
 | 62 | 	ba,pt		%xcc, etrap | 
 | 63 | 109:	 or		%g7, %lo(109b), %g7 | 
 | 64 | 	mov		%l4, %o1 | 
 | 65 | 	mov		%l5, %o2 | 
 | 66 | 	call		handle_lddfmna | 
 | 67 | 	 add		%sp, PTREGS_OFF, %o0 | 
 | 68 | 	ba,pt		%xcc, rtrap | 
 | 69 | 	 nop | 
 | 70 | 	.size		do_lddfmna,.-do_lddfmna | 
 | 71 |  | 
 | 72 | 	.type		do_stdfmna,#function | 
 | 73 | do_stdfmna: | 
 | 74 | 	sethi		%hi(109f), %g7 | 
 | 75 | 	mov		TLB_SFSR, %g4 | 
 | 76 | 	ldxa		[%g4] ASI_DMMU, %g5 | 
 | 77 | 	stxa		%g0, [%g4] ASI_DMMU	! Clear FaultValid bit | 
 | 78 | 	membar		#Sync | 
 | 79 | 	mov		DMMU_SFAR, %g4 | 
 | 80 | 	ldxa		[%g4] ASI_DMMU, %g4 | 
 | 81 | 	ba,pt		%xcc, etrap | 
 | 82 | 109:	 or		%g7, %lo(109b), %g7 | 
 | 83 | 	mov		%l4, %o1 | 
 | 84 | 	mov		%l5, %o2 | 
 | 85 | 	call		handle_stdfmna | 
 | 86 | 	 add		%sp, PTREGS_OFF, %o0 | 
 | 87 | 	ba,pt		%xcc, rtrap | 
 | 88 | 	 nop | 
 | 89 | 	.size		do_stdfmna,.-do_stdfmna | 
 | 90 |  | 
 | 91 | 	.type		breakpoint_trap,#function | 
 | 92 | breakpoint_trap: | 
 | 93 | 	call		sparc_breakpoint | 
 | 94 | 	 add		%sp, PTREGS_OFF, %o0 | 
 | 95 | 	ba,pt		%xcc, rtrap | 
 | 96 | 	 nop | 
 | 97 | 	.size		breakpoint_trap,.-breakpoint_trap |