diff options
-rw-r--r-- | c/src/lib/libcpu/powerpc/ChangeLog | 6 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc.S | 6 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_address.c | 2 |
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) { |