guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 243/437: IA64: Correct code to save/restore r2 used as l


From: Andy Wingo
Subject: [Guile-commits] 243/437: IA64: Correct code to save/restore r2 used as lightning JIT_FP.
Date: Mon, 2 Jul 2018 05:14:29 -0400 (EDT)

wingo pushed a commit to branch lightning
in repository guile.

commit 183ed917565a04783e4ca0c221f21b03423bd47c
Author: pcpa <address@hidden>
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 <address@hidden>
+
+       * lib/jit_ia64-cpu.c: Correct incorrect logic when restoring
+       the value of the "r2" callee save register.
+
 2013-08-29 Paulo Andrade <address@hidden>
 
        * 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();
 }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]