summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2006-06-19 20:14:05 +0000
committerTill Straumann <strauman@slac.stanford.edu>2006-06-19 20:14:05 +0000
commit599e719abe5a29783432cac0a3de1d57d09670f4 (patch)
tree811be9bd8f34114552586a1feb6f00f5262a91cc /c
parent fixed compiler warnings (bspIo.h inclusion, cast of number (diff)
downloadrtems-599e719abe5a29783432cac0a3de1d57d09670f4.tar.bz2
filter exception vector for altivec and remap 0xf20 to
assigned vector number alias.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/ChangeLog5
-rw-r--r--c/src/lib/libbsp/powerpc/shared/vectors/vectors.S12
2 files changed, 15 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog
index d5966db056..bdda51e002 100644
--- a/c/src/lib/libbsp/powerpc/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/ChangeLog
@@ -1,5 +1,10 @@
2006-06-19 Till Straumann <strauman@slac.stanford.edu>
+ * shared/vectors/vectors.S: filter exception vector for
+ altivec and remap 0xf20 to assigned vector number alias.
+
+2006-06-19 Till Straumann <strauman@slac.stanford.edu>
+
* shared/startup/bspstart.c: fixed compiler warnings
(bspIo.h inclusion, cast of number constants to pointers).
Enable L1 cache on mvme2100.
diff --git a/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S b/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S
index 751657a715..97d7c6eea6 100644
--- a/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S
+++ b/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S
@@ -73,11 +73,19 @@ SYM (push_normalized_frame):
* (256 * vector number) + few instructions
*/
mflr r3
+ /* mask upper bits in case vectors are in the high area (psim) */
+ rlwinm r3, r3, 32-5, 20, 31
+ /*
+ * Remap altivec unavaliable (0xf20) to its vector number...
+ */
+ cmplwi r3,(ASM_VEC_VECTOR_OFFSET>>5)
+ bne 1f
+ li r3,ASM_VEC_VECTOR<<3
+1:
/*
* r3 = r3 >> 8 = vector #
- * mask upper bits in case vectors are in the high area (psim)
*/
- rlwinm r3,r3,32-8,20,31
+ srwi r3,r3,3
stw r3, EXCEPTION_NUMBER_OFFSET(r1)
stw r0, GPR0_OFFSET(r1)
/* R2 should never change (EABI: pointer to .sdata2) - we