wingo pushed a commit to branch lightning
in repository guile.
commit 183ed917565a04783e4ca0c221f21b03423bd47c
Author: pcpa <[email protected]>
Date: Tue Sep 10 21:17:44 2013 -0300
IA64: Correct code to save/restore r2 used as lightning JIT_FP.
* lib/jit_ia64-cpu.c: Correct incorrect logic when restoring
the value of the "r2" callee save register.
---
ChangeLog | 5 +++++
lib/jit_ia64-cpu.c | 7 ++++---
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index f16d30c..2065308 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-09-10 Paulo Andrade <[email protected]>
+
+ * lib/jit_ia64-cpu.c: Correct incorrect logic when restoring
+ the value of the "r2" callee save register.
+
2013-08-29 Paulo Andrade <[email protected]>
* lib/jit_arm-cpu.c, lib/jit_arm.c: Correct wrong test and update
diff --git a/lib/jit_ia64-cpu.c b/lib/jit_ia64-cpu.c
index 8bdc253..abc9699 100644
--- a/lib/jit_ia64-cpu.c
+++ b/lib/jit_ia64-cpu.c
@@ -5126,7 +5126,7 @@ _prolog(jit_state_t *_jit, jit_node_t *node)
break;
}
_jitc->breg = rn(reg) + 1;
- _jitc->rout = _jitc->breg + 4;
+ _jitc->rout = _jitc->breg + 5;
ruse = _jitc->rout - GR_32;
/* How many out argument registers required? */
@@ -5147,6 +5147,7 @@ _prolog(jit_state_t *_jit, jit_node_t *node)
MOV(_jitc->breg + 3, GR_1);
/* lightning specific, use r4 as frame pointer */
+ MOV(_jitc->breg + 4, GR_4);
addi(GR_4, GR_12, -(stack_framesize + params_offset));
/* adjust stack pointer */
@@ -5207,8 +5208,8 @@ _epilog(jit_state_t *_jit, jit_node_t *node)
MOV_I_ar_rn(AR_PFS, _jitc->breg + 1);
MOV_br_rn(BR_0, _jitc->breg);
MOV(GR_12, _jitc->breg + 2);
- /* Restore r4 with known offset from saved sp */
- addi(GR_4, GR_12, stack_framesize + params_offset);
+ /* Restore lightning specific r4 as frame pointer */
+ MOV(GR_4, _jitc->breg + 4);
BR_RET(BR_0);
flush();
}