patch-1.3.50 linux/arch/alpha/kernel/head.S

Next file: linux/arch/alpha/kernel/irq.c
Previous file: linux/arch/alpha/kernel/entry.S
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v1.3.49/linux/arch/alpha/kernel/head.S linux/arch/alpha/kernel/head.S
@@ -33,7 +33,7 @@
 	.ent	wrent
 wrent:
 	.long PAL_wrent
-	ret ($26)
+	ret	($26)
 	.end wrent
 
 	.align 3
@@ -41,7 +41,7 @@
 	.ent	wrkgp
 wrkgp:
 	.long PAL_wrkgp
-	ret ($26)
+	ret	($26)
 	.end wrkgp
 
 	.align 3
@@ -49,7 +49,7 @@
 	.ent	wrusp
 wrusp:
 	.long PAL_wrusp
-	ret ($26)
+	ret	($26)
 	.end wrusp
 
 	.align 3
@@ -57,7 +57,7 @@
 	.ent	rdusp
 rdusp:
 	.long PAL_rdusp
-	ret ($26)
+	ret	($26)
 	.end rdusp
 
 	.align 3
@@ -65,7 +65,7 @@
 	.ent	tbi
 tbi:
 	.long PAL_tbi
-	ret ($26)
+	ret	($26)
 	.end tbi
 
 	.align 3
@@ -73,7 +73,7 @@
 	.ent	imb
 imb:
 	.long PAL_imb
-	ret ($26)
+	ret	($26)
 	.end imb
 
 	.align 3
@@ -81,7 +81,7 @@
 	.ent	rdmces
 rdmces:
 	call_pal PAL_rdmces
-	ret ($26)
+	ret	($26)
 	.end rdmces
 
 	.align 3
@@ -89,5 +89,39 @@
 	.ent	wrmces
 wrmces:
 	call_pal PAL_wrmces
-	ret ($26)
+	ret	($26)
 	.end wrmces
+
+	#
+	# The following two functions don't need trapb/excb instructions
+	# around the mf_fpcr/mt_fpcr instructions because (a) the kernel
+	# never generates arithmetic faults and (b) call_pal instructions
+	# are implied trap barriers.
+	#
+	.align 3
+	.globl	rdfpcr
+	.ent	rdfpcr
+rdfpcr:
+	lda	$30,-0x10($30)
+	stt	$f0,0($30)
+	mf_fpcr	$f0
+	stt	$f0,8($30)
+	ldt	$f0,0($30)
+	ldq	$0,8($30)
+	lda	$30,0x10($30)
+	ret	($26)
+	.end	rdfpcr
+
+	.align 3
+	.globl	wrfpcr
+	.ent	wrfpcr
+wrfpcr:
+	lda	$30,-0x10($30)
+	stt	$f0,0($30)
+	stq	$16,8($30)
+	ldt	$f0,8($30)
+	mt_fpcr	$f0
+	ldt	$f0,0($30)
+	lda	$30,0x10($30)
+	ret	($26)
+	.end	wrfpcr

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov with Sam's (original) version
of this