patch-2.4.0-test3 linux/arch/sparc64/mm/ultra.S

Next file: linux/arch/sparc64/prom/misc.c
Previous file: linux/arch/sparc64/mm/modutil.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test2/linux/arch/sparc64/mm/ultra.S linux/arch/sparc64/mm/ultra.S
@@ -432,4 +432,24 @@
 	 nop
 	flush		%g6
 	retry
+
+	.globl		xcall_call_function
+xcall_call_function:
+	mov		TLB_TAG_ACCESS, %g5		! wheee...
+	stxa		%g1, [%g5] ASI_IMMU		! save call_data here for a bit
+	membar		#Sync
+	rdpr		%pstate, %g2
+	wrpr		%g2, PSTATE_IG | PSTATE_AG, %pstate
+	mov		TLB_TAG_ACCESS, %g2
+	ldxa		[%g2] ASI_IMMU, %g5
+	rdpr		%pil, %g2
+	wrpr		%g0, 15, %pil
+	sethi		%hi(109f), %g7
+	b,pt		%xcc, etrap_irq
+109:	 or		%g7, %lo(109b), %g7
+	call		smp_call_function_client
+	 mov		%l5, %o0
+	b,pt		%xcc, rtrap
+	 clr		%l6
+
 #endif /* CONFIG_SMP */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)