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-19 04:58:20

On Jun 18, 2008, at 11:35 PM, Michael Neuling wrote:
In message <5AEB0769-1394-4924-803D- 
C40CAF685519@kernel.crashing.org> you wrote
:
quoted
quoted

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.fp[i].fpr
+#define TS_FPRSTART fpvsr.fp
+#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 fpr;
+			double vsrlow;
+		} fp[32];
+		vector128	vsr[32];
how about:

	union {
		struct {
			double fp;
			double vsrlow;
		} fpr;
		vector128 v;
	} fpvsr[32];
quoted
quoted
+	} fpvsr __attribute__((aligned(16)));
Do we really need a union here?  what would happen if you just  
changed
the type of fpr[32] from double to vector if #CONFIG_VSX?

I really dont like the union and think we can just make the storage
look opaque which is the key.  I doubt we every really care about
using fpr[] as a double in the kernel.
I did something similar to this for the first cut of this patch, but  
it
made the code accessing this structure much less readable.
really, what code is that?

- 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