summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2009-12-02 01:51:22 +0000
committerTill Straumann <strauman@slac.stanford.edu>2009-12-02 01:51:22 +0000
commitaf0d5860d6ab21698cb0f65a9435e6306222ae52 (patch)
tree9113765a9c4711767b1aacdf8248d35492067380 /c
parent2009-12-01 Till Straumann <strauman@slac.stanford.edu> (diff)
downloadrtems-af0d5860d6ab21698cb0f65a9435e6306222ae52.tar.bz2
2009-12-01 Till Straumann <strauman@slac.stanford.edu>
* shared/start/start.S: Added AltiVec support (initializing MSR[VE], VSCR and VRSAVE).
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/ChangeLog5
-rw-r--r--c/src/lib/libbsp/powerpc/shared/start/start.S19
2 files changed, 24 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog
index 3e75122b9e..ca918014bc 100644
--- a/c/src/lib/libbsp/powerpc/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/ChangeLog
@@ -1,5 +1,10 @@
2009-12-01 Till Straumann <strauman@slac.stanford.edu>
+ * shared/start/start.S: Added AltiVec support (initializing
+ MSR[VE], VSCR and VRSAVE).
+
+2009-12-01 Till Straumann <strauman@slac.stanford.edu>
+
* shared/vme/vme_universe.c: moved extern declaration
out of local scope.
diff --git a/c/src/lib/libbsp/powerpc/shared/start/start.S b/c/src/lib/libbsp/powerpc/shared/start/start.S
index 6c7a35bf4b..fadfd13ed1 100644
--- a/c/src/lib/libbsp/powerpc/shared/start/start.S
+++ b/c/src/lib/libbsp/powerpc/shared/start/start.S
@@ -7,7 +7,11 @@
* found in found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
+<<<<<<< start.S
* $Id$
+=======
+ * $Id$
+>>>>>>> 1.25
*
*/
@@ -60,6 +64,21 @@ __rtems_entry_point:
mr r29,r5
mr r28,r6
mr r27,r7
+
+#ifdef __ALTIVEC__
+ /* enable altivec; gcc may use it! */
+ mfmsr r0
+ oris r0, r0, (1<<(31-16-6))
+ mtmsr r0
+ /*
+ * set vscr and vrsave to known values
+ */
+ li r0, 0
+ mtvrsave r0
+ vxor 0,0,0
+ mtvscr 0
+#endif
+
/*
* Make sure we have nothing in BATS and TLB
*/