Module Name:    src
Committed By:   matt
Date:           Fri Jan 22 08:37:08 UTC 2010

Modified Files:
        src/sys/arch/mips/mips [matt-nb5-mips64]: fp.S

Log Message:
In N32/N64, deal with the FP load/store as a 64bit quantity


To generate a diff of this commit:
cvs rdiff -u -r1.33.38.6 -r1.33.38.7 src/sys/arch/mips/mips/fp.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/mips/mips/fp.S
diff -u src/sys/arch/mips/mips/fp.S:1.33.38.6 src/sys/arch/mips/mips/fp.S:1.33.38.7
--- src/sys/arch/mips/mips/fp.S:1.33.38.6	Sat Sep  5 03:24:21 2009
+++ src/sys/arch/mips/mips/fp.S	Fri Jan 22 08:37:08 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: fp.S,v 1.33.38.6 2009/09/05 03:24:21 matt Exp $	*/
+/*	$NetBSD: fp.S,v 1.33.38.7 2010/01/22 08:37:08 matt Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -3218,8 +3218,14 @@
 	andi	ta3, ta3, FPX_REGEVENMASK	# Even regs only
 	PTR_ADDU ta0, ta3
 
+#if defined(__mips_n32) || defined(__mips_n64)
+	FPX_L	ta3, U_PCB_FPREGS+FRAME_FP0(ta0)
+	dsrl	ta0, ta3, 32
+	srl	ta3, ta3, 0
+#else
 	lw	ta3, U_PCB_FPREGS+FRAME_FP0(ta0)
 	lw	ta0, U_PCB_FPREGS+FRAME_FP0+SZFPREG(ta0)
+#endif
 
 	srl	ta1, ta0, 20			# get exponent
 	and	ta1, ta1, 0x7FF
@@ -3353,8 +3359,14 @@
 	andi	t3, t3, FPX_REGEVENMASK		# Even regs only
 	PTR_ADDU t0, t3
 
+#if defined(__mips_n32) || defined(__mips_n64)
+	FPX_L	t3, U_PCB_FPREGS+FRAME_FP0(t0)
+	dsrl	t0, t3, 32
+	srl	t3, t3, 0
+#else
 	lw	t3, U_PCB_FPREGS+FRAME_FP0(t0)
 	lw	t0, U_PCB_FPREGS+FRAME_FP0+SZFPREG(t0)
+#endif
 
 	srl	t1, t0, 20			# get exponent
 	and	t1, t1, 0x7FF
@@ -3695,8 +3707,14 @@
 	andi	t1, t1, FPX_REGEVENMASK			# Even regs only
 	PTR_ADDU t0, ta2, t1
 
+#if defined(__mips_n32) || defined(__mips_n64)
+	FPX_L	t3, U_PCB_FPREGS+FRAME_FP0(t0)
+	dsrl	t0, t3, 32
+	srl	t3, t3, 0
+#else
 	FPX_L	t3, U_PCB_FPREGS+FRAME_FP0(t0)
 	FPX_L	t0, U_PCB_FPREGS+FRAME_FP0+SZFPREG(t0)
+#endif
 
 	srl	t1, t0, 20			# get exponent
 	and	t1, t1, 0x7FF
@@ -3707,8 +3725,14 @@
 	andi	ta0, ta0, FPX_REGEVENMASK		# Even regs only
 	PTR_ADDU ta2, ta2, ta0
 
+#if defined(__mips_n32) || defined(__mips_n64)
+	FPX_L	ta3, U_PCB_FPREGS+FRAME_FP0(ta2)
+	dsrl	ta0, ta3, 32
+	srl	ta3, ta3, 0
+#else
 	lw	ta3, U_PCB_FPREGS+FRAME_FP0(ta2)
 	lw	ta0, U_PCB_FPREGS+FRAME_FP0+SZFPREG(ta2)
+#endif
 
 	srl	ta1, ta0, 20			# get exponent
 	and	ta1, ta1, 0x7FF
@@ -4048,8 +4072,14 @@
 
 	andi	t1, t1, FPX_REGEVENMASK
 	PTR_ADDU t2, t2, t1
+#if defined(__mips_n32) || defined(__mips_n64)
+	dsll	t0, t0, 32
+	or	t0, t0, t3
+	FPX_S	t0, U_PCB_FPREGS+FRAME_FP0(t2)
+#else
 	FPX_S	t3, U_PCB_FPREGS+FRAME_FP0(t2)
 	FPX_S	t0, U_PCB_FPREGS+FRAME_FP0+4(t2)
+#endif
 	j	ra
 #else
 	sll	t0, t0, 31			# set sign

Reply via email to