Thread (106 messages) 106 messages, 10 authors, 2008-06-26

Re: [PATCH 5/9] powerpc: Introduce VSX thread_struct and CONFIG_VSX

From: Kumar Gala <hidden>
Date: 2008-06-20 06:44:49

quoted hunk ↗ jump to hunk
Index: linux-2.6-ozlabs/include/asm-powerpc/processor.h
===================================================================
--- linux-2.6-ozlabs.orig/include/asm-powerpc/processor.h
+++ linux-2.6-ozlabs/include/asm-powerpc/processor.h
@@ -78,6 +78,7 @@ extern long kernel_thread(int (*fn)(void
/* Lazy FPU handling on uni-processor */
extern struct task_struct *last_task_used_math;
extern struct task_struct *last_task_used_altivec;
+extern struct task_struct *last_task_used_vsx;
extern struct task_struct *last_task_used_spe;

#ifdef CONFIG_PPC32
@@ -136,8 +137,13 @@ typedef struct {
	unsigned long seg;
} mm_segment_t;

+#ifdef CONFIG_VSX
+#define TS_FPR(i) fpvsr[i].fpr.fp
+#define TS_FPRSTART fpvsr
+#else
#define TS_FPR(i) fpr[i]
#define TS_FPRSTART fpr
+#endif

struct thread_struct {
	unsigned long	ksp;		/* Kernel stack pointer */
@@ -155,8 +161,19 @@ struct thread_struct {
	unsigned long	dbcr0;		/* debug control register values */
	unsigned long	dbcr1;
#endif
+#ifdef CONFIG_VSX
+	/* First 32 VSX registers (overlap with fpr[32]) */
+	union {
+		struct {
+			double fp;
s/fp/fpr
+			double vsrlow;
+		} fpr;
+		vector128	vsr;
+	} fpvsr[32];
+#else
	double		fpr[32];	/* Complete floating point set */
-	struct {			/* fpr ... fpscr must be contiguous */
+#endif
+	struct {

		unsigned int pad;
		unsigned int val;	/* Floating point status */
So if I search correctly I count 2 uses of .vsr.  Seems like we could  
easily make those two cases use .fp and drop the union.

- k
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help