diff options
-rw-r--r-- | c/src/lib/libbsp/powerpc/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/vectors/vectors.S | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog index 9cfa146a43..9377bc62b5 100644 --- a/c/src/lib/libbsp/powerpc/ChangeLog +++ b/c/src/lib/libbsp/powerpc/ChangeLog @@ -1,3 +1,8 @@ +2006-01-05 Till Straumann <strauman@slac.stanford.edu> + * shared/vectors/vectors.S: mask high bits when calculating + the exception vector number to yield correct result even if + the vectors reside in the upper area (0xfff00000; psim). + 2005-12-02 Till Straumann <strauman@slac.stanford.edu> * shared/irq/irq_init.c, shared/openpic/openpic.h shared/openpic/openpic.c: The 8240's EPIC has a 'serial' diff --git a/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S b/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S index 96a4be5386..751657a715 100644 --- a/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S +++ b/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S @@ -74,9 +74,10 @@ SYM (push_normalized_frame): */ mflr r3 /* - * r3 = r3 >> 8 = vector + * r3 = r3 >> 8 = vector # + * mask upper bits in case vectors are in the high area (psim) */ - srwi r3,r3,8 + rlwinm r3,r3,32-8,20,31 stw r3, EXCEPTION_NUMBER_OFFSET(r1) stw r0, GPR0_OFFSET(r1) /* R2 should never change (EABI: pointer to .sdata2) - we |