summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2005-11-30 02:21:11 +0000
committerTill Straumann <strauman@slac.stanford.edu>2005-11-30 02:21:11 +0000
commit5b8eb3f08d8d8542d05695f977150c0da3d7fb14 (patch)
tree2187d9bda26bef8cca67e6b6af2db3827977749a /c
parent2005-11-29 Till Straumann <strauman@slac.stanford.edu> (diff)
downloadrtems-5b8eb3f08d8d8542d05695f977150c0da3d7fb14.tar.bz2
2005-11-29 Till Straumann <strauman@slac.stanford.edu>
* shared/irq/irq_asm.S, shared/vectors/vectors.S: Clear CR[6] before invoking high-level handler to make sure no varargs fn callee assumes there are FP arguments.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/ChangeLog5
-rw-r--r--c/src/lib/libbsp/powerpc/shared/irq/irq_asm.S2
-rw-r--r--c/src/lib/libbsp/powerpc/shared/vectors/vectors.S2
3 files changed, 9 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog
index 9b1b30bc95..d1351984fa 100644
--- a/c/src/lib/libbsp/powerpc/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/ChangeLog
@@ -1,4 +1,9 @@
2005-11-29 Till Straumann <strauman@slac.stanford.edu>
+ * shared/irq/irq_asm.S, shared/vectors/vectors.S: Clear
+ CR[6] before invoking high-level handler to make sure no
+ varargs fn callee assumes there are FP arguments.
+
+2005-11-29 Till Straumann <strauman@slac.stanford.edu>
* shared/irq/irq.c: Fixed incorrect removal of first shared
interrupt in chain.
diff --git a/c/src/lib/libbsp/powerpc/shared/irq/irq_asm.S b/c/src/lib/libbsp/powerpc/shared/irq/irq_asm.S
index bc5194bd1f..be3f92c1f5 100644
--- a/c/src/lib/libbsp/powerpc/shared/irq/irq_asm.S
+++ b/c/src/lib/libbsp/powerpc/shared/irq/irq_asm.S
@@ -192,6 +192,8 @@ nested:
* in case...
*/
addi r3, r14, 0x8
+ /* clear CR[6] to make sure no varargs fn callee assumes there are FP args passed */
+ crxor 6,6,6
bl C_dispatch_irq_handler /* C_dispatch_irq_handler(cpu_interrupt_frame* r3, vector r4) */
/*
* start decrementing nesting level. Note : do not test result against 0
diff --git a/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S b/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S
index 6eee3f7136..8dba3a3926 100644
--- a/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S
+++ b/c/src/lib/libbsp/powerpc/shared/vectors/vectors.S
@@ -112,6 +112,8 @@ SYM (push_normalized_frame):
* store the execption frame address in r3 (first param)
*/
addi r3, r1, 0x8
+ /* clear CR[6] to make sure no varargs fn callee assumes there are FP args passed */
+ crxor 6,6,6
/*
* globalExceptHdl(r3)
*/