summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2005-11-03 22:13:43 +0000
committerTill Straumann <strauman@slac.stanford.edu>2005-11-03 22:13:43 +0000
commitb6e3ee54231a23b1418b316ea44237e349f4a370 (patch)
tree4e33a73c90ba82d36a8e834dcfdc1a1ba6a4f5a1
parent2005-11-03 straumanatslacdotstanforddotedu (diff)
downloadrtems-b6e3ee54231a23b1418b316ea44237e349f4a370.tar.bz2
2005-11-03 straumanatslacdotstanforddotedu
* shared/vectors/vectors.S: when returning from an exception, reload stack pointer with value from exception frame instead of adding a fixed value. -- maybe the exception handler modified the frame with good reason (e.g., gdb pushed a dummy frame).
-rw-r--r--c/src/lib/libbsp/powerpc/shared/vectors/vectors.S6
1 files changed, 5 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S b/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S
index 8d5c76521d..6eee3f7136 100644
--- a/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S
+++ b/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S
@@ -152,6 +152,10 @@ SYM (push_normalized_frame):
mtsrr0 r3
lwz r3, GPR3_OFFSET(r1)
- addi r1,r1, EXCEPTION_FRAME_END
+ /* DONT add back the frame size but reload the value
+ * stored in the frame -- maybe the exception handler
+ * changed it with good reason (e.g., gdb pushed a dummy frame)
+ */
+ lwz r1, GPR1_OFFSET(r1)
SYNC
rfi