Hello,
There is a problem in Fusion (PPC) that enabling ALTIVEC triggers. The problem is that fusion uses _switch from Linux, which expects to have "current" task (r2) in valid state. If I'm not horribly mistaken --- also an option, I know next to nothing about Fusion --- "current" is not valid when in other domains than root(=Linux). The attached patch should fix the problem.

Regards,
 Heikki Lindholm
diff -Nru fusion.orig/include/nucleus/asm-ppc/system.h 
fusion/include/nucleus/asm-ppc/system.h
--- fusion.orig/include/nucleus/asm-ppc/system.h        2005-03-17 
09:46:13.000000000 +0200
+++ fusion/include/nucleus/asm-ppc/system.h     2005-03-20 23:26:56.560521173 
+0200
@@ -433,6 +433,9 @@
            next->thread.regs->msr |= MSR_SPE;
 #endif /* CONFIG_SPE */
 
+       /* _switch expects a valid "current" (r2) for storing
+        * ALTIVEC and SPE state. */
+       current = prev;
         _switch(&prev->thread, &next->thread);
 
        barrier();

Reply via email to