| 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 |