All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-core] [PATCH] merge powerpc fpu.S and fpu_64.S
@ 2006-01-13 10:57 Heikki Lindholm
  2006-01-13 11:06 ` Philippe Gerum
  2006-01-31 11:45 ` Philippe Gerum
  0 siblings, 2 replies; 3+ messages in thread
From: Heikki Lindholm @ 2006-01-13 10:57 UTC (permalink / raw)
  To: xenomai

[-- Attachment #1: Type: text/plain, Size: 181 bytes --]

Currently the two powerpc fpu*.S assembly sections are so similar that 
there's really no need for two of them. Merge them into a common fpu.S. 
Tested on a G5.

-- Heikki Lindholm

[-- Attachment #2: xenomai-060113-powerpc-fpumerge.patch --]
[-- Type: text/plain, Size: 4786 bytes --]

diff -Nru xenomai/ksrc/arch/powerpc/fpu.S xenomai-devel/ksrc/arch/powerpc/fpu.S
--- xenomai/ksrc/arch/powerpc/fpu.S	2005-11-18 20:55:24.000000000 +0200
+++ xenomai-devel/ksrc/arch/powerpc/fpu.S	2006-01-13 12:35:49.000000000 +0200
@@ -19,9 +19,24 @@
 
 #include <linux/config.h> 
 #include <asm/processor.h>
-#include <asm/cputable.h>
 #include <asm/ppc_asm.h>
 
+#ifdef CONFIG_PPC601_SYNC_FIX
+#define SYNC				\
+BEGIN_FTR_SECTION			\
+	sync;				\
+	isync;				\
+END_FTR_SECTION_IFSET(CPU_FTR_601)
+#else /* !CONFIG_PPC601_SYNC_FIX */
+#define	SYNC
+#endif /* CONFIG_PPC601_SYNC_FIX */
+
+#if defined(CONFIG_PPC64) || defined(CONFIG_PPC64BRIDGE)
+#define MTMSRD(r)	.long	(0x7c000164 + ((r) << 21))	/* mtmsrd */
+#else
+#define MTMSRD(r)	mtmsr	r
+#endif /* CONFIG_PPC64 || CONFIG_PPC64BRIDGE */
+
 #define RTHAL_FPSAVE(n, base)	stfd n,8*(n)(base)
 #define RTHAL_FPSAVE2(n, base)	RTHAL_FPSAVE(n, base); RTHAL_FPSAVE(n+1, base)
 #define RTHAL_FPSAVE4(n, base)	RTHAL_FPSAVE2(n, base); RTHAL_FPSAVE2(n+2, base)
diff -Nru xenomai/ksrc/arch/powerpc/fpu_64.S xenomai-devel/ksrc/arch/powerpc/fpu_64.S
--- xenomai/ksrc/arch/powerpc/fpu_64.S	2005-11-18 20:55:24.000000000 +0200
+++ xenomai-devel/ksrc/arch/powerpc/fpu_64.S	1970-01-01 02:00:00.000000000 +0200
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2001,2002,2003,2004 Philippe Gerum.
- *
- * 64-bit PowerPC adoption
- *   copyright (C) 2005 Taneli V������h������kangas and Heikki Lindholm
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, Inc., 675 Mass Ave, Cambridge MA 02139,
- * USA; either version 2 of the License, or (at your option) any later
- * version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <linux/config.h> 
-#include <asm/processor.h>
-#include <asm/ppc_asm.h>
-
-#define RTHAL_FPSAVE(n, base)	stfd n,8*(n)(base)
-#define RTHAL_FPSAVE2(n, base)	RTHAL_FPSAVE(n, base); RTHAL_FPSAVE(n+1, base)
-#define RTHAL_FPSAVE4(n, base)	RTHAL_FPSAVE2(n, base); RTHAL_FPSAVE2(n+2, base)
-#define RTHAL_FPSAVE8(n, base)	RTHAL_FPSAVE4(n, base); RTHAL_FPSAVE4(n+4, base)
-#define RTHAL_FPSAVE16(n, base)	RTHAL_FPSAVE8(n, base); RTHAL_FPSAVE8(n+8, base)
-#define RTHAL_FPSAVE32(n, base)	RTHAL_FPSAVE16(n, base); RTHAL_FPSAVE16(n+16, base)
-
-/* r3 = &tcb->fpuenv */
-_GLOBAL(rthal_save_fpu)
-	mfmsr	r5
-	ori	r5,r5,MSR_FP		/* Re-enable use of FPU. */
-	mtmsrd	r5			/* Enable use of fpu. */
-	isync
-	RTHAL_FPSAVE32(0,r3)
-	mffs	fr0
-	stfd	fr0,8*32(r3)
-	blr
-
-#define RTHAL_FPLOAD(n, base)	lfd n,8*(n)(base)
-#define RTHAL_FPLOAD2(n, base)	RTHAL_FPLOAD(n, base); RTHAL_FPLOAD(n+1, base)
-#define RTHAL_FPLOAD4(n, base)	RTHAL_FPLOAD2(n, base); RTHAL_FPLOAD2(n+2, base)
-#define RTHAL_FPLOAD8(n, base)	RTHAL_FPLOAD4(n, base); RTHAL_FPLOAD4(n+4, base)
-#define RTHAL_FPLOAD16(n, base)	RTHAL_FPLOAD8(n, base); RTHAL_FPLOAD8(n+8, base)
-#define RTHAL_FPLOAD32(n, base)	RTHAL_FPLOAD16(n, base); RTHAL_FPLOAD16(n+16, base)
-
-/* r3 = &tcb->fpuenv */
-_GLOBAL(rthal_init_fpu)
-	mfmsr	r5
-	ori	r5,r5,MSR_FP|MSR_FE1	/* RT kernel threads always operate in */
-	li	r4,MSR_FE0		/* imprecise non-recoverable exception mode. */
-	andc	r5,r5,r4
-	mtmsrd	r5
-
-	/* Fallback wanted. */
-	
-/* r3 = &tcb->fpuenv */
-_GLOBAL(rthal_restore_fpu)
-	mfmsr	r5
-	ori	r5,r5,MSR_FP		/* Re-enable use of FPU. */
-	mtmsrd	r5			/* Enable use of fpu. */
-	isync
-	lfd	fr0,8*32(r3)
-	mtfsf	0xff,0
-	RTHAL_FPLOAD32(0,r3)
-	blr
diff -Nru xenomai/ksrc/arch/powerpc/Makefile xenomai-devel/ksrc/arch/powerpc/Makefile
--- xenomai/ksrc/arch/powerpc/Makefile	2006-01-12 15:25:59.000000000 +0200
+++ xenomai-devel/ksrc/arch/powerpc/Makefile	2006-01-13 12:23:00.000000000 +0200
@@ -5,13 +5,12 @@
 obj-$(CONFIG_XENOMAI) += xeno_hal.o
 
 xeno_hal-y := hal.o
+xeno_hal-$(CONFIG_XENO_HW_FPU) += fpu.o
 
 ifeq ($(CONFIG_PPC64),y)
 xeno_hal-$(CONFIG_PPC64) += switch_64.o
-xeno_hal-$(CONFIG_XENO_HW_FPU) += fpu_64.o
 else
 xeno_hal-$(CONFIG_PPC) += switch.o
-xeno_hal-$(CONFIG_XENO_HW_FPU) += fpu.o
 endif
 
 else
@@ -23,13 +22,12 @@
 O_TARGET := built-in.o
 
 obj-y := hal.o
+obj-$(CONFIG_XENO_HW_FPU) += fpu.o
 
 ifeq ($(CONFIG_PPC64),y)
 obj-y += switch_64.o
-obj-$(CONFIG_XENO_HW_FPU) += fpu_64.o
 else
 obj-y += switch.o
-obj-$(CONFIG_XENO_HW_FPU) += fpu.o
 endif
 
 export-objs := hal.o

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-01-31 11:45 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-13 10:57 [Xenomai-core] [PATCH] merge powerpc fpu.S and fpu_64.S Heikki Lindholm
2006-01-13 11:06 ` Philippe Gerum
2006-01-31 11:45 ` Philippe Gerum

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.