summaryrefslogtreecommitdiffstats
path: root/c/src
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-12-22 14:13:03 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-12-22 14:13:03 +0000
commitb5919529dbe6e16124022f5e71616d2c64ce6a8b (patch)
tree23c2c480af88d964164790698b0313fbc874eb92 /c/src
parent2010-12-17 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-b5919529dbe6e16124022f5e71616d2c64ce6a8b.tar.bz2
2010-12-22 Sebastian Huber <sebastian.huber@embedded-brains.de>
* new-exceptions/bspsupport/ppc_exc.S: Comment. * new-exceptions/bspsupport/ppc_exc_address.c: Fixed address calculation for e200z1 core.
Diffstat (limited to 'c/src')
-rw-r--r--c/src/lib/libcpu/powerpc/ChangeLog6
-rw-r--r--c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc.S6
-rw-r--r--c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_address.c2
3 files changed, 13 insertions, 1 deletions
diff --git a/c/src/lib/libcpu/powerpc/ChangeLog b/c/src/lib/libcpu/powerpc/ChangeLog
index 05e71247e9..8e327d4022 100644
--- a/c/src/lib/libcpu/powerpc/ChangeLog
+++ b/c/src/lib/libcpu/powerpc/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-22 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * new-exceptions/bspsupport/ppc_exc.S: Comment.
+ * new-exceptions/bspsupport/ppc_exc_address.c: Fixed address
+ calculation for e200z1 core.
+
2010-11-30 Joel Sherrill <joel.sherrilL@OARcorp.com>
* mpc55xx/edma/edma.c: Use rtems_chain_first() and do not directly
diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc.S b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc.S
index d265c48723..dfc416d424 100644
--- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc.S
+++ b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc.S
@@ -74,6 +74,12 @@ ppc_exc_tgpr_clr_prolog_size = . - ppc_exc_tgpr_clr_prolog
/**
* @brief Use vector offsets with 16 byte boundaries.
*
+ * This prologue is intended for cores with IVPR/IVOR registers. The e200z1
+ * core has hard wired values for the IVOR, thus all values are calculated to
+ * match its constraints. The link register will point to the next prologue.
+ * This is all right for the vector number calculation due the IVOR offset
+ * values.
+ *
* @see ppc_exc_min_prolog_auto();
*/
.global ppc_exc_min_prolog_auto_packed
diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_address.c b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_address.c
index 8707a96c4a..001bd3fed0 100644
--- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_address.c
+++ b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_address.c
@@ -70,7 +70,7 @@ void *ppc_exc_vector_address(unsigned vector)
* XXX: this directly matches the vector offsets in a e200z1,
* which has hardwired IVORs (IVOR0=0,IVOR1=0x10,IVOR2=0x20...)
*/
- vector_offset >>= 4;
+ vector_offset = (vector - 1) << 4;
}
if (bsp_exceptions_in_RAM) {